Files
tilbudgivern/docs/archived/PROJECT_CREATION_DEBUG.md
alexpolo1 4a372d2e28 clean up
2025-10-30 18:28:58 +00:00

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