feat(parser): scaffold parsing pipeline skeleton and static facade #102

Merged
TimCane merged 2 commits from feat/89-parsing-pipeline-scaffold into main 2026-07-07 10:17:20 +01:00
TimCane commented 2026-07-07 10:12:26 +01:00 (Migrated from github.com)

Summary

  • stand up the BillSplitter.Domain/Parsing pipeline shape (Models, Engine) with no behaviour change
  • add scaffold models: LineType enum, ParseDecision (in-memory/test-only diagnostics), and move the Candidate record out of ReceiptParser
  • move the parse logic verbatim into an internal ReceiptParseEngine; ReceiptParser.Parse is now a thin static facade over it, so OcrWorker.cs:70 is untouched
  • describe the facade/engine pipeline shape in docs/06
  • remaining stage folders (Normalization, Classification, Rules, Validation) land with their Phase-A extraction PRs: git cannot track empty dirs and the analyzer forbids placeholder interfaces (CA1040)

Test plan

  • dotnet build clean, 0 warnings
  • dotnet test tests/BillSplitter.Tests green (85 passed); the 33-fixture corpus is byte-identical

Closes #89

## Summary - stand up the `BillSplitter.Domain/Parsing` pipeline shape (`Models`, `Engine`) with no behaviour change - add scaffold models: `LineType` enum, `ParseDecision` (in-memory/test-only diagnostics), and move the `Candidate` record out of `ReceiptParser` - move the parse logic verbatim into an internal `ReceiptParseEngine`; `ReceiptParser.Parse` is now a thin static facade over it, so `OcrWorker.cs:70` is untouched - describe the facade/engine pipeline shape in docs/06 - remaining stage folders (`Normalization`, `Classification`, `Rules`, `Validation`) land with their Phase-A extraction PRs: git cannot track empty dirs and the analyzer forbids placeholder interfaces (CA1040) ## Test plan - `dotnet build` clean, 0 warnings - `dotnet test tests/BillSplitter.Tests` green (85 passed); the 33-fixture corpus is byte-identical Closes #89
Sign in to join this conversation.
No description provided.