feat(defects): read API — feed, per-section counts and history (T6)

GET /api/defects returns a newest-first feed joined to the project name,
bounded by limit; ?section=ID narrows to one section's history. GET
/api/defects/counts returns { sectionId: n } for the weak-point map. Adds a
(section_id, created_at) index and a db:seed script; ~2k rows query in ~20ms.
This commit is contained in:
Julien Calixte
2026-05-28 00:18:18 +02:00
parent fc958ba59f
commit 999593b426
11 changed files with 384 additions and 14 deletions

12
server/api/defects.get.ts Normal file
View File

@@ -0,0 +1,12 @@
import { getDb } from '../db/client'
import { listDefects } from '../db/repositories/defects'
// Defect feed (F6), newest-first. `?section=ID` narrows to one section's
// history (the lazy modal load); `?limit=N` bounds the slice.
export default defineEventHandler(async (event) => {
const { section, limit } = getQuery(event)
return listDefects(getDb(), {
sectionId: typeof section === 'string' ? section : undefined,
limit: typeof limit === 'string' ? Number(limit) || undefined : undefined,
})
})