## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The company needs to decide how many hand-bags and backpacks to produce in order to maximize profit, given the constraints on sewing and painting time.

Let's define the variables:

* `x`: number of hand-bags to produce
* `y`: number of backpacks to produce

The objective function is to maximize profit:

* Profit per hand-bag: $75
* Profit per backpack: $60
* Total profit: `75x + 60y`

The constraints are:

* Sewing time: `6x + 7y <= 400` (400 minutes available)
* Painting time: `3x + 5y <= 600` (600 minutes available)
* Non-negativity: `x >= 0`, `y >= 0` (cannot produce negative number of bags)

## Gurobi Code

```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define the variables
x = model.addVar(lb=0, name="hand-bags")
y = model.addVar(lb=0, name="backpacks")

# Define the objective function
model.setObjective(75*x + 60*y, gurobi.GRB.MAXIMIZE)

# Define the constraints
model.addConstr(6*x + 7*y <= 400, name="sewing_time")
model.addConstr(3*x + 5*y <= 600, name="painting_time")

# Optimize the model
model.optimize()

# Print the results
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Number of hand-bags: {x.varValue}")
    print(f"Number of backpacks: {y.varValue}")
    print(f"Maximum profit: ${model.objVal:.2f}")
else:
    print("No optimal solution found.")
```

This code defines the variables, objective function, and constraints, and then solves the model using Gurobi's optimization algorithm. If an optimal solution is found, it prints the number of hand-bags and backpacks to produce, as well as the maximum profit. If no optimal solution is found, it indicates that the problem is infeasible.