To solve the given optimization problem, we first need to convert the natural language description into a symbolic representation. This involves defining variables for the quantities of fridges and ovens to be repaired, formulating the objective function that represents the total earnings, and establishing constraints based on the available time for inspection and fixing.

Let's define:
- \(x_1\) as the number of fridges to be repaired,
- \(x_2\) as the number of ovens to be repaired.

The objective function aims to maximize the total earnings. Given that each fridge earns $100 and each oven earns $125, the objective function can be represented as:
\[ \text{Maximize: } 100x_1 + 125x_2 \]

The constraints are based on the available time for inspection and fixing:
- Each fridge takes 20 minutes for inspection, and each oven takes 30 minutes. The total inspection time available is 1000 minutes. Thus, the inspection time constraint is:
\[ 20x_1 + 30x_2 \leq 1000 \]
- Each fridge takes 30 minutes for fixing, and each oven takes 15 minutes. The total fixing time available is 800 minutes. Thus, the fixing time constraint is:
\[ 30x_1 + 15x_2 \leq 800 \]

Additionally, \(x_1\) and \(x_2\) must be non-negative since they represent quantities of items.

Therefore, the symbolic representation of the problem is:
```json
{
    'sym_variables': [('x1', 'number of fridges'), ('x2', 'number of ovens')],
    'objective_function': '100*x1 + 125*x2',
    'constraints': ['20*x1 + 30*x2 <= 1000', '30*x1 + 15*x2 <= 800', 'x1 >= 0', 'x2 >= 0']
}
```

Now, let's implement this problem using Gurobi in Python:

```python
from gurobipy import *

# Create a model
m = Model("Repairman_Problem")

# Define variables
x1 = m.addVar(lb=0, vtype=GRB.INTEGER, name="fridges")
x2 = m.addVar(lb=0, vtype=GRB.INTEGER, name="ovens")

# Set the objective function
m.setObjective(100*x1 + 125*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(20*x1 + 30*x2 <= 1000, "inspection_time")
m.addConstr(30*x1 + 15*x2 <= 800, "fixing_time")

# Optimize the model
m.optimize()

# Print the solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of fridges: {x1.x}")
    print(f"Number of ovens: {x2.x}")
    print(f"Total earnings: ${100*x1.x + 125*x2.x:.2f}")
else:
    print("No optimal solution found.")
```