Add /api/library datasheet import and component GET/PUT with no exam. Reorganize pytest into datasheet, library, schematic, PCB, and AF+AI. Document Rust criteria (none chosen; no rustup) and coding conformity.
38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
# 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.
|