[FEAT] A4 Fasi 4.4 + 4.5 (A4 COMPLETA 5/5): scadenziario centralizzato review_schedule (mig.044; ReviewScheduleController list/create/update/delete/complete/sync) + stakeholder estesi clienti/partner GV.SC-02 (mig.045 suppliers.stakeholder_type, SupplyChainController::stakeholderMap). Pagine review-schedule.html + stakeholders.html (Bootstrap Italia/AGID). Workflow build+review adversariale (3 major risolti: 045 da DELIMITER -> ALTER bare runner-safe). help GV.SC-04/05 allineati al titolo canonico ACN. Cache-buster ?v=20260620.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-15 23:10:28 +02:00
co-authored by Claude Opus 4.8
parent c7d36c910f
commit c5b00ccd96
48 changed files with 1597 additions and 122 deletions
+27
View File
@@ -270,6 +270,33 @@ class NIS2API {
raciLink(d) { return this._acn(this.post('/raci/link', d)); }
raciUnlink(d) { return this._acn(this.del('/raci/link?link_type=' + encodeURIComponent(d.link_type) + '&a_id=' + encodeURIComponent(d.a_id) + '&b_id=' + encodeURIComponent(d.b_id))); }
// ═══════════════════════════════════════════════════════════════════
// Scadenziario centralizzato (A4 Fase 4.4) — review_schedule. _acn.
// Revisioni periodiche (GV.PO-02/GV.SC-07/PR.AT/DE.CM). Status calcolato live.
// DELETE per {id} numerico (no body). sync = import idempotente da scadenze esistenti.
// Alias rs* === rev* (stessa firma) per compatibilità di naming.
// ═══════════════════════════════════════════════════════════════════
revList() { return this._acn(this.get('/review-schedule/list')); }
revCreate(d) { return this._acn(this.post('/review-schedule/create', d || {})); }
revUpdate(id, d) { return this._acn(this.put(`/review-schedule/${id}`, d)); }
revDelete(id) { return this._acn(this.del(`/review-schedule/${id}`)); }
revComplete(id) { return this._acn(this.post(`/review-schedule/${id}/complete`, {})); }
revSync() { return this._acn(this.post('/review-schedule/sync', {})); }
rsList() { return this.revList(); }
rsCreate(d) { return this.revCreate(d); }
rsUpdate(id, d) { return this.revUpdate(id, d); }
rsDelete(id) { return this.revDelete(id); }
rsComplete(id) { return this.revComplete(id); }
rsSync() { return this.revSync(); }
// ═══════════════════════════════════════════════════════════════════
// Stakeholder estesi (A4 Fase 4.5) — riusa suppliers (GV.SC-02).
// stakeholderMap = vista di sintesi raggruppata (supplier/customer/partner). _acn.
// Per aggiungere/etichettare clienti/partner riusare createSupplier/updateSupplier
// passando `stakeholder_type` nel data (NB: NON sono _acn → gestire r.success).
// ═══════════════════════════════════════════════════════════════════
stakeholderMap() { return this._acn(this.get('/supply-chain/stakeholder-map')); }
// ═══════════════════════════════════════════════════════════════════
// Dashboard
// ═══════════════════════════════════════════════════════════════════