B142 — format + impl plan deferred debts note

This commit is contained in:
Cursor Agent 2026-08-02 23:09:01 +00:00
parent 1841e722f7
commit b931092320
No known key found for this signature in database
6 changed files with 16 additions and 7 deletions

View file

@ -25,6 +25,7 @@ flowchart LR
```
**Opções consideradas:**
- A) Estender `searchOnlyListOmnibox` com hooks — rejeitada (não escala; leadership/supporter já têm adapter próprio).
- B) Adapter `advisorOmnibox` + `advisorListFilters` espelhando lideranças (só dimensão município + busca) — **recomendada**.
- C) Facet server-side de municípios com assessor — rejeitada nesta fatia (busca tipada no índice de 435 já atende; página já carrega `loadMunicipalityPortfolioIndex`).
@ -67,3 +68,9 @@ flowchart LR
- [x] Aceite de produto da intenção ainda coberto
- [x] Invariantes AGENTS/engineering-standards
- [x] Testes de domínio previstos (unit/int) onde access/write paths mudam
## Débitos deferidos (simplify)
- Facet server-side restrito a municípios com assessor — gatilho: omnibox ruidosa com 435 seeds.
- Toggle municipality via parse round-trip — gatilho: segunda dimensão de filtro em assessores.
- Omnibox `municipality:` slice duplicado em apply/remove — gatilho: refactor cross-list omnibox.

View file

@ -5,14 +5,14 @@ import { getPayload } from 'payload'
import { AdvisorFilters } from '@/components/campaign/advisor/AdvisorFilters'
import { AdvisorsTable } from '@/components/campaign/advisor/AdvisorsTable'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import { getMunicipalityCatalogEntry } from '@/lib/municipalityCatalog'
import { hasAdvisorListActiveFilters } from '@/utilities/advisor/advisorListFilters'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { campaignPageMetadataFromCatalog } from '@/lib/campaignPageChrome'
import { getMunicipalityCatalogEntry } from '@/lib/municipalityCatalog'
import { hasAdvisorListActiveFilters } from '@/utilities/advisor/advisorListFilters'
import {
advisorListHrefForPage,
loadAdvisorListPageData,

View file

@ -4,6 +4,8 @@ import { useMemo, useState } from 'react'
import { CampaignListOmnibox } from '@/components/campaign/shared/CampaignListOmnibox'
import { useCampaignListFilterNavigation } from '@/components/campaign/shared/useCampaignListFilterNavigation'
import type { AdvisorFilterOption } from '@/utilities/advisor/advisorListFilters'
import { advisorListHrefForPage, type AdvisorListState } from '@/utilities/advisor/advisorListUrl'
import {
applyAdvisorOmniboxSuggestion,
buildAdvisorOmniboxChips,
@ -13,8 +15,6 @@ import {
removeAdvisorOmniboxChip,
type AdvisorOmniboxAction,
} from '@/utilities/advisor/advisorOmnibox'
import type { AdvisorFilterOption } from '@/utilities/advisor/advisorListFilters'
import { advisorListHrefForPage, type AdvisorListState } from '@/utilities/advisor/advisorListUrl'
export const AdvisorFilters = ({
state,

View file

@ -1,12 +1,12 @@
/**
* Advisor list filter affordances: município (carteira) toggles and clear.
*/
import { strictDecimalInteger } from '@/utilities/campaignListUrl'
import {
advisorListStateToRawParams,
parseAdvisorListParams,
type AdvisorListState,
} from '@/utilities/advisor/advisorListUrl'
import { strictDecimalInteger } from '@/utilities/campaignListUrl'
export type AdvisorFilterOption = {
value: string

View file

@ -33,7 +33,9 @@ describe.each(qAndPageParsers)('%s list parser (q + page)', (_name, parse) => {
})
it('parses repeatable municipality ids and drops invalid tokens', () => {
expect(parseAdvisorListParams({ municipality: ['12', 'bad', '0'] }).municipalities).toEqual([12])
expect(parseAdvisorListParams({ municipality: ['12', 'bad', '0'] }).municipalities).toEqual([
12,
])
expect(parseAdvisorListParams({ municipality: ['3', '7'] }).municipalities).toEqual([3, 7])
expect(parseAdvisorListParams({}).municipalities).toBeUndefined()
})

View file

@ -9,6 +9,7 @@ import {
buildActivityOmniboxChips,
clearActivityOmnibox,
} from '@/utilities/activityOmnibox'
import { parseActivityListParams } from '@/utilities/activityUi'
import { parseAdvisorListParams } from '@/utilities/advisor/advisorListUrl'
import {
applyAdvisorOmniboxSuggestion,
@ -16,7 +17,6 @@ import {
buildAdvisorOmniboxSuggestionSeeds,
filterAdvisorOmniboxSuggestions,
} from '@/utilities/advisor/advisorOmnibox'
import { parseActivityListParams } from '@/utilities/activityUi'
import { parseDemandListParams } from '@/utilities/demand/demandListUrl'
import {
applyDemandOmniboxSuggestion,