Refs gitea:Adriano/AI-OS#310 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2.4 KiB
Task 6: GUID esposto — resolve, componenti e GET singolo — REPORT
Stato: completato. Test verdi (62/62), build senza warning.
TDD: aggiunti test in tests/content.test.ts (guid da resolveContent) e
tests/content-api.test.ts (GET singolo). Falliti come atteso prima
dell'implementazione (guid assente / modulo mancante), verdi dopo.
Due scostamenti dal brief, entrambi necessari per far girare i test contro dati reali:
- Il tag di esempio
home.hero.titlenon esiste nel seed reale (esistonohome.hero.title-line-1/2/3,home.hero.cta, ecc.). Sostituito conhome.hero.ctain entrambi i test. require('../src/lib/content')falliva conCannot find modulesotto vitest/vite (risoluzione ESM). Sostituito conimport { resolveContent }in testa al file, stessa asserzione.
Variante di routing scelta: B — GET spostato dentro [tag].ts.
Come previsto dal brief, ho prima creato l'endpoint come
src/pages/api/admin/content/[tag]/index.ts (variante A) e verificato con
npm run build. Astro ha emesso il warning:
[WARN] [router] The route "/api/admin/content/[tag]" is defined in both
"src/pages/api/admin/content/[tag]/index.ts" and
"src/pages/api/admin/content/[tag].ts" using SSR mode. A dynamic SSR route
cannot be defined more than once.
[WARN] [router] A collision will result in a hard error in following versions of Astro.
Collisione confermata → applicata la contingenza: GET spostato dentro
src/pages/api/admin/content/[tag].ts (accanto al PUT esistente, stessa
logica di query/404/styleOptions), file [tag]/index.ts eliminato. Rilanciato
npm run build: nessun warning di routing. Test del GET (che ora importa
../src/pages/api/admin/content/[tag]) verde con la variante finale.
File toccati:
src/lib/content.ts—Entry.guid, query conguid,resolve()ritornaguid.src/components/content/T.astro—data-guidsu entrambi i rami.src/components/content/TImg.astro— riscritto per usareresolveContent(non piùgetImageOverride) e propagaredata-guidsu entrambi i rami.src/pages/api/admin/content/[tag].ts— aggiuntoGET(variante finale).tests/content.test.ts,tests/content-api.test.ts— nuovi test.
Verifica: npm test → 12 file, 62 test, tutti verdi. npm run build →
completa senza warning di routing.
Commit: 5ce10da — feat(content): guid in resolve/componenti + GET /api/admin/content/[tag]