teqo/eslint-legacy-ignores.mjs
Francisco Ignácio Fontoura Solla f9cd1df7b2 feat: AI chat 'Sollinha' — campaign data assistant (v1 read-only)
- Streaming AI endpoint at /campanha/api/ai-chat with DeepSeek V4 Flash
- 8 tools: calculate, getMunicipalityVotes, getTopDeputies, getDobradinhas,
  getMunicipalityOverview, getLeaderships, getOrganizations, searchEntities
- In-memory rate limiter (50 msgs / 15 min per user)
- Desktop: resizable right sidebar via react-resizable-panels
- Mobile: full-screen Drawer opened by FAB (2/3 size of quick-actions FAB)
- Markdown rendering with react-markdown + remark-gfm (tables, bold, lists)
- Session-bound context (clean slate each open)
- Auth via existing campaign-token cookie, tools respect user RBAC
- Architecture doc: docs/plans/ai-chat-sollinha.md
- E2E tests: campaignAiChat.e2e.spec.ts (mocked endpoint)
2026-08-04 06:17:31 -03:00

51 lines
2 KiB
JavaScript

// Files that predate a naming/syntax convention and are deliberately exempt
// from it. Consumed by eslint.config.mjs; tests/unit/codebaseConventions
// asserts every entry still exists so renames/moves can't leave zombie
// entries behind (that is how the campaign-logo.tsx exemption silently broke
// when the file moved to components/campaign/shell/ during Pass 2 W2).
// Predate the PascalCase component filename convention.
export const legacyComponentFilenameIgnores = [
'src/components/campaign/shell/campaign-logo.tsx',
'src/components/socialIcons.tsx',
'src/components/socialLinks.tsx',
'src/components/ui/breadcrumb.tsx',
'src/components/ui/bubble.tsx',
'src/components/ui/button.tsx',
'src/components/ui/card.tsx',
'src/components/ui/combobox.tsx',
'src/components/ui/dialog.tsx',
'src/components/ui/field.tsx',
'src/components/ui/input-group.tsx',
'src/components/ui/input.tsx',
'src/components/ui/label.tsx',
'src/components/ui/marker.tsx',
'src/components/ui/message.tsx',
'src/components/ui/native-select.tsx',
'src/components/ui/separator.tsx',
'src/components/ui/skeleton.tsx',
'src/components/ui/textarea.tsx',
'src/components/ui/tooltip.tsx',
]
// Predate the inline-named-function default-export convention for framework
// files. Entries are ESLint glob patterns, so `[` / `]` are escaped.
export const legacyFrameworkExportIgnores = [
'src/app/(payload)/admin/\\[\\[...segments\\]\\]/not-found.tsx',
'src/app/(payload)/admin/\\[\\[...segments\\]\\]/page.tsx',
'src/app/(payload)/layout.tsx',
]
// Predate the arrow-function component convention.
export const legacyComponentSyntaxIgnores = [
'src/components/StateSelect.tsx',
'src/components/ThemeProvider.tsx',
]
// Predate the camelCase filename convention for non-component modules.
export const legacyCamelCaseFilenameIgnores = [
'src/lib/schemas/campaign-login.ts',
'src/lib/schemas/petition-form.ts',
'src/lib/schemas/whatsapp-form.ts',
'tests/int/petition-page-layout.int.spec.ts',
]