registri dei piani in git (AI-OS#309)
Refs gitea:Adriano/AI-OS#310 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Task 1 — Report: migrazioni DB (ruoli, guid, author_id)
|
||||
|
||||
Nota: questo file conteneva un report di un run precedente (task diverso, "content_blocks
|
||||
+ role") — sovrascritto con il report corretto del Task 1 corrente ("migrazioni ruoli,
|
||||
guid contenuti, posts.author_id").
|
||||
|
||||
## Cosa è stato fatto
|
||||
|
||||
Seguito TDD come da brief `task-1-brief.md`, codice usato verbatim.
|
||||
|
||||
1. **Test scritti** in `tests/content-db.test.ts`: aggiunto import `createUser` da `../src/lib/auth` e il blocco `describe('migrazioni ruoli/guid/autore', ...)` con le 3 it: guid non vuoto/univoco, invariante SQL editor→superuser, colonna `posts.author_id`.
|
||||
2. **Verificato fallimento atteso**: `npm test -- tests/content-db.test.ts` → 2 test falliti (`no such column: guid`, `author_id` assente), 6 preesistenti passati. Comportamento pre-migrazione confermato.
|
||||
3. **Migrazioni implementate** in `src/lib/db.ts`:
|
||||
- import `randomUUID` da `node:crypto`.
|
||||
- dopo il blocco che aggiunge `users.role`, inserita: unificazione `role='editor' → 'superuser'` (UPDATE idempotente), aggiunta colonna additiva `content_blocks.guid TEXT` (con check `PRAGMA table_info`), aggiunta colonna additiva `posts.author_id INTEGER` (stesso check).
|
||||
- blocco seed finale sostituito: insert ora include `guid` generato con `randomUUID()`; aggiunto backfill per righe pre-esistenti con guid nullo/vuoto; creato indice univoco `idx_content_guid` DOPO il backfill (per non fallire su righe nulle transitorie).
|
||||
4. **`syncSeed` in `src/lib/content.ts`** aggiornata allo stesso schema: import `randomUUID`, insert con guid generato per ogni riga.
|
||||
5. **Verificato successo**: `npm test -- tests/content-db.test.ts` e poi `npm test` completo (tutta la suite) → **tutti verdi**.
|
||||
6. **Build**: `npm run build` → completata senza errori.
|
||||
7. **Commit**: `5cea895 feat(db): migrazioni ruoli editor->superuser, guid contenuti, posts.author_id` (3 file: `src/lib/db.ts`, `src/lib/content.ts`, `tests/content-db.test.ts`).
|
||||
|
||||
## File toccati
|
||||
|
||||
- `src/lib/db.ts` — migrazioni additive/idempotenti + seed con guid + backfill + indice univoco.
|
||||
- `src/lib/content.ts` — `syncSeed` allineata (guid su ogni insert).
|
||||
- `tests/content-db.test.ts` — nuovo describe block per le 3 verifiche del task.
|
||||
|
||||
## Output test (finale, suite completa)
|
||||
|
||||
```
|
||||
Test Files 11 passed (11)
|
||||
Tests 51 passed (51)
|
||||
Start at 21:40:18
|
||||
Duration 2.62s
|
||||
```
|
||||
|
||||
## Output build
|
||||
|
||||
```
|
||||
[build] Server built in 434ms
|
||||
[build] Complete!
|
||||
```
|
||||
|
||||
## Dubbi / note
|
||||
|
||||
- Nessun dubbio bloccante. Rispettato il vincolo "migrazioni SOLO additive e idempotenti, PRIMA del seed, con verifica PRAGMA table_info prima di ogni ALTER" — verificato a mano leggendo `db.ts` dopo l'edit.
|
||||
- Il test importa `createUser` da `../src/lib/auth` ma non lo invoca in nessuna `it` (fedele al brief verbatim); nessun errore di lint/build osservato per l'import inutilizzato. Se in futuro un linter con regola `no-unused-vars` stretta viene attivato su questo file, andrà rivisto (fuori scope Task 1).
|
||||
- La migrazione `editor→superuser` end-to-end su DB persistente non è testata qui (per design, `:memory:` non persiste tra due `createDb`) — demandata allo smoke di produzione previsto in un task successivo del piano (Task 14/15), come indicato nel brief stesso.
|
||||
Reference in New Issue
Block a user