API para simulação de pacientes virtuais, chat terapêutico com IA, relatórios e gestão de sessões. ConstruÃda com Elysia + Bun seguindo Clean Architecture.
Estrutura modular e escalável:
/src
├── controllers/ # Rotas HTTP (Elysia)
├── services/ # Lógica de negócio
├── models/ # Schemas Prisma
├── middleware/ # JWT, validação, logging
├── ai/ # Integração Gemini
├── storage/ # MinIO, gestão de ficheiros
├── cache/ # Redis (sessões, pacientes, fila)
├── utils/ # Funções auxiliares
└── index.ts # Ponto de entrada
POST /auth/register— Registo de utilizadorPOST /auth/login— Login e emissão de JWTGET /auth/me— Dados do utilizador autenticadoPOST /auth/refresh— Renova token (opcional)
JWT via header Authorization. Sessões ativas em Redis.
GET /users/profile— Perfil do utilizadorPATCH /users/profile— Atualiza dadosDELETE /users/account— Elimina conta
GET /patients— Lista de pacientes virtuaisGET /patients/:id— Detalhes de paciente
Cache Redis para performance. Dados estáticos geridos por admin/seed.
POST /sessions/start— Inicia sessão terapêuticaPOST /chat/:sessionId— Envia mensagem para paciente virtual (IA)PUT /sessions/:sessionId/end— Encerra sessãoGET /sessions/:sessionId/report— Relatório detalhadoGET /sessions/history— Histórico de sessõesGET /sessions/:sessionId— Detalhes da sessão
Sessão ativa em Redis, persistência em PostgreSQL, chat processado via Gemini API.
- Prompt generator, integração Gemini, análise e geração de relatórios
- Relatórios completos armazenados em MinIO e PostgreSQL
- Fila assÃncrona em Redis para processamento de relatórios
- Relatórios, transcrições, backups
- Estrutura de buckets organizada por utilizador e sessão
- Sessões, pacientes, histórico, fila de análise
- TTL configurado por tipo de dado
- Processamento de relatórios sem bloquear requisições
- Worker background processa fila
analysis:queue
[Utilizador] → [Registo/Login] → [Selecionar Paciente] → [Iniciar Sessão] → [Chat IA] → [Encerrar Sessão] → [Fila de Análise] → [Relatório] → [Histórico]
| Tecnologia | Responsabilidade |
|---|---|
| Elysia + Bun | Framework web e runtime |
| PostgreSQL | Dados persistentes |
| Redis | Cache, sessões, fila |
| Gemini API | IA generativa |
| R2 OR S3 | Armazenamento de arquivos |
DATABASE_URL=
REDIS_HOST=
REDIS_PORT=
JWT_SECRET=
MINIO_ENDPOINT=
MINIO_ACCESS_KEY=
MINIO_SECRET_KEY=
GEMINI_API_KEY=- Instale dependências:
bun install
- Configure
.env(veja.env.example) - Suba serviços Docker:
docker-compose up -d
- Migre banco de dados:
bunx prisma migrate dev
- Inicie o servidor:
bun run api
- Acesse
http://localhost:<PORT>/docspara explorar endpoints.
api/
├── src/
│ ├── app.ts
│ ├── common/
│ ├── config/
│ ├── entry/
│ └── modules/
├── prisma/
│ └── schema.prisma
├── docker-compose.yml
├── package.json
├── README.md
└── tsconfig.json