Tasks 5-7: eval harness, FastAPI backend, Paper & Ink UI- src/eval/ β precision/recall/F1 harness with type-aware comparators,micro/macro F1, CSV + markdown reports, --model benchmark flag- src/api/ β FastAPI backend with /extract, /schemas, /health,request-ID middleware, typed error envelope, injectable extractor- ui/ β Vite + React + TS + Tailwind + Motion + React Three FiberPaper & Ink editorial UI with 3D paper hero, dark/light mode,confidence inkwell, wax-stamp metrics, kinetic typography- 95 passing tests (up from 54); UI is a separate npm workspace
557ab38 | """Health + root routes. | |
| GET / -> service banner (name, version, docs link) | |
| GET /health -> {"status": "ok"} β probe target for orchestrators | |
| """ | |
| from __future__ import annotations | |
| from fastapi import APIRouter | |
| router = APIRouter(tags=["health"]) | |
| SERVICE_NAME = "structured-data-extraction" | |
| SERVICE_VERSION = "0.1.0" | |
| def root() -> dict: | |
| return { | |
| "service": SERVICE_NAME, | |
| "version": SERVICE_VERSION, | |
| "docs": "/docs", | |
| "openapi": "/openapi.json", | |
| } | |
| def health() -> dict: | |
| return {"status": "ok"} | |