105 lines
2.7 KiB
Markdown
105 lines
2.7 KiB
Markdown
# Comportamento do Agente IA
|
|
|
|
## Propósito deste ficheiro
|
|
|
|
Este ficheiro define como um agente IA de código deve comportar-se quando trabalha no projeto **DayMaker**.
|
|
|
|
---
|
|
|
|
## Contexto do projeto
|
|
|
|
DayMaker é uma app Flutter com Supabase para inventário pessoal, planeamento semanal e sugestões por IA usando Ollama.
|
|
|
|
Antes de alterações grandes, consultar:
|
|
|
|
1. `00_PROJECT_OVERVIEW.md`
|
|
2. `01_MVP_DEFINITION.md`
|
|
3. `02_ARCHITECTURE.md`
|
|
4. `05_RECOMMENDATION_ENGINE.md`
|
|
|
|
---
|
|
|
|
## Regras de comportamento
|
|
|
|
### Sempre fazer
|
|
|
|
- Respeitar a stack atual: Flutter, Dart, Supabase e Ollama API.
|
|
- Usar os componentes e tokens de `lib/theme/app_theme.dart`.
|
|
- Manter queries Supabase filtradas por `user_id` quando os dados forem do utilizador.
|
|
- Verificar o modelo de dados antes de alterar tabelas ou campos.
|
|
- Manter a UI consistente com a navegação atual: Início, Itens, Semana, IA e Perfil.
|
|
- Usar `flutter analyze --no-pub` depois de alterações relevantes.
|
|
- Explicar ao utilizador quando uma funcionalidade exige alteração de base de dados.
|
|
|
|
### Nunca fazer
|
|
|
|
- Reintroduzir Firebase, Firestore ou React Native.
|
|
- Assumir que Google Vision está implementado.
|
|
- Trocar o endpoint/modelo da IA sem testar ou explicar.
|
|
- Hardcodar API keys privadas.
|
|
- Enviar dados sensíveis desnecessários à IA.
|
|
- Criar categorias fora de `item_categories.dart` sem atualizar a documentação.
|
|
|
|
---
|
|
|
|
## Padrões de código
|
|
|
|
### Flutter/Dart
|
|
|
|
- Widgets em `PascalCase`.
|
|
- Métodos privados com `_camelCase`.
|
|
- Serviços em `lib/services/`.
|
|
- Telas em `lib/Screens/` ou pasta equivalente já existente.
|
|
- Imports no topo do ficheiro.
|
|
|
|
### UI
|
|
|
|
Usar preferencialmente:
|
|
|
|
- `AppColors`
|
|
- `AppText`
|
|
- `AppRadius`
|
|
- `AppShadows`
|
|
- `AppDecorations`
|
|
- `AppButton`
|
|
- `AppChip`
|
|
- `AppSnack`
|
|
|
|
### Supabase
|
|
|
|
- Ler utilizador com `Supabase.instance.client.auth.currentUser`.
|
|
- Não executar operações de dados se `user == null`.
|
|
- Usar `.eq('user_id', user.id)` em tabelas por utilizador.
|
|
|
|
---
|
|
|
|
## IA e sugestões
|
|
|
|
O fluxo atual usa `AiRecommendationService`.
|
|
|
|
- Chat livre: `sendMessage(text)`.
|
|
- Sugestão estruturada: `sendMessage(text, silent: true)`.
|
|
- Itens com imagem: `getItemsWithImages()`.
|
|
|
|
A IA deve receber contexto de inventário e responder em português.
|
|
|
|
---
|
|
|
|
## Pedidos fora do produto atual
|
|
|
|
Se o utilizador pedir clima, notificações, visão por imagem ou calendário externo:
|
|
|
|
1. Explicar que é funcionalidade futura.
|
|
2. Perguntar se deve implementar agora.
|
|
3. Avisar se exigir nova dependência, API key ou alteração de base de dados.
|
|
|
|
---
|
|
|
|
## Checklist antes de terminar uma tarefa
|
|
|
|
- Código compila com `flutter analyze --no-pub`.
|
|
- Não há imports não usados.
|
|
- UI segue tema atual.
|
|
- Documentação atualizada quando a funcionalidade muda comportamento.
|
|
- Resumo final indica ficheiros alterados.
|