feat(review): store a unit correction like the extraction – "Stk." as pcs - #100
Conversation
… pcs (#96) The review screen reads pcs as "Stk." (#77), so clerks type "Stk." – which was stored as written and exported as a non-canonical unit. A unit correction now folds known spellings exactly like the AI service's canonical_unit (parity test against its table); unknown units stay as typed. The audit event keeps what was typed next to what was stored. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Deployment failed for project requestflow-ai with the following error: Learn More: https://vercel.com/doc-edit?upgradeToPro=build-rate-limit |
…arser error, described hints - unit.ts/test: "same spellings and normalisation steps", not "exactly"; exotic control or line-break characters may differ from Python - parity test fails with a clear message when the Python table is reformatted - the correction field is described by its hints (aria-describedby); the unit hint says that other units stay as typed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Deployment failed for project requestflow with the following error: Learn More: https://vercel.com/doc-edit?upgradeToPro=build-rate-limit |
Frischer Review (unabhängiger Subagent, liest nur, Stand
|
| # | Befund | Umsetzung |
|---|---|---|
| 1 | Normalisierung nicht exakt gleich | eb5e8c3: Die Wortwahl ist ehrlich – gleiche Schreibweisen und gleiche Normalisierungsschritte für das, was ein einzeiliges Feld enthalten kann; exotische Steuer- und Zeilenumbruchzeichen können abweichen. Eine gemeinsame Fixture gibt es bewusst nicht: praktisch unerreichbar, und im schlimmsten Fall bleibt der Text wie getippt. |
| 2 | unverständlicher Fehler bei umformatierter Tabelle | eb5e8c3: Eine nicht passende Zeile wirft „unexpected line in _UNIT_SPELLINGS – adapt this parser: …“ |
| 3 | Speichern ohne Änderung korrigiert nicht-kanonische Werte | Gewollt: Die Einheit wird damit ERP-tauglich, und die Korrektur ist wie jede andere protokolliert. Unkorrigierte uncertain-Rohwerte ändert dieser PR nicht; das ist das Verhalten des KI-Dienstes (Vorschlag ohne Beleg bleibt roh zur Prüfung). Im PR unter Risiken genannt. |
| 4 | Hinweis nicht verknüpft | eb5e8c3: aria-describedby="unit-hint item-correction-hint" am Korrekturfeld; der Einheiten-Hinweis sagt jetzt auch „andere Einheiten bleiben, wie getippt“ |
Warum
Fixes #96 · Folge aus dem Review von #95 (Befund 5)
Arbeitsstand
pcs, andere Einheiten bleiben, wie sie getippt wurden. Das Audit behält, was getippt wurde.canonicalUnitim Review-Modul als Spiegel voncanonical_unitdes KI-Dienstes, samt Paritätstest gegen dessen Tabelle;correctFieldnutzt es fürunit; Audit mitentered; Korrekturfeld zeigt „Stk.“; Hinweis umformuliert; CHANGELOG.Was ist passiert (Klartext)
Auf der Prüfseite heißt die Einheit „Stk.“. Wer eine Einheit korrigierte und „Stk.“ eintippte, speicherte bisher genau diesen Text, und ans ERP ging dann „Stk.“ statt der vereinbarten Einheit „pcs“. Jetzt werden übliche Schreibweisen wie „Stk.“, „Stück“ oder „Meter“ beim Speichern genauso vereinheitlicht wie bei der automatischen Erkennung. Unbekannte Einheiten wie „Rolle“ bleiben unverändert. Im Protokoll steht weiterhin, was die Person eingetippt hat.
Plan-Pflicht (SYSTEM.md §4)
Geändert
src/features/review/unit.ts(+ Test, neu):canonicalUnit,UNIT_SPELLINGS– gleiche Schreibweisen und gleiche Normalisierung wieservices/ai/.../grounding/values.pysrc/features/review/review.ts:correctFieldvereinheitlichtunit; Audit-Datenentered, wenn getippt ≠ gespeichertsrc/app/requests/[id]/page.tsx,value-label.ts: Korrekturfeld zeigt „Stk.“, Hinweis umformuliert und peraria-describedbyverknüpfttests/integration/review.test.ts: Korrektur „ Stk. “ →pcs, „Rolle“ bleibt, „Stück“ danach ist kein neuer Eintrag; Audit; ERP-Payload nach Freigabe (buildQuoteRequest) enthältpcsCHANGELOG.mdNachweis (SYSTEM.md §11)
verify:changed: grün –unit.test.ts3/3 (zuerst rot: Modul fehlte),vitest src/features/review src/app/requests47/47;tsc,eslint,depcruise(Exit 0)verify: grün – CI-Lauf 36465904120 (Kopfeb5e8c3): Unit 281/281, Integration 147/147 gegen Postgres + S3, darunter der neue Einheiten-Test bis zum ERP-Payload; depcruise, build, auditverify:full/ E2E-Spec: nicht betroffen (Korrekturfluss unverändert; E2E prüft Mengen-Korrektur)Doku-Entscheidung (genau eine)
[Unreleased](sichtbares Feature oder Verhalten – im selben PR, nie „später"): Changed-Eintrag feat(review): accept "Stk." in a unit correction and store the ERP unit #96Entferntes oder Umbenanntes:
docs/+ README gegrept, Treffer bereinigt: nichts entferntDateigrößen und neue Bausteine (SYSTEM.md §7)
Dateien über 500 Zeilen im Diff (Ausnahmen: generierter Code, Lockfiles, Fixtures, Migrationen, Schemas, Ressourcen, Doku, Konfiguration):
Über 800 Zeilen mit neuer Fachlogik oder über 1000 Zeilen (P1/P2): nicht betroffen
Neue Shared-Komponente, Utility-Datei, Adapter oder fachlicher Service:
pcs,Stück,canonical); gefunden:canonical_unitim KI-Dienst (Python) und nur eine Anzeige-Abbildung invalue-label.ts. Keine TS-Normalisierung vorhanden, deshalb neu im Review-Modul als Spiegel der Python-Regel. Ein Paritätstest liest die Python-Tabelle, sodass eine Änderung auf einer Seite rot wird.Subagent-Einsätze
Risiken / offene Punkte
pcs– gewollt. Unkorrigierteuncertain-Rohwerte des KI-Dienstes bleiben unverändert.🤖 Generated with Claude Code