|
1 | | -# Roadmap para MVP do AiFoodApp |
2 | | - |
3 | | -## Fase 1: Fundação e Correção (Semanas 1-2) |
4 | | - |
5 | | -### Corrigir problemas estruturais |
6 | | -- Resolver problemas no repositório FoodItemRepository |
7 | | -- Corrigir estrutura do serviço TextGenService |
8 | | -- Padronizar tratamento de erros da API |
9 | | - |
10 | | -### Aprimorar o modelo de dados |
11 | | -- Adicionar campos nutricionais básicos ao modelo FoodItem |
12 | | -- Incluir propriedades para categorização de alimentos |
13 | | -- Definir relacionamentos entre entidades |
14 | | - |
15 | | -## Fase 2: Funcionalidades Core de IA (Semanas 3-5) |
16 | | - |
17 | | -### Implementar geração de receitas com base em alimentos disponíveis |
18 | | -- Aprimorar o TextGenService existente para gerar melhores receitas |
19 | | -- Criar interface para seleção de alimentos disponíveis |
20 | | -- Implementar filtros para preferências alimentares (vegetariano, sem glúten, etc.) |
21 | | - |
22 | | -### Desenvolver análise nutricional básica |
23 | | -- Criar serviço de análise nutricional utilizando IA |
24 | | -- Desenvolver endpoints para solicitar análises personalizadas |
25 | | -- Implementar visualização clara de insights nutricionais |
26 | | - |
27 | | -### Criar controller para funcionalidades de IA |
28 | | -- Desenvolver endpoints para solicitação de insights nutricionais |
29 | | -- Implementar rotas para geração de receitas personalizadas |
30 | | -- Estabelecer padrão de resposta e tratamento de erros |
31 | | - |
32 | | -## Fase 3: Funcionalidades Essenciais Tradicionais (Semanas 6-8) |
33 | | - |
34 | | -### Implementar sistema de categorização de alimentos |
35 | | -- Adicionar enums ou constantes para grupos alimentares |
36 | | -- Criar endpoints para listar alimentos por grupo |
37 | | -- Desenvolver interface para visualizar alimentos por categoria |
38 | | - |
39 | | -### Desenvolver sistema básico de listas de compras |
40 | | -- Criar modelos para lista de compras e itens |
41 | | -- Implementar endpoints para gerenciamento de listas |
42 | | -- Desenvolver funcionalidade para adicionar ingredientes de receitas à lista |
43 | | - |
44 | | -### Implementar tracking de macronutrientes |
45 | | -- Criar modelo de dados para armazenar consumo diário |
46 | | -- Desenvolver endpoints para registrar refeições |
47 | | -- Implementar visualização básica de macronutrientes consumidos |
48 | | - |
49 | | -## Fase 4: Integração e Refinamento (Semanas 9-10) |
50 | | - |
51 | | -### Integrar funcionalidades e melhorar UX |
52 | | -- Conectar geração de receitas com listas de compras |
53 | | -- Permitir compartilhamento de receitas geradas |
54 | | -- Refinar feedback de usuário e interfaces |
55 | | - |
56 | | -### Implementar testes e otimizações |
57 | | -- Criar testes unitários para serviços principais |
58 | | -- Otimizar chamadas às APIs externas (caching, etc.) |
59 | | -- Identificar e resolver possíveis gargalos de performance |
60 | | - |
61 | | -### Preparar para lançamento do MVP |
62 | | -- Documentação básica da API |
63 | | -- Configuração de ambiente de produção |
64 | | -- Configuração de monitoramento básico |
65 | | - |
66 | | -## Fase 5: Lançamento MVP e Feedback Inicial (Semanas 11-12) |
67 | | - |
68 | | -### Lançamento MVP |
69 | | -- Deploy da aplicação |
70 | | -- Configuração de CI/CD básico |
71 | | -- Preparação para coleta de feedback |
72 | | - |
73 | | -### Coleta de feedback inicial |
74 | | -- Implementar mecanismo básico de coleta de feedback |
75 | | -- Preparar para o próximo ciclo de desenvolvimento |
76 | | - |
77 | | -## Próximos Passos Pós-MVP (Futuro) |
78 | | - |
79 | | -1. **Funcionalidades avançadas de IA** |
80 | | - - Recomendação de substituições saudáveis |
81 | | - - Assistente virtual de nutrição |
82 | | - - Previsão de validade inteligente |
83 | | - |
84 | | -2. **Expansões principais** |
85 | | - - Sistema completo de planos alimentares |
86 | | - - Integração com wearables |
87 | | - - Scanner de código de barras |
88 | | - - Compartilhamento social |
89 | | - |
90 | | -3. **Refinamentos técnicos** |
91 | | - - Arquitetura escalável para mais usuários |
92 | | - - Sistema avançado de analytics |
93 | | - - Personalização avançada baseada em ML |
| 1 | +# Roadmap de Sprints para o AiFoodApp |
| 2 | + |
| 3 | +## Sprint 1: Qualidade, Estabilidade e Refinamento da Base |
| 4 | + |
| 5 | +**Objetivo da Sprint:** Fortalecer a fundação do projeto, garantindo que as funcionalidades existentes sejam confiáveis e robustas antes de adicionar novos recursos. Esta sprint foca em testes e melhorias técnicas críticas. |
| 6 | + |
| 7 | +### Implementar Cobertura de Testes Unitários e de Integração |
| 8 | + |
| 9 | +* **Descrição:** Criar um conjunto sólido de testes automatizados para validar a lógica de negócio e os endpoints da API. Atualmente, o projeto carece de testes significativos. |
| 10 | +* **Tarefas:** |
| 11 | + * **Testes de Serviço:** Escrever testes unitários para `FoodItemService`, `RecipeService` e `AuthorizationService`, utilizando mocks para isolar a lógica de negócio. |
| 12 | + * **Testes de Controller:** Implementar testes de integração usando `MockMvc` para `FoodItemController`, `RecipeController` e `AuthenticationController` para validar as requisições, respostas HTTP e segurança dos endpoints. |
| 13 | + |
| 14 | +### Refatorar o Parsing de Receitas da IA |
| 15 | + |
| 16 | +* **Descrição:** Substituir o método atual de parsing de texto no `ChatService`, que é frágil, por um método mais confiável baseado em JSON. |
| 17 | +* **Tarefas:** |
| 18 | + * Atualizar o prompt enviado à Maritaca AI para exigir que a resposta da receita seja sempre em formato JSON estruturado. |
| 19 | + * Modificar o método `parseRecipeFromText` em `ChatService` para usar uma biblioteca (como Jackson) para desserializar a string JSON diretamente para o objeto `Recipe` ou um DTO correspondente. |
| 20 | + |
| 21 | +### Implementar Cache para Análise Nutricional |
| 22 | + |
| 23 | +* **Descrição:** Reduzir o número de chamadas repetitivas à API de IA para receitas que já foram analisadas, melhorando a performance e reduzindo custos. |
| 24 | +* **Tarefas:** |
| 25 | + * Habilitar o suporte a cache do Spring (`@EnableCaching`). |
| 26 | + * Anotar o método `analyzeNutritionalProfile` no `ChatService` com `@Cacheable` para que os resultados sejam armazenados em cache com base no ID da receita. |
| 27 | + |
| 28 | +### Associar Receitas Geradas ao Usuário |
| 29 | + |
| 30 | +* **Descrição:** Vincular cada receita gerada ao usuário que a solicitou. Isso é fundamental para funcionalidades futuras como o histórico de receitas. |
| 31 | +* **Tarefas:** |
| 32 | + * Adicionar um relacionamento Many-to-One da entidade `Recipe` para a entidade `User`. |
| 33 | + * Atualizar a lógica em `RecipeController` e `RecipeService` para identificar o usuário autenticado e associá-lo à nova receita ao salvá-la. |
| 34 | + |
| 35 | +--- |
| 36 | + |
| 37 | +## Sprint 2: Aprimoramento da IA e Categorização |
| 38 | + |
| 39 | +**Objetivo da Sprint:** Tornar a interação com a IA mais poderosa e útil para o usuário, e implementar funcionalidades de organização de alimentos. |
| 40 | + |
| 41 | +### Adicionar Filtros Avançados na Geração de Receitas |
| 42 | + |
| 43 | +* **Descrição:** Permitir que o usuário personalize a geração de receitas com base em preferências alimentares, ingredientes específicos e outras restrições. |
| 44 | +* **Tarefas:** |
| 45 | + * Modificar o endpoint `GET /api/recipes/gen` para aceitar `RequestParams`, como `dietaryPreference` (ex: "vegetariano", "vegano") e `excludeIngredients` (lista de nomes de ingredientes a serem evitados). |
| 46 | + * Aprimorar o método `generateRecipe` no `ChatService` para incorporar dinamicamente esses filtros no prompt enviado para a IA. |
| 47 | + |
| 48 | +### Criar Endpoint para Listar Alimentos por Categoria |
| 49 | + |
| 50 | +* **Descrição:** Expor um endpoint que permita ao cliente (frontend) buscar e exibir alimentos agrupados por sua categoria (`FoodGroup`). |
| 51 | +* **Tarefas:** |
| 52 | + * Adicionar o método `List<FoodItem> findByFoodGroup(FoodGroup foodGroup);` na interface `FoodItemRepository`. |
| 53 | + * Implementar um novo método no `FoodItemService` para chamar o repositório. |
| 54 | + * Criar um novo endpoint no `FoodItemController`, como `GET /api/foods/by-category`, que aceita a categoria como parâmetro. |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## Sprint 3: Sistema de Listas de Compras |
| 59 | + |
| 60 | +**Objetivo da Sprint:** Desenvolver a funcionalidade completa de listas de compras, um recurso essencial do aplicativo. |
| 61 | + |
| 62 | +### Modelar e Implementar a Estrutura da Lista de Compras |
| 63 | + |
| 64 | +* **Descrição:** Criar a base de dados e as classes de domínio para suportar as listas de compras. |
| 65 | +* **Tarefas:** |
| 66 | + * Criar as entidades JPA `ShoppingList` (com relacionamento para `User`) e `ShoppingListItem` (com relacionamento para `ShoppingList` e `FoodItem`). |
| 67 | + * Gerar as migrações do banco de dados correspondentes usando Flyway. |
| 68 | + * Implementar os `JpaRepository` para as novas entidades. |
| 69 | + |
| 70 | +### Desenvolver o Serviço e os Endpoints para Gerenciamento da Lista |
| 71 | + |
| 72 | +* **Descrição:** Construir a lógica de negócio e a API para que o usuário possa interagir com suas listas. |
| 73 | +* **Tarefas:** |
| 74 | + * Criar o `ShoppingListService` com métodos para: criar/buscar a lista de um usuário, adicionar/remover/atualizar itens. |
| 75 | + * Desenvolver o `ShoppingListController` com endpoints RESTful para todas as operações do serviço. |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## Sprint 4: Integração e Experiência do Usuário (UX) |
| 80 | + |
| 81 | +**Objetivo da Sprint:** Conectar as funcionalidades existentes para criar uma experiência de usuário coesa e fluida. |
| 82 | + |
| 83 | +### Integrar Receitas com a Lista de Compras |
| 84 | + |
| 85 | +* **Descrição:** Criar uma funcionalidade "one-click" para que o usuário possa adicionar todos os ingredientes de uma receita diretamente em sua lista de compras. |
| 86 | +* **Tarefas:** |
| 87 | + * Criar um novo endpoint, como `POST /api/recipes/{recipeId}/add-to-shopping-list`. |
| 88 | + * Implementar a lógica no `RecipeService` ou `ShoppingListService` que busca os ingredientes da receita (`RecipeIngredient`) e os adiciona na lista de compras do usuário autenticado. |
| 89 | + |
| 90 | +### Desenvolver Histórico de Receitas do Usuário |
| 91 | + |
| 92 | +* **Descrição:** Criar uma tela ou endpoint onde o usuário possa ver todas as receitas que ele gerou anteriormente. |
| 93 | +* **Tarefas:** |
| 94 | + * Criar um novo método no `RecipeRepository` para buscar receitas por ID de usuário (`findByUserId`). |
| 95 | + * Expor um endpoint `GET /api/recipes/my-history` no `RecipeController` que retorna a lista de receitas para o usuário logado. |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +## Próximos Passos (Pós-MVP) |
| 100 | + |
| 101 | +* Desenvolver Sistema de Tracking de Macronutrientes |
| 102 | +* Funcionalidades Avançadas de IA (ex: substituições saudáveis, planejamento de refeições) |
| 103 | +* Construção da Interface de Usuário (Frontend) |
0 commit comments