SPC: Cp/Cpk e limiti di controllo usano la sigma globale, non la within (MR-bar/d2) #19
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: media
FILE: src/backend/services/spc_service.py:88-106, :161-169
COSA: Cp = Pp·sqrt((n-1)/n): lo stesso indice due volte. Il docstring dice
sigma_within. I limiti della carta a valori individuali usano la sigma globale: una deriva allarga i limiti e non viene segnalata.INPUT: 13 valori intorno a 10.00 poi 12 intorno a 10.08, tolleranza 9.8–10.2 → limiti del codice 10.1718/9.9106, fuori controllo []; con MR-bar/1.128 → 10.0944/9.988, fuori controllo [5,17,24].
VERIFICATO: lettura di spc_service.py:88-106 (
stats.stdevper Cp,stats.pstdevper Pp) + script numerico del revisore.ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:22:52Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto A3MODIFICHE: src/backend/services/spc_service.py — (a) capability:
sigma_within = MRbar / 1.128(media delle escursioni mobili |x_i − x_{i−1}| nell'ordine cronologico in cui arrivano i valori); Cp e Cpk usano sigma_within; Pp e Ppk usano la deviazione standard campionaria complessiva (stats.stdev, n−1), nonpstdev. Se MRbar == 0 → Cp/Cpk None. (b) carta di controllo a valori individuali: UCL/LCL = media ± 3·sigma_within (= media ± 2.66·MRbar). Aggiorna docstring. Se il modello di risposta hastd_dev, resta la campionaria complessiva; aggiungistd_dev_withinsolo se il modello Pydantic lo consente senza rompere il frontend (campo opzionale).TEST: serie 13 valori ~10.00 + 12 valori ~10.08 (tol 9.8–10.2): Cp ≠ Pp, punti fuori controllo rilevati; serie costante → None; n<2 → None; unilaterale → solo Cpk. Adegua i valori attesi dei test SPC esistenti ricalcolandoli a mano nel test (formula esplicita), non copiando l'output.
NON TOCCARE: src/frontend/flask_app/static/js/spc-charts.js.
Soluzione
ESITO: fatto
COSA: Cp/Cpk da sigma within (MRbar/1.128, valori in ordine cronologico: verificato
order_by measured_at), Pp/Ppk dalla deviazione campionaria complessiva; UCL/LCL della carta a valori individuali = media ± 3·sigma within. Campo opzionalestd_dev_within. ⚠️ I Cp/Cpk mostrati cambiano rispetto a prima: era l'errore.COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1):7249cb8PROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).