Issue: #332 (P1-P7) Date: 2026-03-30
The reconciliation issue display is hard to interpret: the Expected/Actual details table has no document attribution (P1-P2), aggregations are opaque (P3), the useful summary gets equal weight to the noisy table (P4), field names are LLM free text (P5), document ordering is inconsistent (P6), and list views lack reconciliation status indicators (P7).
Drop the details field entirely. The summary becomes the sole vehicle for communicating reconciliation findings.
Prompt changes (reconciliation.clj system prompt):
details array from the output formatSchema changes (schema/matching.clj):
:details from ReconciliationIssuedetails is harmless — Malli validates on write onlyUI changes (shared.clj):
[:details.issue-details ...] block from reconciliation-issuesMatch cards: sorted by type priority (Contract → PO → Invoice → GRN), then by date within type.
Prompt: add instruction for the LLM to reference documents in procurement-flow order in summaries.
New column: document.reconciliation_status (text, nullable). Values: null (no reconciliation), reconciled, incomplete, error.
Writer: reconciliation worker, after set-reconciliation!, iterates cluster documents, filters issues per document, computes status:
reconciledincomplete-coverage warnings → incompleteerrorReader: list view query reads the column, renders badge color (green/yellow/red).
src/com/getorcha/workers/ap/matching/reconciliation.clj — prompt changes, per-document status writersrc/com/getorcha/schema/matching.clj — remove :details from schemasrc/com/getorcha/app/http/documents/view/shared.clj — remove details table, match card orderingresources/migrations/ — new migration for reconciliation_status column