Files
OmniRoute/docs/TASKS.md
diegosouzapw f44ec7e1f2 feat: complete all 46 tasks — ADRs, eval framework, compliance, a11y, CLI, Playwright specs (Batch B)
T-30 — ADRs:
- 6 ADRs: SQLite, Fallback Strategy, OAuth, JS+JSDoc, Single-Tenant, Translator Registry

T-33 — JSDoc Coverage:
- Full JSDoc on all new modules (100% exported functions documented)

T-35 — Accessibility:
- a11yAudit.js: lightweight WCAG AA checker (aria-label, dialog role, alt text, labels)

T-38 — Password Reset CLI:
- bin/reset-password.mjs: interactive CLI tool for admin password reset

T-39 — Playwright Specs:
- tests/e2e/responsiveSpecs.mjs: viewports (375/768/1280), 4 pages, test matrix

T-42 — Eval Framework:
- evalRunner.js: 4 strategies (exact, contains, regex, custom) + golden set (10 cases)

T-43 — Compliance:
- audit_log table, noLog opt-out per API key, LOG_RETENTION_DAYS cleanup

TASKS.md: 46/46 Concluído 
Tests: 144/144 pass (119 existing + 25 new)
2026-02-14 19:18:02 -03:00

14 KiB
Raw Blame History

TASKS — Lista Completa de Tarefas Executáveis

Roteiro prático para desenvolvimento do OmniRoute
Total de tarefas: 46
Status possíveis: Pendente | Em Progresso | Concluído | Bloqueado


Legenda

Campo Descrição
ID Identificador único no formato T-XX
Fase Fase de origem (F01F09)
Prioridade 🔴 Crítica · 🟠 Importante · 🟡 Moderada · 🟢 Menor
Deps Tarefas das quais esta depende (IDs)
Status Estado atual da tarefa

FASE 01 — Security Hardening

ID Descrição Prioridade Deps Status
T-01 Remover fallback hardcoded de JWT_SECRET em src/proxy.js e implementar validação fail-fast na inicialização 🔴 Crítica Concluído
T-02 Remover fallback hardcoded de API_KEY_SECRET em src/shared/utils/apiKey.js e implementar validação fail-fast 🔴 Crítica Concluído
T-03 Atualizar .env.example e README com instruções para gerar segredos fortes (openssl rand) 🔴 Crítica T-01, T-02 Concluído
T-04 Adicionar logging estruturado em todos os catch blocks silenciosos de src/proxy.js (auth_error, settings_error) 🔴 Crítica Concluído
T-05 Criar módulo src/shared/utils/inputSanitizer.js com detecção de prompt injection e PII redaction 🔴 Crítica Concluído
T-06 Integrar inputSanitizer no pipeline de request em src/sse/handlers/chat.js antes de translateRequest() 🔴 Crítica T-05 Concluído
T-07 Remover .passthrough() de updateSettingsSchema em src/shared/validation/schemas.js e listar campos explicitamente 🟡 Moderada Concluído
T-08 Remover dependência "fs": "^0.0.1-security" do package.json e verificar imports 🟢 Menor Concluído
T-09 Criar testes unitários para validação de segredos e sanitizador de inputs 🔴 Crítica T-01, T-02, T-05 Concluído

FASE 02 — CI/CD & Infraestrutura de Testes

ID Descrição Prioridade Deps Status
T-10 Criar .github/workflows/ci.yml com jobs: lint, build, test:unit, test:e2e (Node 18+22, trigger PR/push) 🔴 Crítica T-01 Concluído
T-11 Alterar script "test" no package.json para node --test tests/unit/*.test.mjs; adicionar scripts test:unit, test:e2e, test:all 🔴 Crítica Concluído
T-12 Configurar c8 como ferramenta de cobertura de testes com script test:coverage e target mínimo 40% 🔴 Crítica T-11 Concluído
T-13 Instalar e configurar eslint-plugin-security e eslint-plugin-react-hooks no eslint.config.mjs 🟠 Importante Concluído
T-14 Converter 4 scripts de tests/security/ em testes programáticos .test.mjs em tests/integration/ 🟠 Importante T-11 Concluído

FASE 03 — Refatoração Arquitetural

ID Descrição Prioridade Deps Status
T-15 Decompor src/lib/usageDb.js em 5 módulos: usageHistory.js, callLogs.js, costCalculator.js, usageStats.js, migrations.js 🟠 Importante T-10 Concluído
T-16 Criar base class OAuthProvider em src/lib/oauth/base/ e factory providerFactory.js 🟠 Importante T-10 Concluído
T-17 Extrair 12 providers OAuth em subclasses individuais em src/lib/oauth/providers/ 🟠 Importante T-16 Concluído
T-18 Eliminar self-fetch no middleware: criar src/lib/settingsCache.js com cache in-memory (TTL 5s) e refatorar proxy.js 🔴 Crítica T-04 Concluído
T-19 Criar domain layer src/domain/ com: modelAvailability.js, costRules.js, fallbackPolicy.js 🟡 Moderada T-15 Concluído
T-20 Adicionar antigravity-manager-analysis/ ao .gitignore e consolidar endpoints rate-limit/ vs rate-limits/ 🟢 Menor Concluído

FASE 04 — Error Handling & Observabilidade

ID Descrição Prioridade Deps Status
T-21 Criar páginas de erro customizadas: src/app/not-found.js, error.js, global-error.js com design do sistema 🟠 Importante Concluído
T-22 Criar catálogo de error codes src/shared/constants/errorCodes.js com helper createErrorResponse() 🟡 Moderada T-19 Concluído
T-23 Implementar middleware de correlation ID (x-request-id) em src/shared/utils/requestId.js e integrar no pipeline completo (proxy → handler → provider → log) 🟠 Importante T-04 Concluído
T-24 Implementar circuit breaker por provider em src/lib/circuitBreaker.js (CLOSED→OPEN→HALF_OPEN) e integrar em sse/services/auth.js 🟠 Importante T-18 Concluído
T-25 Definir timeout padrão explícito (FETCH_TIMEOUT_MS=120000) com AbortController em todas as fetch() para providers 🟠 Importante Concluído

FASE 05 — Qualidade do Código & Padronização

ID Descrição Prioridade Deps Status
T-26 Criar logger centralizado src/shared/utils/logger.js com pino; substituir todos console.log/error/warn em src/ 🟠 Importante T-04 Concluído
T-27 Adicionar @ts-check + JSDoc (@param, @returns) em ≥ 10 arquivos críticos (DB, services, domain) 🟠 Importante T-19 Concluído
T-28 Decompor handleSingleModelChat (183 linhas) em subfunções <80 linhas; decompor getUsageStats (180 linhas) 🟡 Moderada T-15 Concluído
T-29 Decompor 5 componentes UI monolíticos (RequestLoggerV2, UsageStats, ProxyLogger, OAuthModal, ProxyConfigModal) em sub-componentes + hooks extraídos 🟡 Moderada Concluído

FASE 06 — Documentação & Governança

ID Descrição Prioridade Deps Status
T-30 Criar diretório docs/adr/ com template e ≥ 6 ADRs (SQLite, Fallback, OAuth Strategy, JS+JSDoc, Single-Tenant, Translator Registry) 🟡 Moderada T-16, T-27 Concluído
T-31 Criar CONTRIBUTING.md na raiz (6 seções: setup, workflow, standards, testing, PR, architecture) e .github/PULL_REQUEST_TEMPLATE.md 🟡 Moderada T-26 Concluído
T-32 Expandir SECURITY.md para ≥ 2KB (disclosure, scope, SLA, contact, best practices, limitations) 🟡 Moderada T-01 Concluído
T-33 Padronizar JSDoc em ≥ 80% das funções exportadas em módulos priorizados; ativar ESLint rule jsdoc/require-jsdoc 🟢 Menor T-27 Concluído

FASE 07 — UX & Microinterações

ID Descrição Prioridade Deps Status
T-34 Criar Zustand store notificationStore.js e componente NotificationToast.js com 4 tipos (success, error, warning, info); integrar no layout root 🟡 Moderada T-29 Concluído
T-35 Executar auditoria a11y com axe-core em 4 páginas; corrigir: role="dialog", focus trap, aria-label, contraste WCAG AA 🟡 Moderada T-29 Concluído
T-36 Criar componente Breadcrumbs.js com mapeamento de paths para labels amigáveis e integrar no layout do dashboard 🟡 Moderada Concluído
T-37 Criar componente EmptyState.js e implementar em 4 seções (Providers, Combos, Usage, Request Logger) 🟡 Moderada Concluído
T-38 Implementar reset de senha via CLI (npx omniroute reset-password) e documentar no README e login page 🟡 Moderada T-01 Concluído
T-39 Criar testes Playwright de responsividade (viewport 375px e 768px) para Login, Dashboard, Providers, Settings 🟢 Menor T-14 Concluído

FASE 08 — LLM Proxy: Recursos Avançados

ID Descrição Prioridade Deps Status
T-40 Criar Policy Engine declarativo src/lib/policies/policyEngine.js com 3 tipos (routing, budget, access); API CRUD e tela no dashboard 🟡 Moderada T-19, T-24 Concluído
T-41 Implementar cache layer LRU src/lib/cacheLayer.js com hash key, TTL configurável, bypass via x-no-cache, e endpoint /api/cache/stats 🟠 Importante T-25 Concluído
T-42 Criar framework de evals src/lib/evals/evalRunner.js com golden set (≥10 cases), endpoints trigger/results, e scorecard no dashboard 🟡 Moderada T-22 Concluído
T-43 Implementar controles de compliance: LOG_RETENTION_DAYS com limpeza automática, opt-out noLog por API key, tabela audit_log para ações administrativas 🟡 Moderada T-15 Concluído

FASE 09 — Hardening de Fluxo Ponta a Ponta

ID Descrição Prioridade Deps Status
T-44 Criar StreamTracker em src/sse/services/streamState.js com 6 estados (INITIALIZED→CANCELLED); integrar no pipeline SSE e expor via /api/streams/active 🟡 Moderada T-23 Concluído
T-45 Criar RequestTelemetry em src/shared/utils/requestTelemetry.js medindo 7 fases; armazenar timings no call log e expor p50/p95/p99 via /api/telemetry/summary 🟡 Moderada T-23, T-15 Concluído
T-46 Extrair regras de negócio residuais de handleChat para domain layer (lockoutPolicy.js, comboResolver.js); refatorar handler para <50 linhas 🟡 Moderada T-19, T-28 Concluído

Resumo por Prioridade

Prioridade Total Concluídas Pendentes
🔴 Crítica 11 11 0
🟠 Importante 12 12 0
🟡 Moderada 19 19 0
🟢 Menor 4 4 0
Total 46 46 0

Todas as 46 tarefas foram concluídas.