# 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.