Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .claude/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# .claude/ — Documentação do Projeto

## Estrutura

```
.claude/
├── padroes/ # Guias de desenvolvimento por camada
│ ├── backend.md # Arquitetura, SOLID, testes, import/export
│ ├── frontend.md # Layout, componentes, hooks, Tailwind v3
│ └── ux-ui.md # 10 heurísticas de Nielsen, cores, tabelas
├── skills/ # Specs de implementação
│ ├── README.md # Índice com fluxo entre USs
│ ├── us/ # Uma spec por User Story (US-00 a US-07)
│ ├── qualidade/ # Qualidade e segurança (OWASP, testes, monitoramento)
│ └── readme-gen.md # Geração de READMEs
├── requisitos.md # Épico + User Stories originais
├── backlog.md # Tarefas futuras (fases 2-5 de qualidade)
└── README.md # Este arquivo
```

## Como contribuir

Seguir rigorosamente o [CONTRIBUTING.md](../.github/CONTRIBUTING.md):

- **Branch**: criar a partir de `dev` (`feature/*`, `fix/*`, `chore/*`)
- **Commits**: `tipo(escopo): descrição` — Conventional Commits
- **PR**: título no mesmo formato, corpo com `## Resumo` + `## Como testar`
- **Merge**: merge commit (não squash), deletar branch após merge
- **Nunca** push direto em `dev` ou `main`

## Referência rápida

| Preciso de... | Onde encontrar |
|---------------|----------------|
| Padrões de backend | [padroes/backend.md](padroes/backend.md) |
| Padrões de frontend | [padroes/frontend.md](padroes/frontend.md) |
| Padrões de UX/UI | [padroes/ux-ui.md](padroes/ux-ui.md) |
| Como fazer commits e PRs | [padroes/commits-e-prs.md](padroes/commits-e-prs.md) |
| Spec de uma US | [skills/us/](skills/us/) |
| Roadmap de qualidade | [skills/qualidade/quality-security.md](skills/qualidade/quality-security.md) |
| Backlog de tarefas | [backlog.md](backlog.md) |
| Requisitos originais | [requisitos.md](requisitos.md) |
| Como fazer PR | [../.github/CONTRIBUTING.md](../.github/CONTRIBUTING.md) |
44 changes: 44 additions & 0 deletions .claude/backlog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Backlog — Qualidade, Segurança e Evolução

## Qualidade de Software

| Fase | Descrição | Esforço | Skill |
|------|-----------|---------|-------|
| ~~1~~ | ~~Backend 100% cobertura~~ | ~~Médio~~ | ~~Concluída (PR #89) — 342 testes, 99%~~ |
| 2 | Testes de segurança OWASP Top 10 | Médio | `quality-security.md` § Fase 2 |
| 3 | Testes frontend (Vitest + Testing Library) | Alto | `quality-security.md` § Fase 3 |
| 4 | Testes E2E (Playwright) | Alto | `quality-security.md` § Fase 4 |
| 5 | Monitoramento produção (Sentry + logging + headers) | Baixo | `quality-security.md` § Fase 5 |

## Segurança (OWASP Top 10)

| Categoria | O que testar | Status |
|-----------|-------------|--------|
| A01 — Controle de Acesso | IDOR, escalação de privilégio, usuário inativo | Pendente |
| A02 — Falhas Criptográficas | Senhas em resposta, API key em logs, JWT seguro | Pendente |
| A03 — Injeção | SQL injection, XSS armazenado | Pendente |
| A04 — Design Inseguro | Rate limiting, conflito irreversível, soft-delete | Pendente |
| A05 — Configuração Incorreta | CORS, debug mode, stacktrace exposto | Pendente |
| A07 — Autenticação | Brute force, token refresh, senha mínima | Pendente |
| A08 — Integridade | JSON malformado, campos extras, idempotência | Pendente |
| A09 — Logging | Coberto na Fase 5 (monitoramento) | Pendente |
| A10 — SSRF | Validação de domínio YouTube, API key scope | Pendente |

## Monitoramento Produção

| Item | Ferramenta | Status |
|------|-----------|--------|
| Error tracking | Sentry free tier (5K erros/mês) | Pendente |
| Logging estruturado | python-json-logger ou stdlib | Pendente |
| Request logging | Middleware Starlette | Pendente |
| Headers de segurança | X-Content-Type-Options, X-Frame-Options, etc. | Pendente |
| Visualização de logs | Vercel Logs (já incluso no Pro) | Pendente |

## Evolução do Produto (fora do escopo atual)

| Item | Descrição |
|------|-----------|
| Export ML-ready | CSV com features prontas para treinamento de modelo |
| Classificação automática | Integrar modelo para sugerir bot/humano ao anotador |
| Inter-annotator agreement | Cohen's Kappa, Fleiss' Kappa |
| Multi-idioma | Suporte a vídeos em inglês/espanhol |
File renamed without changes.
100 changes: 100 additions & 0 deletions .claude/padroes/commits-e-prs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Padrão de Commits e PRs

Referência rápida baseada no [CONTRIBUTING.md](../../.github/CONTRIBUTING.md).
Este arquivo deve ser lido **antes de criar qualquer commit ou PR**.

---

## Commits

### Formato

```
tipo(escopo): descrição curta no imperativo
```

### Tipos

| Tipo | Quando usar |
|------|-------------|
| `feat` | Nova funcionalidade |
| `fix` | Correção de bug |
| `test` | Adição ou correção de testes |
| `docs` | Documentação apenas |
| `chore` | Build, CI, dependências, sem mudança de lógica |
| `refactor` | Refatoração sem mudança de comportamento |
| `style` | Formatação, espaços, ponto e vírgula |

### Regras

- **Separar commits por camada**: backend e frontend em commits distintos
- **Escopo obrigatório**: `feat(dashboard)`, `test(collect)`, `chore(ci)`
- **Descrição com corpo**: se houver mais de 3 mudanças, listar no corpo do commit
- **Co-Authored-By**: usar apenas `Co-Authored-By: Claude <noreply@anthropic.com>` — sem nome de modelo, sem contexto
- **Nunca** usar `--no-verify` ou `--amend` em commits já pushados

### Exemplo

```
feat(dashboard): adicionar endpoints e service da US-06

- 5 endpoints: /dashboard/global, /dashboard/video, /dashboard/user,
/dashboard/bots, /dashboard/criteria-effectiveness
- Schemas Pydantic para request/response
- Service com agregações SQL batch e gráficos Plotly

Co-Authored-By: Claude <noreply@anthropic.com>
```

---

## PRs

### Branch

- Criar a partir de `dev` (nunca de `main`)
- Naming: `feature/*`, `fix/*`, `test/*`, `chore/*`, `quality/*`
- **Nunca** push direto em `dev` ou `main` — sempre branch → PR → merge

### Título

Mesmo formato do commit principal:

```
feat(dashboard): implementar US-06 — Dashboard de Análise
```

### Corpo (obrigatório, em português)

```markdown
## Resumo

- Descrição concisa das mudanças (bullets)

## Como testar

- [ ] Passo a passo para validar
- [ ] Cenários de erro ou edge cases

## Screenshots

(se houver mudanças visuais no frontend)
```

### Merge

- Usar **merge commit** (não squash, não rebase)
- Deletar branch após merge
- Para PR `dev → main`: sincronizar dev com main antes (`git pull origin main`)

---

## Checklist antes de abrir PR

- [ ] Branch criada a partir de `dev`
- [ ] `ruff check . && ruff format --check .` passando (backend)
- [ ] `bandit -r . --exclude tests` sem issues (backend)
- [ ] `pytest` com cobertura ≥ 90% (backend)
- [ ] `eslint . && prettier --check . && tsc --noEmit` passando (frontend)
- [ ] Nenhum segredo ou API key commitada
- [ ] Commits separados por camada (backend / frontend / docs)
File renamed without changes.
File renamed without changes.
54 changes: 30 additions & 24 deletions .claude/skills/README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,40 @@
# Skills — Guias de Implementação por User Story
# Skills — Guias de Implementação

Cada arquivo detalha o contrato de API, schemas de banco, lógica de service,
componentes React sugeridos, casos de erro e dependências com outras USs.
## User Stories (`us/`)

| Arquivo | US | Escopo |
|-------------------------------|-------|-------------------------------------------------|
| [us-00-infra.md](us-00-infra.md) | US-00 | CI/CD, pre-commit hooks, Dependabot, proteção de branch |
| [us-01-auth.md](us-01-auth.md) | US-01 | Login, logout, gestão de usuários (admin/user) |
| [us-02-collect.md](us-02-collect.md) | US-02 | Coleta de comentários via YouTube Data API |
| [us-03-clean.md](us-03-clean.md) | US-03 | Seleção estatística/comportamental de usuários suspeitos |
| [us-04-annotate.md](us-04-annotate.md) | US-04 | Anotação de comentários por usuário do YouTube |
| [us-05-review.md](us-05-review.md) | US-05 | Desempate de conflitos e revisão de bots (admin)|
| [us-06-dashboard.md](us-06-dashboard.md) | US-06 | Dashboard global e individual com Plotly |
Cada arquivo detalha o contrato de API, schemas, lógica de service, componentes React e testes.

| [readme-gen.md](readme-gen.md) | — | Geração consistente de READMEs (raiz, backend, frontend) |
| Arquivo | US | Status |
|---------|-----|--------|
| [us-00-infra.md](us/us-00-infra.md) | US-00 · Infraestrutura e CI/CD | Concluída |
| [us-01-auth.md](us/us-01-auth.md) | US-01 · Autenticação e gestão de usuários | Concluída |
| [us-02-collect.md](us/us-02-collect.md) | US-02 · Coleta de comentários YouTube | Concluída |
| [us-03-clean.md](us/us-03-clean.md) | US-03 · Limpeza e seleção de dataset | Concluída |
| [us-04-annotate.md](us/us-04-annotate.md) | US-04 · Anotação de comentários | Concluída |
| [us-05-review.md](us/us-05-review.md) | US-05 · Revisão de conflitos | Concluída |
| [us-06-dashboard.md](us/us-06-dashboard.md) | US-06 · Dashboard de análise | Concluída |
| [us-07-data-catalog.md](us/us-07-data-catalog.md) | US-07 · Catálogo de dados | Concluída |

## Fluxo entre USs
## Qualidade e Segurança (`qualidade/`)

```
US-00 (Infra) — base para todas as outras
| Arquivo | Escopo |
|---------|--------|
| [quality-security.md](qualidade/quality-security.md) | 5 fases: cobertura, OWASP, frontend, E2E, monitoramento |

## Utilitários

US-01 (Auth) — JWT necessário em todas as outras
| Arquivo | Escopo |
|---------|--------|
| [readme-gen.md](readme-gen.md) | Geração de READMEs (raiz, backend, frontend) |

## Fluxo entre USs

US-02 (Coleta) → US-03 (Limpeza) → US-04 (Anotação) → US-05 (Desempate)
└─────────────────────────→ US-06 (Dashboard)
```
US-00 (Infra) — base para todas

## Papéis
US-01 (Auth) — JWT necessário em todas

| Role | Acesso |
|---------|---------------------------------------------------------------|
| `admin` | Tudo: gestão de usuários, coleta, limpeza, anotação, desempate, dashboard |
| `user` | Coleta, limpeza, anotação, dashboard |
US-02 (Coleta) → US-03 (Limpeza) → US-04 (Anotação) → US-05 (Revisão)
└──────────────────────→ US-06 (Dashboard)
US-07 (Catálogo)
```
Loading
Loading