- Added package.json for project dependencies and scripts - Created setup_mariadb.sql for database setup and user creation - Documented project development plan in taskfile.txt - Implemented test_setup.sh for system requirements and project structure checks - Configured systemd service files for backend and frontend applications - Added ubu-deployment-commands.sh for deployment instructions on Ubu server
194 lines
4.9 KiB
Markdown
194 lines
4.9 KiB
Markdown
# Tilbudgivern - AI-baseret Tilbudsberegner
|
|
|
|
En AI-drevet tilbudsberegner for tømrerfaget, der hjælper med at generere detaljerede og professionelle tilbud baseret på projektbeskrivelser.
|
|
|
|
## 🚀 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
|
|
|
|
## 🛠 Teknologi Stack
|
|
|
|
- **Frontend**: React med Material-UI
|
|
- **Backend**: Node.js med Express
|
|
- **Database**: PostgreSQL
|
|
- **AI**: OpenAI GPT-4 API
|
|
- **Containerization**: Docker
|
|
|
|
## 📋 Forudsætninger
|
|
|
|
- Node.js 18+
|
|
- Docker og Docker Compose
|
|
- OpenAI API nøgle
|
|
|
|
## 🏃♂️ Quick Start
|
|
|
|
### 1. Klon projektet
|
|
\`\`\`bash
|
|
cd /home/alex/git/tilbudgivern
|
|
\`\`\`
|
|
|
|
### 2. Installer afhængigheder
|
|
\`\`\`bash
|
|
# Root projekt
|
|
npm install
|
|
|
|
# Backend
|
|
cd backend
|
|
npm install
|
|
|
|
# Frontend
|
|
cd ../frontend
|
|
npm install
|
|
cd ..
|
|
\`\`\`
|
|
|
|
### 3. Start database
|
|
\`\`\`bash
|
|
docker-compose up -d
|
|
\`\`\`
|
|
|
|
### 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
|
|
npm run dev
|
|
\`\`\`
|
|
|
|
Dette starter både backend (port 3001) og frontend (port 3000).
|
|
|
|
## 🧪 Test Applikationen
|
|
|
|
### 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:
|
|
```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.
|