Closes #352 - POST /campanha/municipios/advisors aceita body de criação (name) na union; createMunicipalityAdvisorRecord cria campaignUser advisor (stub <slug>@criado.invalid, senha aleatória) e atribui ao município na mesma transação (cap 10 com rollback, lock municipality-advisors:{id}) - MunicipalityAdvisorCreateProvider compartilha o assessor criado entre linhas; opção "+ Criar assessor" e chip otimista com id temporário no control - advisorNameSchema unificado em primitives.ts; predicado de placeholder cobre @criado.invalid (reset de senha e célula de e-mail tratam stubs inline) - Destrava o spec e2e de municipios (falhas pré-existentes em main): key warning do fragment trailing de MunicipalityFilters; settle-wait da animação do Drawer no teste B136 |
||
|---|---|---|
| .. | ||
| design-refs | ||
| plans | ||
| research | ||
| AGENT-OPS.md | ||
| ARCHITECTURE.md | ||
| CHANGELOG-AGENTS.md | ||
| CUSTOMER.md | ||
| CUTOVER-MAIN-ONLY.md | ||
| GUARDRAILS.md | ||
| IMPROVE-APP-PLAN.md | ||
| IMPROVE-CODE-QUALITY-PLAN.md | ||
| PAYLOAD-REFERENCE.md | ||
| roadmap.md | ||
| TECH-DEBT.md | ||
| TESTING.md | ||