[FIX] Fase 1 UI: completa import fornitori + client API + help (edit precedenti falliti)
Tre Edit dei commit f85876f/73f47df erano falliti silenziosamente (string-not-found)
e committati come fatti: questo li applica davvero.
- public/js/api.js: 14 metodi client Fase 1 (categorie/template/domande/import).
Usano this.del() (il metodo base e' del(), non delete()).
- public/supply-chain.html: pulsante "Importa" in header + openImportModal()/parseCsv()/
runSupplierImport() reali (prima era stub). Modale CSV con upsert per external_ref.
- public/js/help.js: sezioni "Importazione fornitori (CSV/API)" e "Categorie e questionari
configurabili" + riferimento ACN Allegato 2 GV.SC. Nota interpretativa esplicita sul
perimetro fornitori critici (scelta documentata dell'organizzazione).
Seed template NIS2 base (26 domande) ora applicato DAVVERO su org 129 via host DB
(il commit 8d7a50a era fallito: il CLI docker punta a nis2-db, il web/host usa host MySQL;
risolto errore collation utf8mb4 con COLLATE esplicito). Idempotenza verificata.
Inline JS validato (node --check). api.js/help.js validati.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
73f47df389
commit
03da28920d
@@ -273,6 +273,20 @@ class NIS2API {
|
||||
sendSupplierQuestionnaire(id, email) { return this.post(`/supply-chain/${id}/send-questionnaire`, email ? { email } : {}); } // self-assessment fornitore (link esterno)
|
||||
getSupplierQuestionnaireStatus(id) { return this.get(`/supply-chain/${id}/questionnaire-status`); } // P1 continuous control monitoring (JWT)
|
||||
|
||||
// Modulo questionari configurabile (Fase 1): categorie, template, domande, import
|
||||
getSupplierCategories() { return this.get('/supply-chain/categories'); }
|
||||
createSupplierCategory(data) { return this.post('/supply-chain/categories', data); }
|
||||
updateSupplierCategory(id, data) { return this.put(`/supply-chain/categories/${id}`, data); }
|
||||
deleteSupplierCategory(id) { return this.del(`/supply-chain/categories/${id}`); }
|
||||
getQuestionnaireTemplates() { return this.get('/supply-chain/templates'); }
|
||||
getQuestionnaireTemplate(id) { return this.get(`/supply-chain/templates/${id}`); }
|
||||
createQuestionnaireTemplate(data) { return this.post('/supply-chain/templates', data); }
|
||||
updateQuestionnaireTemplate(id, data) { return this.put(`/supply-chain/templates/${id}`, data); }
|
||||
addTemplateQuestion(templateId, data) { return this.post(`/supply-chain/${templateId}/questions`, data); }
|
||||
updateTemplateQuestion(id, data) { return this.put(`/supply-chain/questions/${id}`, data); }
|
||||
deleteTemplateQuestion(id) { return this.del(`/supply-chain/questions/${id}`); }
|
||||
importSuppliers(suppliers) { return this.post('/supply-chain/import', { suppliers }); }
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// Audit
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
Reference in New Issue
Block a user