mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-15 10:43:07 +00:00
B142 — format + impl plan deferred debts note
This commit is contained in:
parent
1841e722f7
commit
b931092320
6 changed files with 16 additions and 7 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue