DVR - Modello Rischi e Misure¶
Questa nota fissa il modello operativo da usare per trasformare la raccolta dati DVR in una base riusabile per:
- PDF raccolta dati
- DVR finale esteso
- DVR finale sintetico
- allegati per GOE
- schede attrezzatura
- tabelle misure di prevenzione e protezione
Non descrive ancora il codice. Congela il modello logico prima dello sviluppo.
Obiettivo¶
Il Compila DVR React va trattato come:
- raccolta dati strutturata
- non documento finale DVR
Il documento finale DVR deve invece essere costruito a partire da un layer intermedio di:
- rischi del caso
- misure del rischio
- attrezzature del caso
- misure puntuali delle attrezzature
Sorgenti usate¶
La struttura e' stata derivata dai file reali:
Tipi di rischio¶
Nei DVR reali le misure non hanno una sola forma. Vanno distinte in 3 pattern:
chapter- rischio di capitolo
- include tipicamente:
- individuazione rischi
- P/M/R
- misure attuate
- misure da osservare
equipment_family- prescrizioni generali per una famiglia di attrezzature
- puo' avere anche misure puntuali su singole attrezzature
equipment_item- misure puntuali per una attrezzatura concreta nel GOE
Entita' logiche¶
case_context¶
Contiene:
- azienda
- sedi
- organigramma sicurezza
- attivita'
- riferimenti documento
goe¶
Contiene:
- area / reparto / GOE
- note descrittive
mansione¶
Contiene:
- mansione
- GOE
- attivita' / compito
- note
- eventuali rischi associati descrittivi
attrezzatura_del_caso¶
Contiene:
- GOE
- famiglia attrezzatura
- nome attrezzatura
- marca
- modello
- tipo
- matricola
- note
case_risk¶
Contiene:
- rischio del caso
- GOE opzionale
- mansione opzionale
- attrezzatura opzionale
- descrizione contesto
- note valutazione
- P/M/R
- stato
misura_del_rischio¶
Contiene:
- misura attuata o da osservare
- testo
- responsabile
- scadenza
- periodicita'
- priorita'
- stato
- note
misura_attrezzatura¶
Contiene:
- testo misura
- responsabile
- scadenza
- periodicita'
- priorita'
- stato
- note
- collegamento alla singola attrezzatura del caso
Relazioni¶
Le relazioni sono:
- un
case_contextha moltigoe - un
goeha moltemansioni - un
goeha molteattrezzature_del_caso - un
case_contextha molticase_risk - un
case_riskha moltemisure_del_rischio - una
attrezzatura_del_casoha moltemisure_attrezzatura
Relazioni opzionali:
- un
case_riskpuo' riferirsi a ungoe - un
case_riskpuo' riferirsi a unamansione - un
case_riskpuo' riferirsi a unaattrezzatura_del_caso
Stati minimi¶
case_risk¶
bozzaconfermatonon_applicabile
misura_del_rischio e misura_attrezzatura¶
messa_in_attoda_attuareda_verificarenon_applicabile
Catalogo iniziale risk_code¶
I risk_code canonici iniziali sono:
illuminazione_aerazionepavimentazionipareti_soffitti_copertureporte_portonipercorsi_passaggisegnaletica_orizzontalescale_fissesoppalchiscaffalaturesuperfici_vetratemicroclimaspogliatoi_servizi_igienicirischio_incendioprimo_soccorsomacchine_generaleattrezzature_manualimezzi_semoventi_sollevamentolavori_quota_ponteggiimpianto_termicoimpianto_elettricommcposture_movimenti_ripetitivivideoterminalirumorevibrazioni_meccanichecampi_elettromagneticiroaagenti_chimiciagenti_cancerogeni_mutageniamiantoagenti_biologicidpisorveglianza_sanitariaformazione_informazione_addestramentocategorie_particolari_lavoratoristress_lavoro_correlatosegnaletica_sicurezzaposa_impianto_elettrico
Catalogo iniziale equipment_family_code¶
Le famiglie attrezzatura canoniche iniziali sono:
office_equipmentpersonal_computerportable_electric_toolsmanual_toolsforkliftlifting_equipmentwork_at_height_equipmentportable_laddersscaffoldinglifeline_systemsthermal_plant_equipmentelectrical_plant_equipmentgpl_storagepressure_equipmentfire_fighting_equipmentfirst_aid_equipment
Note funzionali sui risk_code¶
spogliatoi_servizi_igienici- sostituisce il nome piu' generico
spogliatoi_servizi - e' piu' aderente ai blocchi reali del DVR
macchine_generale- va usato come rischio umbrella per prescrizioni generali macchina
- non deve assorbire automaticamente tutte le misure delle singole attrezzature
lavori_quota_ponteggi- per ora resta un unico
risk_code - va considerato candidato a futuro split in:
lavori_in_quotaponteggi_opere_provvisionalilinee_vita_anticaduta
dpi- resta un capitolo trasversale
- non sostituisce i rischi primari
categorie_particolari_lavoratori- semanticamente copre differenze individuali, genere, provenienza, eta' e fragilita'
- il nome puo' restare invariato nel primo sviluppo
posa_impianto_elettrico- va considerato un rischio di
attivita_specifica - non un rischio universale di tutti i DVR
Mappa equipment_family_code -> risk_code¶
office_equipmentimpianto_elettricovideoterminalipersonal_computervideoterminaliimpianto_elettricomicroclimailluminazione_aerazioneportable_electric_toolsmacchine_generaleattrezzature_manualiimpianto_elettricorumorevibrazioni_meccanichemanual_toolsattrezzature_manualiposture_movimenti_ripetitivimmcforkliftmezzi_semoventi_sollevamentorumorevibrazioni_meccanicherischio_incendiolifting_equipmentmezzi_semoventi_sollevamentomacchine_generalelavori_quota_ponteggiwork_at_height_equipmentlavori_quota_ponteggidpiportable_ladderslavori_quota_ponteggiscaffoldinglavori_quota_ponteggilifeline_systemslavori_quota_ponteggidpithermal_plant_equipmentimpianto_termicorischio_incendioagenti_chimicielectrical_plant_equipmentimpianto_elettricoposa_impianto_elettricocampi_elettromagneticigpl_storagerischio_incendioagenti_chimicipressure_equipmentmacchine_generalerischio_incendiofire_fighting_equipmentrischio_incendiosegnaletica_sicurezzafirst_aid_equipmentprimo_soccorso
Note funzionali su equipment_family_code¶
personal_computer- va usato per postazioni VDT vere e proprie
office_equipment- va usato per stampanti, multifunzione, fax, distruggi documenti e piccole macchine da ufficio
portable_electric_toolsemanual_tools- devono restare separati
forklift- copre il carrello elevatore
- non va confuso con
lifting_equipment lifting_equipment- copre paranchi, gruette e apparecchi di sollevamento dedicati
work_at_height_equipment,portable_ladders,scaffolding,lifeline_systems- la separazione e' confermata
electrical_plant_equipment- copre componenti impianto, quadri, linee e distribuzione
- non utensili elettrici portatili
gpl_storage- e' mantenuto come nome aderente ai file reali
pressure_equipment- resta valido anche se usato in pochi casi
fire_fighting_equipment- confermato
first_aid_equipment- confermato
Famiglie candidate future, ma non necessarie nel primo sviluppo:
warehouse_handling_equipment- per transpallet e mezzi minori di movimentazione
battery_charging_area- utile dove esiste un'area ricarica batterie strutturata
portable_fire_extinguishers- eventuale sottofamiglia futura di
fire_fighting_equipment
Sezione DVR -> entita' generate¶
| Sezione DVR | case_context |
goe |
mansione |
attrezzatura_del_caso |
case_risk |
misura_del_rischio |
misura_attrezzatura |
|---|---|---|---|---|---|---|---|
anagrafica_azienda |
si' | no | no | no | no | no | no |
organizzazione_sicurezza |
si' | no | no | no | no | no | no |
attivita_processo |
si' | si' | no | no | no | no | no |
mansioni_rischi_speciali |
no | no | si' | no | no | no | no |
attrezzature_personale |
no | no | no | si' | no | no | no |
ambienti_servizi |
no | no | no | no | no | no | no |
luoghi_lavoro |
no | no | no | no | si' | si' | no |
emergenze_primo_soccorso |
no | no | no | no | si' | si' | no |
macchine_attrezzature_impianti |
no | no | no | no | si' | si' | no |
ergonomia_agenti_fisici |
no | no | no | no | si' | si' | no |
agenti_chimici_biologici |
no | no | no | no | si' | si' | no |
dpi_sorveglianza_formazione |
no | no | no | no | si' | si' | no |
rischi_trasversali_documentazione |
no | no | no | no | si' | si' | no |
piano_miglioramento_firme |
no | no | no | no | no | no | no |
Mapping unico Compila -> entita'¶
| Sezione | Blocco | Entita' generate | risk_code |
Note |
|---|---|---|---|---|
anagrafica_azienda |
dati azienda | case_context |
— | anagrafica, sedi, riferimenti, orari |
organizzazione_sicurezza |
ruoli sicurezza | case_context |
— | datore lavoro, RSPP/ASPP, RLS, medici, addetti |
attivita_processo |
descrizione attivita' | case_context |
— | descrizione attivita' e processo |
attivita_processo |
aree_goe_reparti[] |
goe |
— | qui nasce il catalogo GOE del caso |
attivita_processo |
lavorazioni/interferenze | case_context |
— | supporto contesto, non rischio diretto |
mansioni_rischi_speciali |
mansioni[] |
mansione |
— | genera le mansioni con riferimento GOE |
mansioni_rischi_speciali |
rischi_associati[] |
supporto mansione |
— | non genera ancora case_risk, arricchisce le mansioni |
attrezzature_personale |
macchine_rischio_specifico[] |
attrezzatura_del_caso |
— | genera schede attrezzatura concrete |
attrezzature_personale |
componenti_sicurezza[] |
attrezzatura_del_caso |
— | sempre attrezzatura concreta |
attrezzature_personale |
elenco_soci_dipendenti[] |
case_context |
— | supporto persone / VDT / mansioni |
ambienti_servizi |
blocchi descrittivi | supporto contesto | — | utile per luoghi_lavoro, ma non genera entita' autonome |
luoghi_lavoro |
illuminazione e aerazione | case_risk, misura_del_rischio |
illuminazione_aerazione |
P/M/R + misure attuate/osservare |
luoghi_lavoro |
pavimentazioni | case_risk, misura_del_rischio |
pavimentazioni |
idem |
luoghi_lavoro |
pareti/soffitti/coperture | case_risk, misura_del_rischio |
pareti_soffitti_coperture |
idem |
luoghi_lavoro |
porte e portoni | case_risk, misura_del_rischio |
porte_portoni |
idem |
luoghi_lavoro |
percorsi e passaggi | case_risk, misura_del_rischio |
percorsi_passaggi |
idem |
luoghi_lavoro |
segnaletica orizzontale | case_risk, misura_del_rischio |
segnaletica_orizzontale |
idem |
luoghi_lavoro |
scale fisse | case_risk, misura_del_rischio |
scale_fisse |
idem |
luoghi_lavoro |
soppalchi | case_risk, misura_del_rischio |
soppalchi |
idem |
luoghi_lavoro |
scaffalature | case_risk, misura_del_rischio |
scaffalature |
idem |
luoghi_lavoro |
superfici vetrate | case_risk, misura_del_rischio |
superfici_vetrate |
idem |
luoghi_lavoro |
microclima | case_risk, misura_del_rischio |
microclima |
idem |
luoghi_lavoro |
spogliatoi/servizi | case_risk, misura_del_rischio |
spogliatoi_servizi_igienici |
idem |
emergenze_primo_soccorso |
prevenzione incendi | case_risk, misura_del_rischio |
rischio_incendio |
capitolo incendio |
emergenze_primo_soccorso |
primo soccorso | case_risk, misura_del_rischio |
primo_soccorso |
capitolo pronto soccorso |
emergenze_primo_soccorso |
addetti e dotazioni | supporto case_context / case_risk |
— | arricchimento, non nuovo rischio |
macchine_attrezzature_impianti |
mezzi semoventi | case_risk, misura_del_rischio |
mezzi_semoventi_sollevamento |
puo' poi collegarsi a attrezzature concrete |
macchine_attrezzature_impianti |
apparecchi a pressione | case_risk, misura_del_rischio |
macchine_generale |
eventuale famiglia pressure_equipment a supporto |
macchine_attrezzature_impianti |
apparecchi di sollevamento | case_risk, misura_del_rischio |
mezzi_semoventi_sollevamento |
idem |
macchine_attrezzature_impianti |
scale/lavori in quota | case_risk, misura_del_rischio |
lavori_quota_ponteggi |
candidato split futuro |
macchine_attrezzature_impianti |
impianto termico | case_risk, misura_del_rischio |
impianto_termico |
capitolo impianto |
macchine_attrezzature_impianti |
impianto elettrico | case_risk, misura_del_rischio |
impianto_elettrico |
capitolo impianto |
macchine_attrezzature_impianti |
posa impianto elettrico | case_risk, misura_del_rischio |
posa_impianto_elettrico |
attivita' specifica |
ergonomia_agenti_fisici |
MMC | case_risk, misura_del_rischio |
mmc |
capitolo rischio |
ergonomia_agenti_fisici |
posture/movimenti | case_risk, misura_del_rischio |
posture_movimenti_ripetitivi |
capitolo rischio |
ergonomia_agenti_fisici |
videoterminali | case_risk, misura_del_rischio |
videoterminali |
usa anche supporto attrezzature/personale |
ergonomia_agenti_fisici |
rumore | case_risk, misura_del_rischio |
rumore |
capitolo rischio |
ergonomia_agenti_fisici |
vibrazioni | case_risk, misura_del_rischio |
vibrazioni_meccaniche |
capitolo rischio |
ergonomia_agenti_fisici |
campi elettromagnetici | case_risk, misura_del_rischio |
campi_elettromagnetici |
capitolo rischio |
ergonomia_agenti_fisici |
ROA | case_risk, misura_del_rischio |
roa |
capitolo rischio |
agenti_chimici_biologici |
agenti chimici | case_risk, misura_del_rischio |
agenti_chimici |
capitolo rischio |
agenti_chimici_biologici |
cancerogeni/mutageni | case_risk, misura_del_rischio |
agenti_cancerogeni_mutageni |
capitolo rischio |
agenti_chimici_biologici |
amianto | case_risk, misura_del_rischio |
amianto |
capitolo rischio |
agenti_chimici_biologici |
agenti biologici | case_risk, misura_del_rischio |
agenti_biologici |
capitolo rischio |
dpi_sorveglianza_formazione |
DPI | case_risk, misura_del_rischio |
dpi |
capitolo trasversale |
dpi_sorveglianza_formazione |
sorveglianza sanitaria | case_risk, misura_del_rischio |
sorveglianza_sanitaria |
capitolo trasversale |
dpi_sorveglianza_formazione |
formazione/info/addestramento | case_risk, misura_del_rischio |
formazione_informazione_addestramento |
capitolo trasversale |
rischi_trasversali_documentazione |
categorie particolari | case_risk, misura_del_rischio |
categorie_particolari_lavoratori |
capitolo trasversale |
rischi_trasversali_documentazione |
stress lavoro correlato | case_risk, misura_del_rischio |
stress_lavoro_correlato |
capitolo trasversale |
rischi_trasversali_documentazione |
segnaletica sicurezza | case_risk, misura_del_rischio |
segnaletica_sicurezza |
capitolo trasversale |
piano_miglioramento_firme |
chiusura/firme | output finale | — | non genera entita' del modello rischio |
Regole di trasformazione del mapping¶
case_context- nasce dalle prime 3 sezioni piu' alcune liste di persone
goe- nasce solo da
attivita_processo mansione- nasce da
mansioni_rischi_speciali attrezzatura_del_caso- nasce da
attrezzature_personale case_risk- nasce solo dai capitoli rischio veri
misura_del_rischio- nasce dai blocchi
misure attuate / da osservare misura_attrezzatura- nasce solo quando la prescrizione e' riferita a una attrezzatura concreta in un GOE concreto
Regole di generazione¶
Quando nasce un case_risk¶
Un case_risk nasce:
- in modo esplicito dal capitolo di rischio compilato
- in modo automatico per i capitoli strutturali, ma in stato
bozza - in modo suggerito da attrezzature o famiglie tecniche, senza creazione obbligatoria
Quando nasce una misura_del_rischio¶
Una misura_del_rischio nasce:
- da misure standard del catalogo rischio
- oppure da misure specifiche scritte per il caso
Quando nasce una attrezzatura_del_caso¶
Nasce ogni volta che una attrezzatura concreta viene censita nel compila, con:
- GOE
- famiglia
- nome
- dettagli identificativi disponibili
Quando nasce una misura_attrezzatura¶
Nasce quando viene definita una prescrizione puntuale riferita a:
- una attrezzatura concreta
- in un GOE concreto
Regola GOE¶
- un
case_riskpuo' averegoe_riferimento - una
attrezzatura_del_casodeve averegoe_riferimento - una
misura_attrezzaturaeredita il GOE dalla sua attrezzatura
Regola mansione¶
La mansione:
- non crea automaticamente una foresta di rischi
- serve per contestualizzare il rischio
- serve per associare esposizioni e contesto operativo
Pipeline end-to-end¶
La pipeline corretta e':
Compila raccolta datinormalizzazionePDF raccolta daticonsolidamento rischidocumento finale DVR
Quindi:
- non
Compila -> DVR finale diretto - ma
Compila -> modello intermedio -> vari documenti finali
Output riusabili¶
Con questo modello si possono generare:
- raccolta dati PDF
- DVR finale esteso
- DVR finale sintetico
- allegato rischi per GOE
- allegato attrezzature
- tabelle misure di prevenzione e protezione
Decisione operativa¶
Prima del codice vanno considerati congelati:
risk_codeequipment_family_code- regole di generazione
- mappa sezione -> entita' generate
Da qui in poi si puo' passare al modello dati o al mapping del Compila senza riaprire la logica di base.
DDL logico proposto¶
dvr_goe¶
Scopo: elenco GOE del caso.
Campi:
id- PK
- bigint
case_id- FK ->
dvr_case.id - not null
- indexed
code- varchar(64)
- not null
name- varchar(255)
- not null
description- text
- null
notes- text
- null
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Indici e vincoli:
- unique:
(case_id, code) - index:
(case_id, sort_order)
dvr_mansione¶
Scopo: mansioni del caso.
Campi:
id- PK
case_id- FK ->
dvr_case.id - not null
- indexed
goe_id- FK ->
dvr_goe.id - null
- indexed
job_title- varchar(255)
- not null
task_description- text
- null
required_skills- text
- null
required_experience- text
- null
notes- text
- null
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Indici:
(case_id, goe_id)(case_id, sort_order)
dvr_attrezzatura¶
Scopo: attrezzature concrete del caso.
Campi:
id- PK
case_id- FK ->
dvr_case.id - not null
- indexed
goe_id- FK ->
dvr_goe.id - null
- indexed
equipment_family_code- varchar(64)
- not null
- indexed
equipment_name- varchar(255)
- not null
brand- varchar(255)
- null
model- varchar(255)
- null
equipment_type- varchar(255)
- null
serial_number- varchar(255)
- null
notes- text
- null
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Indici:
(case_id, goe_id)(case_id, equipment_family_code)(case_id, sort_order)
dvr_case_risk¶
Scopo: rischio istanziato nel caso.
Campi:
id- PK
case_id- FK ->
dvr_case.id - not null
- indexed
risk_code- varchar(64)
- not null
- indexed
primary_section_code- varchar(64)
- not null
goe_id- FK ->
dvr_goe.id - null
- indexed
mansione_id- FK ->
dvr_mansione.id - null
- indexed
attrezzatura_id- FK ->
dvr_attrezzatura.id - null
- indexed
context_description- text
- null
evaluation_notes- text
- null
p_value- smallint
- null
m_value- smallint
- null
r_value- smallint
- null
status- varchar(32)
- not null
- indexed
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Valori consigliati status:
bozzaconfermatonon_applicabile
Indici:
(case_id, risk_code)(case_id, primary_section_code)(case_id, status)
Nota:
- meglio non introdurre subito una unique aggressiva combinata su
case_id,risk_code,goe_id,mansione_id,attrezzatura_id
dvr_risk_measure¶
Scopo: misure del rischio di capitolo.
Campi:
id- PK
case_risk_id- FK ->
dvr_case_risk.id - not null
- indexed
measure_kind- varchar(32)
- not null
- indexed
measure_text- text
- not null
responsabile- varchar(255)
- null
due_date- date
- null
periodicity- varchar(128)
- null
priority- varchar(32)
- null
status- varchar(32)
- not null
- indexed
notes- text
- null
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Valori consigliati:
measure_kindattuatada_osservarestatusmessa_in_attoda_attuareda_verificarenon_applicabile
Indici:
(case_risk_id, measure_kind)(case_risk_id, sort_order)
dvr_equipment_measure¶
Scopo: misure puntuali della singola attrezzatura.
Campi:
id- PK
attrezzatura_id- FK ->
dvr_attrezzatura.id - not null
- indexed
risk_code- varchar(64)
- null
- indexed
measure_text- text
- not null
responsabile- varchar(255)
- null
due_date- date
- null
periodicity- varchar(128)
- null
priority- varchar(32)
- null
status- varchar(32)
- not null
- indexed
notes- text
- null
sort_order- integer
- not null
- default
0 created_at- datetime
- not null
updated_at- datetime
- not null
Indici:
(attrezzatura_id, sort_order)(attrezzatura_id, risk_code)
Scelte di modellazione consigliate¶
risk_codeeequipment_family_code- varchar semplici nel primo sviluppo
- non FK obbligatorie a cataloghi master DB
responsabile,priority,periodicity- testo semplice nel primo sviluppo
due_datedate, nondatetimecreated_ateupdated_at- presenti su tutte le nuove tabelle
Cose da non fare nel primo sviluppo¶
- enum DB rigidi
- cataloghi master con FK obbligatorie
- unique troppo aggressive su
dvr_case_risk - soft delete ovunque
Ordine implementativo consigliato¶
dvr_goedvr_mansionedvr_attrezzaturadvr_case_riskdvr_risk_measuredvr_equipment_measure
Strategia di persistenza consigliata¶
La scelta consigliata e':
DvrSectionInstanceresta la fonte di raccolta dati raw- le tabelle nuove vengono alimentate da una normalizzazione intermedia
Quindi:
- source of capture = JSON delle sezioni
- source of reporting/domain = tabelle normalizzate
Questa strategia evita:
- scrittura diretta da UI su molte tabelle
- coupling forte tra Compila e modello dominio
- rotture del Compila durante l'evoluzione del modello
Specifica della normalizzazione¶
normalize_case_structure(case_id)¶
Scopo:
- materializzare la struttura base del caso
Input:
anagrafica_aziendaorganizzazione_sicurezzaattivita_processomansioni_rischi_specialiattrezzature_personale
Output:
case_contextdvr_goedvr_mansionedvr_attrezzatura
Regole:
- legge le sezioni attuali del case
- riallinea i GOE dal blocco
aree_goe_reparti[] - riallinea le mansioni dal blocco
mansioni[] - riallinea le attrezzature dai blocchi:
macchine_rischio_specifico[]componenti_sicurezza[]- risolve i riferimenti
goe_riferimentosui GOE del case - aggiorna
case_contextcon i dati aggregati delle prime sezioni
Caratteristiche:
- idempotente
- per-case
- ricostruisce il sottoinsieme struttura
normalize_case_risks(case_id)¶
Scopo:
- materializzare i rischi di capitolo
Input:
luoghi_lavoroemergenze_primo_soccorsomacchine_attrezzature_impiantiergonomia_agenti_fisiciagenti_chimici_biologicidpi_sorveglianza_formazionerischi_trasversali_documentazione
Output:
dvr_case_riskdvr_risk_measure
Regole:
- per ogni blocco rischio crea o riallinea un
dvr_case_risk - valorizza:
risk_codeprimary_section_codecontext_descriptionevaluation_notesp_valuem_valuer_valuestatus- crea o riallinea le misure:
attuatada_osservare
Caratteristiche:
- non genera ancora
dvr_equipment_measure - non usa ancora automazioni pesanti da famiglie attrezzatura
- legge solo i capitoli espliciti
normalize_case_equipment_measures(case_id)¶
Scopo:
- materializzare le misure puntuali delle attrezzature
Input:
- sezioni raw con prescrizioni macchina specifiche
dvr_attrezzaturagia' normalizzate
Output:
dvr_equipment_measure
Regole:
- cerca blocchi in cui la misura e' riferita a:
- una attrezzatura concreta
- in un GOE concreto
- risolve la riga
dvr_attrezzatura - crea le relative
dvr_equipment_measure
Nota:
- questa funzione va tenuta per terza
- e' la piu' delicata
- richiede matching piu' preciso
normalize_case_all(case_id)¶
Scopo:
- orchestrare tutta la normalizzazione del case
Ordine:
normalize_case_structure(case_id)normalize_case_risks(case_id)normalize_case_equipment_measures(case_id)opzionale nel primo slice
Uso:
- consolidamento del case
- preparazione raccolta dati
- preparazione futuro DVR finale
Trigger consigliati¶
La normalizzazione va attivata su eventi stabili, non a ogni keystroke.
Trigger consigliati:
Salva sezioneSalva tuttoProtocolla raccolta datiAnteprima raccolta datise serve forzare coerenza- in futuro
Genera DVR finale
Ordine prudente per il primo slice:
- almeno
Salva tutto Protocolla raccolta dati
Strategia di aggiornamento¶
La strategia consigliata e':
- replace per sottoinsieme
- non merge incrementale troppo furbo
Esempi:
- normalizzazione GOE:
- riallinea solo
dvr_goedel case - normalizzazione mansioni:
- riallinea solo
dvr_mansionedel case - normalizzazione rischi:
- riallinea solo i
dvr_case_riskprovenienti dai capitoli attuali
Vantaggi:
- prevedibile
- debuggabile
- rigenerabile
Regole di identificazione logica¶
Le chiavi logiche applicative consigliate sono:
- GOE
case_id + code- mansione
case_id + job_title + goe- attrezzatura
case_id + equipment_name + goe + family- case risk
case_id + risk_code + primary_section_code + goe? + mansione? + attrezzatura?
Non e' necessario trasformarle tutte subito in unique DB rigide, ma devono guidare la normalizzazione.
Errori da gestire¶
La normalizzazione deve degradare in modo controllato su:
goe_riferimentomancanteequipment_family_codenon valorizzato- blocchi vuoti
- valori duplicati
- riferimenti a GOE non piu' esistenti
In questi casi:
- non deve interrompere il flusso
- deve loggare o segnalare
- deve saltare o degradare con regole semplici
Rollout consigliato¶
Lo sviluppo del normalizer va diviso in 3 slice:
normalize_case_structurenormalize_case_risksnormalize_case_equipment_measures
Questa e' la sequenza consigliata.