feat: initial DCC RPG knowledge base + AI DM design

This commit is contained in:
truetype committed 2026-06-25 20:32:05 +02:00
commit ae73fe43d3
89 files changed
+37405

No files matched your search

+152
View File
@@ -0,0 +1,152 @@
# Checklist: Da Design a Prototipo Giocabile
**Obiettivo**: Qualcuno clona il repo e in <30 min gioca un turno.
**Target**: Singolo utente, browser, esecuzione locale on-premise.
---
## Fase 0 — Setup Progetto (priorità: critica)
- [ ] `git init` nella directory /home/codex/rpg/
- [ ] Struttura directory (src/, tests/, data/, frontend/)
- [ ] `requirements.txt`: FastAPI, uvicorn, ollama-python, aiohttp
- [ ] `docker-compose.yml` opzionale (per isolamento)
- [ ] Script `start.sh` / `start.bat` che avvia tutto con un comando
- [ ] `.gitignore`: dcc/pdf_pages/, __pycache__, *.db
---
## Fase 1 — Backend Core (priorità: critica)
### 1.1 State Machine
- [ ] `src/engine/state_machine.py`: orchestratore turni (Leggi -> LLM -> Valida -> Esegui -> Scrivi)
- [ ] Retry logic con backoff esponenziale + jitter
- [ ] Idempotenza: cache risultati per turn_id
- [ ] Safe fallback narrativo su errore
### 1.2 SQLite / Stato Gioco
- [ ] `src/engine/db.py`: connessione, init schema, migrazioni
- [ ] Implementare schema: campaign, characters, adventure_state, quest_log, turn_log
- [ ] CRUD base per ogni tabella
- [ ] Backup automatico (copia .db a ogni avvio)
### 1.3 Approved Tools (10)
- [ ] `roll-dice`: d20, d%, d24, catena dadi, modificatori
- [ ] `combat`: iniziativa, attacco, mighty-deed, furtivo, critico, fumble
- [ ] `ability-check`: abilità ladro (con dado dedicato) e altri (d20+mod)
- [ ] `saving-throw`: Tempra/Riflessi/Volontà
- [ ] `movement`: esplorazione stanze, distanza, incontri
- [ ] `spellcasting`: prova incantesimo, tabella risultati, corruzione/ritorsione
- [ ] `update-inventory`: aggiungi/rimuovi/equipaggia
- [ ] `award-xp`: 0-4 PE per incontro, avanzamento livello
- [ ] `update-quest`: stato missioni
- [ ] `dm-override`: modifica stato, forza risultato, ignora regola
---
## Fase 2 — LLM Integration (priorità: critica)
- [ ] `src/llm/client.py`: wrapper chiamate Ollama API (gemma2:9b)
- [ ] `src/llm/prompts.py`: template system prompt con:
- Regole fondamentali (d20, CD/CA, catena dadi)
- Approved Tools (nome, parametri, quando usarli)
- Mappa avventura (aree, CD, statistiche mostri)
- Regole classi (Dado Cimento, abilità ladro, ecc.)
- [ ] `src/llm/parser.py`: parsing risposta LLM -> tool calls strutturati
- [ ] Tool calling: filtraggio tool contro allowlist + validazione parametri
- [ ] Test: chiamata singola a Ollama, verificare risposta in italiano
---
## Fase 3 — Avventura Machine-Readable (priorità: alta)
- [ ] `data/adventure/areas.json`: tutte le 9 aree con descrizione, CD, mostri, tesori
- [ ] `data/adventure/monsters.json`: tutte le creature con statistiche complete
- [ ] `data/adventure/items.json`: oggetti recuperabili (corno demoniaco, soldatini, ecc.)
- [ ] `data/adventure/quests.json`: quest principale + secondaria della driade
- [x] Completare Aree 1.1, 1.3 e 1.9 (mancano) — scrivere descrizioni originali ispirate al tema
- [x] Completare pagina 39 (setup avventura, plot hook: Vorkhul Ksh'tharan, il Vincolato alle Stelle)
- [x] Completare tabelle equipaggiamento (armi, armature, equipaggiamento — tradotte dal Reference Booklet)
- [x] Completa tabella critici (I-V) e fumble in italiano (tradotta dal Reference Booklet)
- [x] Completa tabella mestieri d100 (tradotta dal Reference Booklet)
- [x] Completa tabelle classi + abilità ladro + mighty deeds (tradotte dal Reference Booklet)
---
## Fase 4 — Frontend (priorità: alta)
- [ ] `frontend/index.html`: pagina singola con chat + pannello stato
- [ ] `frontend/style.css`: tema scuro DCC, leggibile, essenziale
- [ ] `frontend/app.js`: connessione WebSocket/Fetch al backend
- [ ] Pannello stato personaggi (PF, classe, PE, equipaggiamento)
- [ ] Pannello mappa (aree visitate/da visitare)
- [ ] Log azioni recenti (ultimi N turni)
- [ ] Input testuale per azioni giocatore
- [ ] DM-Override: pulsante per attivare modalità DM + comandi
- [ ] Adattamento mobile (giocabile da telefono)
---
## Fase 5 — Colmare Gap OCR (priorità: media)
- [x] Recuperare pagina 39: scritta ex-novo (Vorkhul Ksh'tharan background)
- [x] Estrarre strutturalmente le tabelle critici/fumble (formato Markdown, tradotte dal Reference Booklet)
- [x] Completare tabella equipaggiamento (Reference Booklet → Italiano)
- [ ] Ripetere OCR pagine 1-2 con pre-processing (contrasto, bianco/nero)
- [ ] Completare risultati incantesimi fascia alta (20-31+) da screenshot
---
## Fase 6 — Testing (priorità: media)
- [ ] `tests/test_tools.py`: test unitari per ogni Approved Tool
- roll-dice: distribuzione, catena dadi, modificatori
- combat: critico/fumble, mighty-deed, CA
- ability-check: dado ladro vs d20 standard
- spellcasting: corruzione, ritorsione, tabella risultati
- [ ] `tests/test_state_machine.py`: flusso completo di un turno
- [ ] `tests/test_avventura.py`: integrità dati (aree collegabili, mostri referenziati)
- [ ] `tests/test_llm_parser.py`: parsing risposte LLM, filtraggio allowlist
---
## Fase 7 — Documentazione (priorità: media)
- [ ] `README.md` aggiornato con "Come avviare":
- Prerequisiti (Python 3.11+, Ollama in esecuzione)
- `pip install -r requirements.txt`
- `python start.py`
- Aprire browser a http://localhost:8000
- [ ] `docs/setup.md`: configurazione Ollama, gestione API key
- [ ] `docs/architettura.md`: diagramma flusso, spiegazione pattern NSL
- [ ] `docs/dm-guide.md`: come usare DM-Override, comandi disponibili
---
## Fase 8 — Rifiniture (priorità: bassa)
- [ ] Rate limiting azioni (anti-spam)
- [ ] Salvataggio automatico ogni N turni
- [ ] Logging strutturato (token usage, latenza, errori)
- [ ] Backup automatico SQLite
- [ ] Supporto "setaccio": 4 personaggi per giocatore da gestire in UI
- [ ] Excalidraw/mappa visuale delle stanze
- [ ] Effetti sonori (opzionale, per atmosfera)
---
## Riepilogo Tempo Stimato
| Fase | Ore | Priorità |
|------|-----|----------|
| 0 — Setup Progetto | 0.5 | 🔴 Critica |
| 1 — Backend Core | 4-6 | 🔴 Critica |
| 2 — LLM Integration | 2-3 | 🔴 Critica |
| 3 — Avventura Machine-Readable | 2-3 | 🟡 Alta |
| 4 — Frontend | 3-4 | 🟡 Alta |
| 5 — Gap OCR | 2 | 🟠 Media |
| 6 — Testing | 2 | 🟠 Media |
| 7 — Documentazione | 1 | 🟠 Media |
| 8 — Rifiniture | 2-3 | 🔵 Bassa |
**Totale**: ~18-25 ore per MVP giocabile da altri.