From ceaa6039fa7b763976a7e45035f7a21a3a67d96d Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Jan 2026 08:46:36 +0000 Subject: [PATCH] docs: Update README with current architecture and tech stack - Update tech stack from PostgreSQL to MariaDB/MySQL - Update port from 3000/3001 to unified server port 4032 - Add Smart Packages system (15 carpenter packages) - Add 7 roof types documentation - Add Ordrestyring GraphQL integration info - Update project structure to reflect current state - Add comprehensive API endpoints documentation - Update docs/README.md with documentation index and architecture diagram --- README.md | 369 +++++++++++++++++++++++++++---------------------- docs/README.md | 311 ++++++++++++++++------------------------- 2 files changed, 324 insertions(+), 356 deletions(-) diff --git a/README.md b/README.md index 52f38e7..c37b79b 100644 --- a/README.md +++ b/README.md @@ -2,220 +2,261 @@ En AI-drevet tilbudsberegner for tømrerfaget, der hjælper med at generere detaljerede og professionelle tilbud baseret på projektbeskrivelser. -## 🚀 Funktioner +## Funktioner - **AI-genererede tilbud**: Bruger OpenAI GPT-4 til at generere detaljerede tilbud -- **Interaktiv feedback**: Mulighed for at justere tilbud baseret på feedback -- **Prisdatabase**: Indbygget database med erfaringspriser for tømrerarbejde -- **Responsivt design**: Fungerer på desktop og mobil -- **Audit trail**: Gemmer alle tilbud og feedback for analyse +- **Smart Pakker**: 15 forudkonfigurerede tømrerpakker til tagarbejde med auto-beregning +- **7 Tagtyper**: Sadeltag, Valmtag, Københavnertag, Fladtag, Pulttag, Tag med Kviste, Mansardtag +- **Ordrestyring Integration**: GraphQL integration til kunder, sager, tilbud og kalender +- **Materialeimport**: Bygma prisbog og Stark katalog import +- **PDF Generering**: Professionelle tilbuds-PDF'er via Puppeteer +- **Real-time Updates**: Socket.IO til live samarbejde +- **Struktureret Logging**: JSON logs med correlation IDs -## 🛠 Teknologi Stack +## Teknologi Stack -- **Frontend**: React med Material-UI -- **Backend**: Node.js med Express -- **Database**: PostgreSQL -- **AI**: OpenAI GPT-4 API -- **Containerization**: Docker +| Lag | Teknologi | +|-----|-----------| +| **Frontend** | React 18, Material-UI 5, Socket.IO Client | +| **Backend** | Node.js/Express (unified server) | +| **Database** | MariaDB/MySQL | +| **AI** | OpenAI GPT-4 API ($9/måned budget) | +| **Process Manager** | PM2 | +| **Test** | Playwright, Jest, Selenium | -## 📋 Forudsætninger +## Forudsætninger - Node.js 18+ -- Docker og Docker Compose +- MariaDB/MySQL database - OpenAI API nøgle -## 🏃‍♂️ Quick Start +## Quick Start -### 1. Klon projektet -\`\`\`bash -cd /home/alex/git/tilbudgivern -\`\`\` - -### 2. Installer afhængigheder -\`\`\`bash -# Root projekt +### 1. Installer afhængigheder +```bash npm install +cd backend && npm install +cd ../frontend && npm install +``` -# Backend -cd backend -npm install +### 2. Konfigurer environment +Opret `backend/.env`: +```env +# Database +DB_HOST=127.0.0.1 +DB_USER=tilbuduser +DB_PASSWORD=din-password +DB_NAME=tilbudgivern +DB_PORT=3306 -# Frontend -cd ../frontend -npm install -cd .. -\`\`\` +# AI +OPENAI_API_KEY=sk-din-openai-api-noegle -### 3. Start database -\`\`\`bash -docker-compose up -d -\`\`\` +# Server +PORT=4032 -### 4. Konfigurer environment -Rediger \`backend/.env\` og tilføj din OpenAI API nøgle: -\`\`\` -OPENAI_API_KEY=sk-your-actual-openai-api-key-here -\`\`\` +# Valgfri +ORDRESTYRING_API_TOKEN=din-ordrestyring-token +``` -### 5. Start applikationen -\`\`\`bash +### 3. Start applikationen + +**Development:** +```bash npm run dev -\`\`\` - -Dette starter både backend (port 3000) og frontend (React development). - -## ⚡ Deployment Scripts - -For hurtig udvikling er der lavet praktiske deployment scripts i roden: - -### Fuld Test & Deploy (`./test-build-deploy.sh`) -Kører komplet test, build og deployment med fejlhåndtering: -```bash -./test-build-deploy.sh ``` -Scriptet gør følgende: -- ✅ Tester backend syntax og database forbindelse -- 🏗️ Bygger frontend med fejltjek -- 🔄 Genstarter PM2 server -- 📊 Viser status og eventuelle fejl - -### Quick Deploy (`./quick-deploy.sh`) -Hurtig version til små ændringer: +**Production:** ```bash -./quick-deploy.sh +npm run build # Byg frontend +pm2 start ecosystem.config.js ``` -**Tip:** Brug altid disse scripts efter kode-ændringer - de sikrer at alt fungerer korrekt! +Applikationen kører på **http://localhost:4032** -## 🧪 Test Applikationen +## Kommandoer -### Uden OpenAI API nøgle (lokal test): -1. Åbn browser på http://localhost:3000 -2. Udfyld projektbeskrivelse, f.eks.: "Lægning af 25 m² klikgulv i stue og gang" -3. Vælg projekttype og areal -4. Klik "Generer tilbud" -5. Du vil få en fejl om OpenAI API nøgle - dette er forventet - -### Med gyldig OpenAI API nøgle: -1. Tilføj din rigtige OpenAI API nøgle i `backend/.env`: - ``` - OPENAI_API_KEY=sk-din-rigtige-api-noegle-her - ``` -2. Genstart serveren med `npm run dev` -3. Test tilbudsgenerering med rigtige AI-svar -4. Test feedback funktionen ved at justere tilbuddet - -### Test backend API direkte: +### Development ```bash -# Health check -curl http://localhost:3001/health - -# Se prisdata for gulv -curl http://localhost:3001/api/quotes/prices/gulv - -# Kør automatiske tests -cd backend && npm test +npm run dev # Start med hot reload +npm run build # Byg frontend til produktion ``` -## ✅ Status +### Production +```bash +pm2 restart tilbudgivern-unified # Genstart server +pm2 logs tilbudgivern-unified # Se logs +pm2 status # Check status +``` -Applikationen er **fuldt funktionel** og klar til brug: +### Test +```bash +npm run test:pw # Playwright E2E tests (produktion) +npm run test:pw:local # Playwright tests (lokal) +npm run test:pw:headed # Playwright med synlig browser +cd backend && npm test # Backend unit tests (Jest) +npm run test:selenium # Selenium UI tests +``` -- ✅ Backend server kører på port 3001 -- ✅ Frontend React app kører på port 3000 -- ✅ PostgreSQL database er forbundet og initialiseret -- ✅ Prisdatabase er populeret med tømrer-erfaringspriser -- ✅ API endpoints virker korrekt -- ✅ Frontend kommunikerer med backend -- ✅ Rate limiting og sikkerhed implementeret -- ✅ Error handling og logging funktionerer -- ✅ Database audit trail gemmer alle tilbud og feedback -- 🔑 **Kræver kun gyldig OpenAI API nøgle for AI-funktionalitet** +## Arkitektur -### Test Gennemført: -- Database initialisering ✅ -- API endpoints ✅ -- Frontend-backend kommunikation ✅ -- Formularer og validering ✅ -- Error handling ✅ -- Logging ✅ -- Rate limiting ✅ +### Unified Server Pattern +Applikationen bruger en unified server (`backend/unified-server.js`) der: +- Serverer React frontend fra `frontend/build/` +- Leverer alle API endpoints på port 4032 +- Håndterer WebSocket via Socket.IO -## 📁 Projektstruktur +### Backend Services (40+) +``` +backend/src/services/ +├── openaiService.js # GPT-4 tilbudsgenerering +├── smartPackageManagementService.js # Smart pakke håndtering +├── ordrestyringSyncService.js # Ordrestyring integration +├── roofGeometryService.js # Tagberegninger +├── pdfGenerationService.js # PDF generering +├── bygmaPrisbogImportService.js # Bygma import +├── starkImportService.js # Stark import +└── ... +``` -\`\`\` +### Frontend Components +``` +frontend/src/components/ +├── ProjectFlow.js # Projekt wizard +├── EnhancedGeometry.js # Tag geometri med SVG +├── SmartPackagesEnhanced.js # Smart pakke konfiguration +├── FinalReview.js # Tilbuds review +├── MaterialsManager.js # Materiale valg +└── ... +``` + +## Projektstruktur + +``` tilbudgivern/ -├── backend/ # Node.js backend +├── backend/ +│ ├── unified-server.js # Hoved server (~12,700 LOC) │ ├── src/ -│ │ ├── routes/ # API routes -│ │ ├── services/ # Business logic -│ │ ├── middleware/ # Express middleware -│ │ └── utils/ # Utilities -│ └── package.json -├── frontend/ # React frontend +│ │ ├── services/ # 40+ services +│ │ ├── routes/ # API routes +│ │ ├── middleware/ # Express middleware +│ │ └── graphql/ # Ordrestyring queries +│ └── migrations/ # Database migrations +├── frontend/ │ ├── src/ -│ │ ├── App.js # Main app component -│ │ └── index.css # Styling -│ └── package.json -├── infra/ # Infrastructure kode (fremtidig Azure deployment) -├── docker-compose.yml # Database setup -└── package.json # Root projekt -\`\`\` +│ │ ├── components/ # 57+ React komponenter +│ │ ├── contexts/ # Auth context +│ │ └── services/ # Frontend services +│ └── build/ # Produktion build +├── database/ # Schema og seeds +├── tests/ # Playwright & Selenium tests +├── docs/ # Dokumentation +└── ecosystem.config.js # PM2 konfiguration +``` -## 🔧 API Endpoints +## API Endpoints -- \`POST /api/quotes/generate\` - Generer nyt tilbud -- \`POST /api/quotes/feedback\` - Submit feedback og få justeret tilbud -- \`GET /api/quotes/:id\` - Hent specifikt tilbud -- \`GET /api/quotes/prices/:category\` - Hent prisdata -- \`GET /health\` - Health check +### Tilbud +``` +POST /api/quotes/generate # Generer tilbud +POST /api/quotes/generate-ai # AI-drevet generering +GET /api/quotes/completed # Liste fuldførte tilbud +POST /api/quotes/:id/accept # Accepter tilbud +DELETE /api/quotes/:id # Slet tilbud +``` -## 🗄 Database Schema +### Smart Pakker +``` +GET /api/smart-packages/ # Liste alle pakker +POST /api/smart-packages/ # Opret pakke +GET /api/smart-packages/:id # Hent specifik pakke +PUT /api/smart-packages/:id # Opdater pakke +``` -### Prices Table -Indeholder erfaringspriser for forskellige typer tømrerarbejde. +### Projekter +``` +POST /api/projects # Opret projekt +GET /api/projects # Liste projekter +GET /api/projects/:id # Hent projekt +PUT /api/projects/:id # Opdater projekt +``` -### Quotes Table -Gemmer alle genererede tilbud med metadata. +### Materialer & Priser +``` +GET /api/materials # Liste materialer +GET /api/materials/search # Søg materialer +POST /api/pricing/bygma-prisbog # Import Bygma prisbog +GET /api/pricing/bygma-prices # Hent Bygma priser +``` -### Quote Feedback Table -Gemmer feedback og justerede tilbud. +### Analytics +``` +GET /api/analytics/kpis # Key performance indicators +GET /api/dashboard/noegletal # Nøgletal dashboard +GET /api/dashboard/economics # Økonomisk overblik +``` -## 🔒 Sikkerhed +## Database + +### Primære Tabeller +| Tabel | Beskrivelse | +|-------|-------------| +| `project_quotes` | Genererede tilbud | +| `customer_projects` | Projekt metadata | +| `roof_geometry` | Tag dimensioner og typer | +| `material_packages` | Smart pakke definitioner | +| `smart_package_tasks` | Opgaver i pakker | +| `project_materials` | Materiale valg | +| `project_labor` | Arbejdstimer | +| `system_logs` | Struktureret logging | + +## Eksterne Integrationer + +### Ordrestyring API +- GraphQL endpoint til ordre/kundestyring +- Synkronisering af kunder, sager og tilbud +- Kalender integration + +### OpenAI API +- GPT-4 til intelligent tilbudsgenerering +- Token tracking og budget overvågning +- $9/måned budget (~160K tokens) + +### Bygma & Stark +- Materiale prisbog import +- Katalog synkronisering + +## Tagtyper (7 understøttede) + +1. **Sadeltag** - Standard sadeltag (default) +2. **Valmtag** - Fire-sidet tag +3. **Københavnertag** - Fladt tag med hældning +4. **Fladtag** - Helt fladt tag +5. **Pulttag** - Ensidigt skrå tag +6. **Tag med Kviste** - Tag med kviste +7. **Mansardtag** - Mansard stil + +## Sikkerhed - Rate limiting på API endpoints - Input validering med Joi - Helmet.js sikkerhedsheaders +- JWT authentication +- Parameteriserede SQL queries - CORS konfiguration -- Environment variabel protection -## 🚀 Deployment til Azure +## Dokumentation -Infrastructure koden til Azure deployment findes i \`infra/\` mappen og vil blive udviklet i næste fase. +Se `/docs/` mappen for detaljeret dokumentation: +- [API Dokumentation](docs/api/) +- [Feature Guides](docs/features/) +- [Deployment Guide](docs/deployment/) +- [Logging System](docs/LOGGING_SYSTEM.md) -Planlagte Azure services: -- Azure App Service (frontend + backend) -- Azure Database for PostgreSQL -- Azure OpenAI Service -- Azure Application Insights - -## 🤝 Bidrag - -1. Fork projektet -2. Opret feature branch -3. Commit ændringer -4. Push til branch -5. Opret Pull Request - -## 📄 Licens - -MIT License - se LICENSE fil for detaljer. - -## 📞 Support +## Support Ved spørgsmål eller problemer, opret et issue i projektets GitHub repository. -## Active Focus & Copilot Memory -- Se [COPILOT_MEMORY.md](COPILOT_MEMORY.md) for en kort, opdateret oversigt over hvad vi arbejder på lige nu. -- I Copilot Chat: start med “@workspace brug COPILOT_MEMORY.md som kontekst” og henvis til den i dine spørgsmål for mere relevante svar. +## Licens + +MIT License - se LICENSE fil for detaljer. diff --git a/docs/README.md b/docs/README.md index 345a5dc..041a49c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,217 +1,144 @@ -# Tilbudgivern - AI-baseret Tilbudsberegner +# Tilbudgivern Dokumentation -En AI-drevet tilbudsberegner for tømrerfaget, der hjælper med at generere detaljerede og professionelle tilbud baseret på projektbeskrivelser. +Velkommen til Tilbudgivern dokumentationen. Her finder du detaljerede guides til alle aspekter af systemet. -## 🚀 Funktioner +## Oversigt -- **AI-genererede tilbud**: Bruger OpenAI GPT-4 til at generere detaljerede tilbud -- **Interaktiv feedback**: Mulighed for at justere tilbud baseret på feedback -- **Prisdatabase**: Indbygget database med erfaringspriser for tømrerarbejde -- **Responsivt design**: Fungerer på desktop og mobil -- **Audit trail**: Gemmer alle tilbud og feedback for analyse +Tilbudgivern er en AI-drevet tilbudsberegner for tømrerfaget med: +- 40+ backend services +- 57+ frontend komponenter +- 15 Smart Pakker til tagarbejde +- 7 understøttede tagtyper +- Ordrestyring GraphQL integration -## 🛠 Teknologi Stack +## Dokumentationsstruktur -- **Frontend**: React med Material-UI -- **Backend**: Node.js med Express -- **Database**: PostgreSQL -- **AI**: OpenAI GPT-4 API -- **Containerization**: Docker +### API Dokumentation (`/api/`) +| Dokument | Beskrivelse | +|----------|-------------| +| [ORDRESTYRING_API_INVENTORY](api/ORDRESTYRING_API_INVENTORY.md) | Komplet Ordrestyring API reference | +| [ORDRESTYRING_API_STATUS_OVERSIGT](api/ORDRESTYRING_API_STATUS_OVERSIGT.md) | Status på API integrationer | +| [CUSTOMER_SEARCH_INTEGRATION](api/CUSTOMER_SEARCH_INTEGRATION.md) | Kundesøgning integration | +| [CASE_ANALYTICS_SYSTEM_DOCUMENTATION](api/CASE_ANALYTICS_SYSTEM_DOCUMENTATION.md) | Sags-analytics system | +| [BYGMA_AUTOMATION_README](api/BYGMA_AUTOMATION_README.md) | Bygma automatisering | -## 📋 Forudsætninger +### Feature Dokumentation (`/features/`) +| Dokument | Beskrivelse | +|----------|-------------| +| [SMART_PACKAGES_COMPLETE_CATALOG](features/SMART_PACKAGES_COMPLETE_CATALOG.md) | Komplet Smart Pakke katalog | +| [TOMRER_SMART_PACKAGES_GUIDE](features/TOMRER_SMART_PACKAGES_GUIDE.md) | Tømrer smart pakke guide | +| [BYGMA_IMPORT_FEATURE](features/BYGMA_IMPORT_FEATURE.md) | Bygma import funktionalitet | +| [ORDRESTYRING_GRAPHQL_INTEGRATION](features/ORDRESTYRING_GRAPHQL_INTEGRATION.md) | GraphQL integration | +| [INTELLIGENT_TASKS_FEATURE](features/INTELLIGENT_TASKS_FEATURE.md) | Intelligente opgaver | +| [MARKUP_SLIDER_SYSTEM](features/MARKUP_SLIDER_SYSTEM.md) | Avance slider system | +| [FEATURE_ROADMAP](features/FEATURE_ROADMAP.md) | Feature roadmap | -- Node.js 18+ -- Docker og Docker Compose -- OpenAI API nøgle +### Deployment (`/deployment/`) +| Dokument | Beskrivelse | +|----------|-------------| +| [DEPLOYMENT](deployment/DEPLOYMENT.md) | Deployment guide | +| [PM2_GUIDE](deployment/PM2_GUIDE.md) | PM2 process manager | +| [DEPLOYMENT-PIPELINE](deployment/DEPLOYMENT-PIPELINE.md) | CI/CD pipeline | +| [DNS_MIGRATION_GUIDE](deployment/DNS_MIGRATION_GUIDE.md) | DNS migration | -## 🏃‍♂️ Quick Start +### Guides (`/guides/`) +| Dokument | Beskrivelse | +|----------|-------------| +| [KOMPLET_ORDRESTYRING_SYSTEM_OVERSIGT](guides/KOMPLET_ORDRESTYRING_SYSTEM_OVERSIGT.md) | Komplet Ordrestyring oversigt | +| [KOMPLET_TILBUDSBEREGNING_LØSNING](guides/KOMPLET_TILBUDSBEREGNING_LØSNING.md) | Tilbudsberegning løsning | +| [AI_TILBUDS_PROMPT_GUIDE](guides/AI_TILBUDS_PROMPT_GUIDE.md) | AI prompt guide | +| [TAG_OPGAVE_DATABASE](guides/TAG_OPGAVE_DATABASE.md) | Tag opgave database | +| [TOMMER_QUICK_REFERENCE](guides/TOMMER_QUICK_REFERENCE.md) | Tømrer quick reference | -### 1. Klon projektet -\`\`\`bash -cd /home/alex/git/tilbudgivern -\`\`\` +### System Dokumentation (root) +| Dokument | Beskrivelse | +|----------|-------------| +| [LOGGING_SYSTEM](LOGGING_SYSTEM.md) | Struktureret logging system | +| [PORT_MANAGEMENT](PORT_MANAGEMENT.md) | Port håndtering | +| [DATABASE_BACKUP_SETUP](DATABASE_BACKUP_SETUP.md) | Database backup | +| [ROOF_TYPES_IMPLEMENTATION](ROOF_TYPES_IMPLEMENTATION.md) | 7 tagtype implementationer | +| [OPENAI_COSTS_API](OPENAI_COSTS_API.md) | OpenAI omkostnings-API | -### 2. Installer afhængigheder -\`\`\`bash -# Root projekt -npm install +### Test Dokumentation +| Dokument | Beskrivelse | +|----------|-------------| +| [UI_TESTING_SETUP](UI_TESTING_SETUP.md) | UI test opsætning | +| [SVG_TESTING_GUIDE](SVG_TESTING_GUIDE.md) | SVG test guide | -# Backend -cd backend -npm install +## Quick Links -# Frontend -cd ../frontend -npm install -cd .. -\`\`\` +### Primære Systemer +- **Unified Server**: `backend/unified-server.js` (port 4032) +- **Smart Pakker**: 15 forudkonfigurerede tømrerpakker +- **Ordrestyring**: GraphQL integration til ordre/kundestyring +- **OpenAI**: GPT-4 tilbudsgenerering ($9/måned budget) -### 3. Start database -\`\`\`bash -docker-compose up -d -\`\`\` +### Teknologi Stack +| Komponent | Teknologi | +|-----------|-----------| +| Frontend | React 18, Material-UI 5 | +| Backend | Node.js/Express | +| Database | MariaDB/MySQL | +| Real-time | Socket.IO | +| PDF | Puppeteer | +| Test | Playwright, Jest, Selenium | -### 4. Konfigurer environment -Rediger \`backend/.env\` og tilføj din OpenAI API nøgle: -\`\`\` -OPENAI_API_KEY=sk-your-actual-openai-api-key-here -\`\`\` - -### 5. Start applikationen -\`\`\`bash +### Vigtige Kommandoer +```bash +# Development npm run dev -\`\`\` -Dette starter både backend (port 3000) og frontend (React development). +# Production +pm2 restart tilbudgivern-unified +pm2 logs tilbudgivern-unified -## ⚡ Deployment Scripts - -For hurtig udvikling er der lavet praktiske deployment scripts i roden: - -### Fuld Test & Deploy (`./test-build-deploy.sh`) -Kører komplet test, build og deployment med fejlhåndtering: -```bash -./test-build-deploy.sh +# Test +npm run test:pw # Playwright E2E +npm run test:pw:local # Lokal test +cd backend && npm test # Unit tests ``` -Scriptet gør følgende: -- ✅ Tester backend syntax og database forbindelse -- 🏗️ Bygger frontend med fejltjek -- 🔄 Genstarter PM2 server -- 📊 Viser status og eventuelle fejl +## Arkitektur Oversigt -### Quick Deploy (`./quick-deploy.sh`) -Hurtig version til små ændringer: -```bash -./quick-deploy.sh +``` +┌─────────────────────────────────────────────────────────┐ +│ Frontend (React 18) │ +│ Material-UI + Socket.IO Client │ +└─────────────────────────┬───────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────┐ +│ Unified Server (Port 4032) │ +│ backend/unified-server.js │ +├─────────────────────────────────────────────────────────┤ +│ Routes │ Services (40+) │ Middleware │ +│ ──────── │ ─────────────── │ ────────── │ +│ /api/* │ openaiService │ auth │ +│ │ smartPackage... │ correlationId │ +│ │ ordrestyring... │ errorHandler │ +│ │ pdfGeneration │ requestLogger │ +└─────────────────────────┬───────────────────────────────┘ + │ + ┌───────────────┼───────────────┐ + ▼ ▼ ▼ +┌─────────────┐ ┌─────────────┐ ┌─────────────┐ +│ MariaDB │ │ OpenAI │ │ Ordrestyring│ +│ Database │ │ GPT-4 API │ │ GraphQL API │ +└─────────────┘ └─────────────┘ └─────────────┘ ``` -**Tip:** Brug altid disse scripts efter kode-ændringer - de sikrer at alt fungerer korrekt! +## Database Tabeller -## 🧪 Test Applikationen +| Kategori | Tabeller | +|----------|----------| +| Tilbud | `project_quotes`, `quotes`, `quote_feedback` | +| Projekter | `customer_projects`, `projects` | +| Materialer | `materials`, `material_prices`, `project_materials` | +| Arbejde | `labor_tasks`, `labor_prices`, `project_labor` | +| Pakker | `material_packages`, `smart_package_tasks`, `smart_package_materials` | +| Geometri | `roof_geometry` | +| System | `system_logs`, `request_logs`, `system_settings` | -### Uden OpenAI API nøgle (lokal test): -1. Åbn browser på http://localhost:3000 -2. Udfyld projektbeskrivelse, f.eks.: "Lægning af 25 m² klikgulv i stue og gang" -3. Vælg projekttype og areal -4. Klik "Generer tilbud" -5. Du vil få en fejl om OpenAI API nøgle - dette er forventet +## Kontakt -### Med gyldig OpenAI API nøgle: -1. Tilføj din rigtige OpenAI API nøgle i `backend/.env`: - ``` - OPENAI_API_KEY=sk-din-rigtige-api-noegle-her - ``` -2. Genstart serveren med `npm run dev` -3. Test tilbudsgenerering med rigtige AI-svar -4. Test feedback funktionen ved at justere tilbuddet - -### Test backend API direkte: -```bash -# Health check -curl http://localhost:3001/health - -# Se prisdata for gulv -curl http://localhost:3001/api/quotes/prices/gulv - -# Kør automatiske tests -cd backend && npm test -``` - -## ✅ Status - -Applikationen er **fuldt funktionel** og klar til brug: - -- ✅ Backend server kører på port 3001 -- ✅ Frontend React app kører på port 3000 -- ✅ PostgreSQL database er forbundet og initialiseret -- ✅ Prisdatabase er populeret med tømrer-erfaringspriser -- ✅ API endpoints virker korrekt -- ✅ Frontend kommunikerer med backend -- ✅ Rate limiting og sikkerhed implementeret -- ✅ Error handling og logging funktionerer -- ✅ Database audit trail gemmer alle tilbud og feedback -- 🔑 **Kræver kun gyldig OpenAI API nøgle for AI-funktionalitet** - -### Test Gennemført: -- Database initialisering ✅ -- API endpoints ✅ -- Frontend-backend kommunikation ✅ -- Formularer og validering ✅ -- Error handling ✅ -- Logging ✅ -- Rate limiting ✅ - -## 📁 Projektstruktur - -\`\`\` -tilbudgivern/ -├── backend/ # Node.js backend -│ ├── src/ -│ │ ├── routes/ # API routes -│ │ ├── services/ # Business logic -│ │ ├── middleware/ # Express middleware -│ │ └── utils/ # Utilities -│ └── package.json -├── frontend/ # React frontend -│ ├── src/ -│ │ ├── App.js # Main app component -│ │ └── index.css # Styling -│ └── package.json -├── infra/ # Infrastructure kode (fremtidig Azure deployment) -├── docker-compose.yml # Database setup -└── package.json # Root projekt -\`\`\` - -## 🔧 API Endpoints - -- \`POST /api/quotes/generate\` - Generer nyt tilbud -- \`POST /api/quotes/feedback\` - Submit feedback og få justeret tilbud -- \`GET /api/quotes/:id\` - Hent specifikt tilbud -- \`GET /api/quotes/prices/:category\` - Hent prisdata -- \`GET /health\` - Health check - -## 🗄 Database Schema - -### Prices Table -Indeholder erfaringspriser for forskellige typer tømrerarbejde. - -### Quotes Table -Gemmer alle genererede tilbud med metadata. - -### Quote Feedback Table -Gemmer feedback og justerede tilbud. - -## 🔒 Sikkerhed - -- Rate limiting på API endpoints -- Input validering med Joi -- Helmet.js sikkerhedsheaders -- CORS konfiguration -- Environment variabel protection - -## 🚀 Deployment til Azure - -Infrastructure koden til Azure deployment findes i \`infra/\` mappen og vil blive udviklet i næste fase. - -Planlagte Azure services: -- Azure App Service (frontend + backend) -- Azure Database for PostgreSQL -- Azure OpenAI Service -- Azure Application Insights - -## 🤝 Bidrag - -1. Fork projektet -2. Opret feature branch -3. Commit ændringer -4. Push til branch -5. Opret Pull Request - -## 📄 Licens - -MIT License - se LICENSE fil for detaljer. - -## 📞 Support - -Ved spørgsmål eller problemer, opret et issue i projektets GitHub repository. +Ved spørgsmål, opret et issue i GitHub repository.