POST /api/library/datasheets now writes an IC inbox card or a passive/discrete model. Empty pintables never enter library/extracted. AF Board+AI runs after unchanged run_pcb_checks (PE-SI / HF line stay).
36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# Libreria componenti — porta prodotto
|
||
|
||
La libreria **non** vive dentro l’esame. È una porta a sé: pagina `/library` + API `/api/library`. L’analisi *usa* la libreria; non è l’unico modo per riempirla.
|
||
|
||
## Flusso
|
||
|
||
```text
|
||
PDF + MPN + kind (ic | passive_part | simple)
|
||
↓
|
||
POST /api/library/datasheets
|
||
↓
|
||
blob MD5 + ref MPN
|
||
↓
|
||
scheda componente
|
||
IC → library/inbox/{mpn}.json (niente pintable inventata)
|
||
passive_part → library/passives/{mpn}.json
|
||
simple → library/models/{mpn}.json
|
||
```
|
||
|
||
Nessun progetto, nessun `MODE=run` / `MODE=pcb`. Stesso store `library/datasheets/{blobs,refs}`.
|
||
|
||
`library/extracted/` si scrive **solo** con pintable valida (`library_gate`: ≥2 pin, almeno un nome). PUT `/api/library/components/ic/{mpn}` promuove inbox → extracted.
|
||
|
||
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 inventa pin dal PDF. L’LLM prelim resta un mestiere a parte; la scheda c’è comunque.
|
||
- Non sostituisce `library_has_*` usati dalla pipeline (`library_has_extraction` resta falso finché non c’è pintable).
|
||
|
||
## Test
|
||
|
||
`tests/library/` — catalogo, alias MPN, import PDF senza progetto (scheda IC in inbox, passivo in passives), GET/PUT scheda, promozione pintable, rifiuto PDF non valido / kind ignoto.
|