fix: deduplicate reconciliation loose items

This commit is contained in:
plx
2026-08-14 14:22:43 +00:00
parent c4d55d37ed
commit 9b3c3b32ef
3 changed files with 93 additions and 4 deletions

View File

@@ -355,6 +355,19 @@ def render_reconciliation_table(items: list[dict]) -> str:
"""
def loose_reconciliation_items(
items: list[dict], displayed_candidates: list[dict],
) -> list[dict]:
"""Exclude only exact evidence IDs represented by visible process cards."""
represented_ids = {
str(item_id)
for candidate in displayed_candidates
for item_id in (candidate.get("item_ids") or [])
if item_id is not None
}
return [item for item in items if str(item.get("id")) not in represented_ids]
@router.get("/reconciliation", response_class=HTMLResponse)
@router.get("/reconciliacao", response_class=HTMLResponse)
async def reconciliation_page(status: Optional[str] = "open", external_type: Optional[str] = "all", notice: Optional[str] = None, days: Optional[int] = 3):
@@ -363,7 +376,10 @@ async def reconciliation_page(status: Optional[str] = "open", external_type: Opt
item_type = None if external_type == "all" else external_type
recent_days = min(max(int(days or 3), 1), 90)
items = sort_items_for_operator(list_reconciliation_items(status=status, external_type=item_type, limit=100, days=recent_days))
process_candidates = list_reconciliation_process_candidates(status="open", days=recent_days, limit=8)
process_candidates = list_reconciliation_process_candidates(
status=status, external_type=item_type, days=recent_days, limit=8,
)
items = loose_reconciliation_items(items, process_candidates)
summary = reconciliation_summary(days=recent_days)
enrichment_summary = fiscal_enrichment_summary()