Skip to content

Releases: ignqa/manbau_challenge

v1.0.0 — Manbau Backend Exercise

Choose a tag to compare

@ignqa ignqa released this 07 Mar 09:52

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