197 lines
5.1 KiB
Markdown
197 lines
5.1 KiB
Markdown
# Debug Guide: Kunde Projekt Oprettelse
|
|
|
|
## 🔧 Ændringer Implementeret
|
|
|
|
### Problem
|
|
Fejl ved oprettelse af kunde projekt - "⚠️ Fejl ved oprettelse af kunde projekt"
|
|
|
|
### Root Cause Analysis
|
|
Der var **field name mismatch** mellem frontend og backend:
|
|
- Frontend sender: `projectAddress`
|
|
- Backend forventede: `customerAddress`
|
|
|
|
### Løsning Implementeret
|
|
|
|
#### 1. Backend Service Fix
|
|
**File**: `backend/src/services/customerProjectService.js`
|
|
|
|
```javascript
|
|
// Nu accepterer begge field navne:
|
|
const {
|
|
projectName,
|
|
customerName,
|
|
customerEmail,
|
|
customerPhone,
|
|
customerAddress,
|
|
projectAddress, // Frontend sender denne
|
|
projectDescription
|
|
} = projectData;
|
|
|
|
// Bruger projectAddress hvis customerAddress mangler
|
|
const address = customerAddress || projectAddress;
|
|
```
|
|
|
|
#### 2. Omfattende Logging
|
|
|
|
**Frontend** (`frontend/src/components/ProjectCreation.js`):
|
|
```javascript
|
|
✅ Logger formData før send
|
|
✅ Logger API URL
|
|
✅ Logger response status og headers
|
|
✅ Tjekker Content-Type før JSON parsing
|
|
✅ Logger success/error responses
|
|
✅ Viser detaljeret fejlbesked
|
|
```
|
|
|
|
**Backend Route** (`backend/src/routes/customerProjects.js`):
|
|
```javascript
|
|
✅ Logger incoming request data
|
|
✅ Logger validation status
|
|
✅ Logger success/error med detaljer
|
|
✅ Returnerer error.message i response
|
|
```
|
|
|
|
**Backend Service** (`backend/src/services/customerProjectService.js`):
|
|
```javascript
|
|
✅ Logger data ved service start
|
|
✅ Logger prepared values før DB insert
|
|
✅ Logger inserted ID ved success
|
|
✅ Logger detailed error ved fejl
|
|
```
|
|
|
|
## 🐛 Hvordan Man Debugger
|
|
|
|
### 1. Åbn Browser Console (F12)
|
|
Gå til Console tab
|
|
|
|
### 2. Prøv at Oprette Projekt
|
|
1. Vælg kunde: "Alexander Warme"
|
|
2. Indtast projekt navn: "Test Projekt"
|
|
3. Klik "Opret Projekt"
|
|
|
|
### 3. Tjek Console Logs
|
|
|
|
**Success scenario:**
|
|
```
|
|
📤 Sending project creation request: {
|
|
projectName: "Test Projekt",
|
|
customerName: "Alexander Warme",
|
|
customerEmail: "alexander@warme.dk",
|
|
customerPhone: "...",
|
|
projectAddress: "...",
|
|
projectDescription: ""
|
|
}
|
|
🌐 API URL: http://localhost:3010/api/customer-projects/projects
|
|
📡 Response status: 200
|
|
📦 Response data: { success: true, project: {...} }
|
|
✅ Project created successfully: {...}
|
|
```
|
|
|
|
**Error scenario:**
|
|
```
|
|
📤 Sending project creation request: {...}
|
|
📡 Response status: 500
|
|
❌ Server returned error: Fejl ved oprettelse af kunde projekt
|
|
```
|
|
|
|
### 4. Tjek Backend Logs
|
|
|
|
```bash
|
|
pm2 logs tilbudgivern-unified --lines 50
|
|
```
|
|
|
|
**Success scenario:**
|
|
```
|
|
📥 Create project request received: {
|
|
projectName: 'Test Projekt',
|
|
customerName: 'Alexander Warme',
|
|
...
|
|
}
|
|
✅ Validation passed, creating project...
|
|
🏗️ Creating project in service with data: {...}
|
|
📝 Prepared values for insertion: {...}
|
|
✅ Project inserted with ID: 123
|
|
✅ Project created successfully: {...}
|
|
```
|
|
|
|
**Error scenario:**
|
|
```
|
|
📥 Create project request received: {...}
|
|
⚠️ Validation failed: Missing required fields
|
|
eller
|
|
❌ Error in createProject service: [Error details]
|
|
```
|
|
|
|
## 🔍 Mulige Fejl og Løsninger
|
|
|
|
### 1. "Validation failed: Missing required fields"
|
|
**Problem**: projectName eller customerName mangler
|
|
**Løsning**: Tjek at formData indeholder begge felter
|
|
|
|
### 2. "Database error: ER_NO_SUCH_TABLE"
|
|
**Problem**: `customer_projects` tabel findes ikke
|
|
**Løsning**:
|
|
```bash
|
|
mysql -u tilbudgivern_service -p tilbudgivern
|
|
SHOW TABLES LIKE 'customer_projects';
|
|
```
|
|
|
|
### 3. "Database error: ER_DUP_FIELDNAME"
|
|
**Problem**: Duplikeret kolonne navn
|
|
**Løsning**: Tjek database schema matcher query
|
|
|
|
### 4. "Response is not JSON"
|
|
**Problem**: Server crashede eller returnerer HTML
|
|
**Løsning**: Tjek backend logs for crash reason
|
|
|
|
### 5. NULL constraint violation
|
|
**Problem**: Required field sendt som null
|
|
**Løsning**: Service nu sender `null` for optional fields
|
|
|
|
## 📊 Database Schema
|
|
|
|
```sql
|
|
CREATE TABLE customer_projects (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
project_name VARCHAR(255) NOT NULL,
|
|
customer_name VARCHAR(255) NOT NULL,
|
|
customer_email VARCHAR(255),
|
|
customer_phone VARCHAR(50),
|
|
customer_address TEXT,
|
|
project_description TEXT,
|
|
project_status VARCHAR(50) DEFAULT 'draft',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
```
|
|
|
|
## ✅ Test Checklist
|
|
|
|
- [ ] Browser console åben (F12)
|
|
- [ ] Backend logs kører: `pm2 logs tilbudgivern-unified`
|
|
- [ ] Vælg kunde via Customer Search
|
|
- [ ] Indtast projekt navn (min 3 tegn)
|
|
- [ ] Tjek at customerName er auto-udfyldt
|
|
- [ ] Klik "Opret Projekt"
|
|
- [ ] Tjek console for success/error
|
|
- [ ] Tjek backend logs for details
|
|
- [ ] Verificer projekt blev oprettet (hvis success)
|
|
|
|
## 🎯 Næste Skridt
|
|
|
|
1. **Åbn applikationen** i browser
|
|
2. **Åbn console** (F12)
|
|
3. **Prøv at oprette projekt** med data:
|
|
- Projekt navn: "Debug Test Projekt"
|
|
- Kunde: Vælg "Alexander Warme" fra søgning
|
|
4. **Del logs** hvis der stadig er fejl:
|
|
- Console logs fra browser
|
|
- Backend logs fra `pm2 logs`
|
|
|
|
## 💡 Tips
|
|
|
|
- Serveren er genstartet med nye ændringer
|
|
- Frontend er rebuilt med debug logging
|
|
- Alle logs er nu meget mere detaljerede
|
|
- Check både browser console OG backend logs
|