Backend API REST para plataforma de gestión IT multi-tenant (MSP).
Stack
Python 3.13 · Django 5.1 · DRF · PostgreSQL 16 · Redis 7 · Docker Compose
Lo que incluye
Arquitectura (US-1)
- Docker Compose con api, db y redis — arranca con
make up - Multi-stage Dockerfile (python:3.13-slim), healthchecks en los 3 servicios
- Pre-commit hooks (Ruff + Black), Makefile completo
Modelos de datos (US-2)
- Tenant, CustomUser (roles: admin/agent/readonly), Device, Ticket
- 9 índices, 3 migraciones lineales limpias, soft delete en tickets
Autenticación JWT (US-3)
- SimpleJWT con claims custom: tid, role, email
- Aislamiento de tenant por contexto de auth (nunca por URL)
Tickets CRUD (US-4)
- GET/POST/PATCH/DELETE con reglas de negocio:
- Ticket critical no asignable a usuario readonly
- Auto-timestamp de resolución y cálculo de resolution_minutes
Devices API + Stats (US-5)
- Listado, detalle y heartbeat de dispositivos
- GET /api/stats/ — conteo agrupado por estado+prioridad en 2 queries (annotate/aggregate, sin N+1)
- Detección de devices sin heartbeat en >24h
Tests (US-6)
- 164 tests · 99.53% cobertura
- Unit + Integration + E2E · Contract tests · Test de ciclo de vida completo
Caché Redis + Postman + README (US-7)
- Cache en GET /api/tickets/ y GET /api/stats/ con X-Cache: HIT/MISS
- Invalidación en escrituras, clave scoped por tenant
- Colección Postman con ejemplos de respuesta reales
Documentación y calidad (US-8 + US-9)
- Swagger/OpenAPI válido al 100% (drf-spectacular)
- ACCEPTANCE_REPORT.md, PENTEST_REPORT.md, FUTURE_IMPROVEMENTS.md
- Stress test: 50 usuarios · 1791 requests · 0 fallos · p95=22ms
Evaluación automática
Evaluado con SpecEvaluator (Agno + Claude Opus): 96/100 — PASS WITH DISTINCTION