Files
warmbly/internal/api/handler
Matthew Meszaros 050d09c961 feat: add cross-pipeline deals search surface
Replace the client-side, 100-row-capped deals board as the default view
with a server-driven cross-pipeline table so totals stop lying at scale.

- POST /crm/deals/search: faceted filter body (query, status, pipeline,
  stage, owner, campaign, value range, close-date range), whitelisted
  sort, offset pagination, and Contact/Stage/campaign hydrated via JOIN.
- POST /crm/deals/summary: COUNT + SUM(value) per status and per stage
  over the same filter, with a mixed-currency guard, so header and board
  column totals are true server aggregates.
- DealsTable: cross-pipeline default view (infinite scroll, server
  filters/sort, honest summary stats) with a Table|Board toggle; the
  kanban stays as the single-pipeline working view.
- Deal attribution: campaign_id + source_mailbox_id columns + indexes
  (migration 000022) as groundwork for revenue lineage.
2026-06-06 19:42:20 +02:00
..
2026-06-01 04:23:00 +02:00
2026-06-02 15:54:29 +02:00
2026-01-29 05:59:04 +01:00
2026-06-01 04:23:00 +02:00
2026-06-01 04:23:00 +02:00
2026-06-01 16:56:24 +02:00
2026-06-01 04:23:00 +02:00
2026-06-01 04:23:00 +02:00
2026-01-29 05:59:04 +01:00
2026-06-04 11:49:55 +02:00
2026-06-03 16:47:53 +02:00
2026-06-01 04:23:00 +02:00
2026-06-01 05:53:49 +02:00
2026-06-01 04:23:00 +02:00
2026-01-17 14:11:14 +00:00
2026-06-01 04:23:00 +02:00
2026-06-01 04:23:00 +02:00