# Contexto de Trabalho - Jean / FastApp

Este documento registra o modo generico de trabalho no projeto FastApp.
Ele deve servir para qualquer sprint, sem depender de uma feature especifica.

## Principios

- O FastApp e um construtor de apps orientado por objetos em JSON.
- Objetos viram CRUDs, views, formularios, automacoes, dados e experiencias
  dinamicas.
- A IA deve entender o sistema antes de implementar: ler a Task 1 da sprint,
  arquitetura, schemas, componentes dinamicos e APIs relevantes.
- O desenvolvimento segue Spec Driven Development, mas as tasks executaveis da
  sprint vivem no Task Board dinamico da FastApp.
- A partir deste fluxo, o contexto especifico da sprint deve estar na Task 1 do
  Task Board. Nao criar arquivos de sprint como `docs/<sprint>/CONTEXT.md` ou
  `docs/<sprint>/SPEC.md`, salvo se o usuario pedir explicitamente.
- A Task 1 deve conter tudo que a IA precisa para entender a sprint: objetivo,
  arquivos a ler, arquitetura impactada, regras, riscos, criterios de aceite e
  plano macro.

## Fluxo de Sprint

1. Criar branch a partir da `main`, com nome `feat/<nome-da-sprint>`.
2. Conferir `git status --short --branch` antes de qualquer alteracao.
3. Ler `docs/jean/CONTEXTO.md`, `docs/jean/PROMPTSTART` e a Task 1 da sprint.
4. Criar cards no Task Board com titulo, descricao completa e prompt otimizado.
5. Ao criar/mover cards, respeitar o painel de Comunicados. Cards nao devem ser
   inseridos de forma silenciosa sem disparar regras configuradas.
6. Mover a task para `EM_ANDAMENTO` antes de implementar.
7. Fazer commits pequenos e claros na branch da sprint.
8. Fazer push para o GitHub a cada entrega importante.
9. Ao concluir uma task, mover o card para `CONCLUIDA` e garantir notificacao.
10. Ao fim da sprint, trazer `main` para a branch, validar, levar a sprint para
    `main` e criar release quando o usuario pedir.

## Task Board

- App: `task-board`.
- Objeto: `task_item`.
- Cards devem ter prefixo da sprint, por exemplo:
  `[Nome Sprint] Task 1 - Contexto e arquitetura`.
- A Task 1 e obrigatoria e deve ser o contexto completo da sprint.
- O contexto da sprint deve ficar no corpo da Task 1, nao em arquivo separado.
- As demais tasks devem quebrar a entrega em blocos pequenos e commitaveis.
- Status padrao:
  - `BACKLOG`
  - `TODO`
  - `EM_ANDAMENTO`
  - `CONCLUIDA`
- Sempre preencher:
  - `titulo`
  - `descricao`
  - `prompt_otimizado`
  - `feature`
  - `taxonomia_n1`
  - `taxonomia_n2`
  - `taxonomia_n3`
  - `prioridade`
  - `status`
  - `ordem`
  - `app_origem_id`

## Comunicados

O painel de Comunicados e parte do fluxo de trabalho.

- Criacao de card deve notificar.
- Update de card deve notificar.
- Mudanca para `TODO`, `EM_ANDAMENTO` e `CONCLUIDA` deve notificar por regra
  especifica.
- Update generico deve enviar email tipo "Seu card foi atualizado" com resumo
  do que mudou.
- Se uma operacao precisar ser feita via script, o script deve reproduzir as
  regras ativas de `comunicado_config`.

## Commits

- Commits devem ser pequenos, rastreaveis e associados a uma task.
- Mensagens recomendadas:
  - `docs: add working process context`
  - `feat: add <capability>`
  - `test: cover <behavior>`
  - `docs: finalize <sprint> handoff`
- Depois de cada commit importante, fazer `git push origin <branch>`.

## Como a IA Deve Agir

- Trabalhar de forma autonoma quando a tarefa estiver clara.
- Buscar contexto no repo antes de assumir arquitetura.
- Usar padroes existentes do FastApp em vez de criar uma arquitetura paralela.
- Preferir `rg` para buscas.
- Usar `apply_patch` para edicoes manuais.
- Nao reverter alteracoes do usuario.
- Validar com testes disponiveis.
- Reportar claramente quando `npm run build` ou outro comando nao concluir.
- Manter o usuario informado com updates curtos durante trabalhos longos.

## Arquivos Para Entender a FastApp

Leia estes arquivos antes de iniciar uma sprint que mexe em objetos, CRUDs,
formularios, CMS, API dinamica ou automacoes:

- `package.json`
- `ARCHITECTURE.md`
- `app/types/schema.ts`
- `app/pages/[app]/[module]/[object]/index.vue`
- `app/pages/[app]/[module]/index.vue`
- `app/components/core/DynamicCRUD.vue`
- `app/components/core/DynamicForm.vue`
- `app/components/core/DynamicTable.vue`
- `app/components/core/DynamicList.vue`
- `app/components/core/DynamicKanban.vue`
- `app/components/core/FieldRenderer.vue`
- `app/components/core/PropertyField.vue`
- `app/components/core/cms/CoreCmsRenderer.vue`
- `app/composables/useCmsBinding.ts`
- `server/api/v1/data/[app]/[object]/index.get.ts`
- `server/api/v1/data/[app]/[object]/index.post.ts`
- `server/api/v1/data/[app]/[object]/[id].patch.ts`
- `server/utils/dynamic-db.ts`
- `server/utils/query-parser.ts`
- `server/utils/meta-resolver.ts`
- `server/utils/meta-validation.ts`
- `server/utils/rbac-data-scope.ts`
- `server/utils/data-source-resolver.ts`
- `server/utils/comunicado-dispatcher.ts`
- `task-board-app.json`

## Task 1 Como Fonte De Contexto

Toda sprint deve ter uma Task 1 dedicada a contexto. Ela deve responder:

- Qual e o objetivo da sprint?
- Por que isso importa para o produto?
- Quais arquivos a IA deve ler antes de implementar?
- Quais objetos, componentes, APIs e schemas podem ser impactados?
- Quais decisoes tecnicas ja estao assumidas?
- Quais duvidas ou riscos precisam ser resolvidos?
- Quais sao os criterios de aceite da sprint?
- Quais sao as tasks seguintes e a ordem sugerida?

Se a sessao cair, se outra IA assumir ou se houver perda de contexto, a IA deve
retomar lendo `docs/jean/CONTEXTO.md`, `docs/jean/PROMPTSTART` e a Task 1 da
sprint no Task Board.
