Table of Contents

Reperti prioritari per il team

Sintesi azionabile dei reperti emersi dal recupero (21 domini di regole, 489 regole, 22 flussi). Rilievi di documentazione — il codice NON è stato modificato. Confidenza SUPPORTED salvo diversa indicazione; da confermare e triare col team. Ordinati per severità.

🔴 Sicurezza

ID Reperto Dove Impatto
SEC-001 Credenziali Oracle in chiaro committate CASSANDRA/Web.config (+ altri app.config) Segreti nella storia Git
TD-008 Grant UI non ri-verificati oltre il confine .NET Remoting/WCFsistemico, 9 domini BR-CEN-001, BR-QC-012, BR-BLK-025, BR-CHK-002, BR-RPT-003, BR-DOC-029, BR-EXP-002, BR-PRJ-024, BR-GLB-017 Operazioni riservate eseguibili da chiamanti server-side/integrazione (bypass autorizzazione)
TD-006 Validazioni solo-UI non ripetute in BL/WCF es. BR-BOOK-003 vs WCF BR-BOOK-021; BR-QC-014 Integrità dati aggirabile via canali non-UI

🟠 Difetti probabili (VERIFIED salvo nota)

ID Difetto Dove
BR-CHK-013 DeleteHistoryByCheckID(21) hard-coded eseguito a ogni Page_Load (anche in lettura, senza grant): cancella lo storico del check id 21 CheckItemDetail.ascx.vb:395-396
BR-CHK-012 Insert passa BuildingID due volte → ROOM_ID salvato = BUILDING_ID (vano errato) sul path UI CheckItem_BL.vb:90-108
BR-CHK-014 CHK_FINALDELETECHECKITEM invocata dal DAL ma assente dal DB → fallimento runtime (PLS-00201) — SUPPORTED CheckItem_DAL.vb:151
BR-PROP-029 Trigger CNT_EDIFICI: ramo DELETING usa :NEW.ID_EDIFICIO (NULL in DELETE) → binding tenant non rimosso trigger CNT_EDIFICI
BR-BIM-011 Guardia ORA-20000 su UPDATE = dead code (trigger solo su INSERT) trigger BIM_PROJECTS
BR-ACC-006 ALTER SESSION NLS non ripristinato → landmine sul connection pool WRKACC_*
BR-STK-025/009 STK_ADDITEMMOVE può portare la giacenza negativa; DateMove ignorata (MOVE_DATE=SYSDATE) Stock DAL / proc
BR-ACC-019 Discrepanza codice↔DB su WRKACC_CLOSESAL (param PSTATUS) WorkAccounting DAL
BR-GLB-018 Unicità nome/tenant solo-UI: nessun UNIQUE su GLOBAL_OBJECTS.NAME → duplicati inseribili via remoting/bulk RPS_GETMOBJECTBYCODEANDTNT / catalogo
BR-GLB-007 Trigger code-gen con COUNT/MAX(ID_OBJ) non concorrenza-safe (race su bulk) + doppio incremento COUNT trigger GLOBAL_OBJECTS_INSERT
BR-GLB-009 RPS_UPDATEMOBJECTSSTATUS: INSERT storia incondizionato, chiusura condizionata → righe ENDDATE IS NULL multiple ri-applicando lo stesso stato RPS_UPDATEMOBJECTSSTATUS

🟡 Debito architetturale

  • Nessun test automatico né CI (TD-004): nessuna rete di sicurezza per la migrazione net8 (*XNET) in corso.
  • Deploy senza orchestratore committato (TD-003): ConnectionsService + drop deploy-time.
  • ASMX legacy (TD-005) e stack auth duale (TD-001, ORA_ASPNET_* + OpenIddict).
  • Pattern ripetuti (candidati a refactoring condiviso): WHEN OTHERS che inghiotte l'eccezione; full-replace dei figli su update; PRP_MANAGEENTITY come upsert generico onnipresente.

Sovrapposizioni di dominio (tassonomia)

  • Document ↔ ECM: stesso DocCenter / DOCS_* (BR-DOC-017 ≡ BR-ECM-019).
  • Book ≡ Booking: stesso sottosistema BOOK_*.

Ogni voce ha evidenza file:riga/oggetto DB nelle rispettive pagine BR-* e nei report docs/_evidence/.