Imported from ricardocamati/Recicla_Reusa (
AGENTS.md). Install upstream withnpx skills add ricardocamati/Recicla_Reusa. Copyright stays with the author.
Orientações para agentes de IA
Objetivo do projeto
O Recicla/Reusa é uma PoC acadêmica de Engenharia de Software alinhada ao ODS 12. O produto completo deverá apoiar doação, descarte formal e reaproveitamento/revenda de eletrônicos, com rastreamento do ciclo de vida.
O estado inicial possui somente o CRUD da coleção MongoDB usuarios. Essa limitação é intencional para que a evolução arquitetural e funcional permaneça visível no histórico do projeto.
Stack
- Python 3.11+
- FastAPI e Uvicorn
- PyMongo e MongoDB
- Pydantic
- Pytest, pytest-cov e mongomock
- Docker Compose
- frontend simples da v1.0 em HTML, CSS e JavaScript
Arquitetura
API -> Schema -> Service -> Repository -> MongoDB
MongoDB -> Model -> Service -> Mapper -> Response Schema -> API
Responsabilidades
- API: HTTP, validação e status; nenhuma regra de negócio ou persistência direta.
- Schemas: contratos públicos por caso de uso.
- Service: casos de uso e regras do domínio.
- Repository: persistência e consulta.
- Model: documento MongoDB, não contrato HTTP.
- Mapper: conversões explícitas.
- Frontend: cliente separado, consumindo apenas a API pública.
Domínio planejado
usuarios: participantes;itens: eletrônicos e destino;interesses: solicitações de doação/revenda;pontos_coleta: destinação de descarte;historico: subdocumentos aninhados em itens.
Fluxos futuros:
- doação: disponível → reservado → doado;
- descarte: disponível → encaminhado → coletado;
- revenda: disponível → em avaliação → recondicionado → vendido.
Regras de desenvolvimento
- Examinar os arquivos existentes antes de alterar uma área.
- Preservar a separação de responsabilidades.
- Não expor Models MongoDB diretamente pela API.
- Não colocar regras no Repository ou nas rotas.
- Criar DTOs específicos quando os casos de uso divergirem.
- Introduzir abstrações somente quando houver necessidade concreta.
- Toda funcionalidade ou correção deve possuir teste automatizado aplicável.
- Executar a suíte completa antes de concluir.
- Manter cobertura mínima de 70% em cada marco.
- Atualizar README, arquitetura, decisões e contratos quando necessário.
- Não versionar
.env, credenciais reais, caches ou ambientes virtuais. - Manter
frontend/separado deapp/. - Respeitar o escopo de cada etapa para preservar a evolução demonstrável do projeto.
Processo de trabalho
- Ler
README.md,HARNESS.mde a documentação da área afetada. - Escrever ou atualizar o teste do comportamento.
- Implementar a menor solução coerente.
- Executar testes e cobertura.
- Revisar arquitetura, documentação e limitações reais.