Initial commit: Callsign Generator with FastAPI and React
This commit is contained in:
131
KRAV.md
Normal file
131
KRAV.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Callsign-generator
|
||||
|
||||
##1. Syfte
|
||||
Skapa en webbaserad tj??nst som genererar CB-handles/callsigns med hj??lp av en LLM. Anv??ndaren ska kunna ge grundparametrar och eventuellt f??rfina dessa via f??ljdfr??gor innan generering.
|
||||
|
||||
##2. M??lbild
|
||||
Tj??nsten ska:
|
||||
- generera ett realistiskt callsign baserat p?? anv??ndarens input
|
||||
- ge en kort motivering till varf??r callsignet passar
|
||||
- vara konsekvent, f??ruts??gbar och snabb att anv??nda
|
||||
- k??nnas ???dialogisk??? genom adaptiva f??ljdfr??gor
|
||||
|
||||
##3. Anv??ndarfl??de (MVP)
|
||||
### Steg 1 - Initial input via UI
|
||||
Anv??ndaren besvarar initiala val s??som:
|
||||
- Stil (t.ex. Milit??r / Humor / Klassisk CB / Annan ??? fritext)
|
||||
- Ton (t.ex. Seri??s / Aggressiv / Lekfull)
|
||||
- Fritextbeskrivning (valfritt)
|
||||
|
||||
### Steg 2 - Val
|
||||
Efter initiala svar finns tv?? knappar:
|
||||
```
|
||||
[ Generera ] [ Fler fr??gor ]
|
||||
```
|
||||
|
||||
### Steg 3A - Generera
|
||||
- Backend skickar sammanst??lld prompt till LLM
|
||||
- LLM returnerar JSON med:
|
||||
- callsign
|
||||
- motivering
|
||||
|
||||
### Steg 3B - Fler fr??gor
|
||||
- Backend skickar prompt till LLM som genererar 1???3 relevanta f??ljdfr??gor
|
||||
- Anv??ndaren besvarar fr??gorna
|
||||
- Svaren lagras i state
|
||||
- Anv??ndaren kan d??refter v??lja "Generera" eller "Fler fr??gor" igen
|
||||
|
||||
## 4. Funktionella krav
|
||||
### 4.1 Input
|
||||
- Systemet ska st??dja:
|
||||
- val via dropdown/radioknappar
|
||||
- fritext
|
||||
- ??terkommande f??ljdfr??gor
|
||||
|
||||
### 4.2 Output
|
||||
|
||||
Systemet ska returnera JSON i stabilt format:
|
||||
```
|
||||
{
|
||||
"callsign": "<string>",
|
||||
"reason": "<string>"
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 F??ljdfr??gor
|
||||
F??ljdfr??gorna ska:
|
||||
- baseras p?? anv??ndarens tidigare svar
|
||||
- vara relevanta och korta
|
||||
- komma i 1???3 fr??gor ??t g??ngen
|
||||
- returneras som JSON:
|
||||
```
|
||||
{ "questions": [ "fr??ga 1", "fr??ga 2" ] }
|
||||
```
|
||||
|
||||
### 4.4 State Management
|
||||
Frontend ska lagra:
|
||||
```
|
||||
answers = {
|
||||
initial_params: {...},
|
||||
follow_up_answers: {...}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.5 Spr??k
|
||||
MVP riktas mot svenska men ska kunna ut??kas till andra spr??k.
|
||||
|
||||
## 5. Icke-funktionella krav
|
||||
- LLM-styrning: Stabilt via templade prompts och JSON-utdata
|
||||
- Prestanda: Svar inom < 2 sekunder f??r majoriteten av anrop (exkl. cold start)
|
||||
- Skalbarhet: Designad s?? backend kan distribueras vid behov
|
||||
- Robusthet: Systemet ska inte ???balla ur??? med l??nga poetiska svar
|
||||
- Utbyggbarhet: Framtida logotyp-/TTS-/fonetikmoduler m??jliga
|
||||
- Kostnadskontroll: Kan inf??ras via rate-limit + begr??nsad iteration
|
||||
|
||||
## 6. Systemarkitektur
|
||||
### Frontend
|
||||
- Visar formul??r + resultat
|
||||
- Renderar f??ljdfr??gor
|
||||
- H??ller state med anv??ndarsvar
|
||||
- Anropar backend via REST/HTTPS
|
||||
|
||||
### Backend
|
||||
- API som hanterar tv?? endpointtyper:
|
||||
```
|
||||
POST /questions
|
||||
Input: answers
|
||||
Output: JSON med f??ljdfr??gor
|
||||
|
||||
POST /generate
|
||||
Input: answers
|
||||
Output: JSON med callsign + motivering
|
||||
```
|
||||
|
||||
- Backend ansvarar f??r:
|
||||
- promptkonstruktion
|
||||
- validering
|
||||
- OpenRouter-anrop
|
||||
- eventuella caches
|
||||
|
||||
### LLM (via OpenRouter)
|
||||
- Backend anropar LLM
|
||||
- LLM returnerar JSON enligt definierad struktur
|
||||
|
||||
## 7. S??kerhets- och ??tkomstkrav
|
||||
- API-nyckel f??r OpenRouter f??r inte exponeras i frontend
|
||||
- Backend signerar samtliga anrop internt
|
||||
- M??jlighet till rate-limit per IP
|
||||
|
||||
## 8. Implementationsteknik (rekommenderad)
|
||||
|
||||
### Frontend:
|
||||
- SvelteKit / React / Vue (valfritt)
|
||||
|
||||
### Backend:
|
||||
- Python (FastAPI) eller Node (Fastify)
|
||||
|
||||
### Host-varianter:
|
||||
- docker med docker-compose
|
||||
|
||||
### LLM:
|
||||
- OpenRouter, valfri modell (t.ex. GPT-4, Claude etc)
|
||||
Reference in New Issue
Block a user