# Libreria componenti — porta prodotto La libreria **non** vive dentro l’esame. È una porta a sé: pagina `/library` + API `/api/library`. L’analisi (preliminare datasheet, schematico, PCB) *usa* la libreria; non è l’unico modo per riempirla. ## Flusso ```text PDF + MPN ↓ POST /api/library/datasheets ↓ blob MD5 + ref MPN ↓ catalogo (tab Datasheets) ``` Nessun progetto, nessun `MODE=run` / `MODE=pcb`. Stesso store `library/datasheets/{blobs,refs}`. Aggiornare una scheda già estratta: ```text GET /api/library/components/{ic|passive|passive_part|simple}/{mpn} PUT stesso path (JSON) ``` Pintable IC: `library_gate` rifiuta pintable vuota o senza nomi (niente stub in libreria condivisa). ## Cosa non è - Non è admin/Clerk/JWT (non si tocca auth). - Non è DRC, non è FEM. - Non estrae da sola il pintable (LLM = preliminare datasheet nell’analisi, o un job futuro). Il PDF c’è comunque. - Non sostituisce `library_has_*` usati dalla pipeline. ## Test `tests/library/` — catalogo, alias MPN, import PDF senza progetto, GET/PUT scheda, rifiuto PDF non valido.