erp-core/docs/05-user-stories/mgn-011/US-MGN-011-001-001-crud-proyectos.md

2.8 KiB

US-MGN-011-001-001: CRUD Proyectos

RF Asociado: RF-MGN-011-001 Módulo: MGN-011 - Proyectos Genéricos Epic: Proyectos Prioridad: P0 Story Points: 5 Sprint: Sprint 24 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como gerente de proyectos, Quiero crear y gestionar proyectos, Para organizar trabajo y recursos.

Descripción Detallada

Proyecto incluye:

  • Nombre, código, descripción
  • Cliente (partner_id)
  • Fechas inicio/fin
  • Presupuesto total
  • Gerente del proyecto
  • Estado (draft, in_progress, on_hold, done, cancelled)
  • Cuenta analítica vinculada (opcional)

Criterios de Aceptación

Escenario 1: Crear proyecto

Dado que soy project_manager, Cuando creo proyecto: name="Desarrollo App Mobile", code="MOB-001", customer_id=1, budget=100000, start_date="2024-01-01", Entonces sistema crea proyecto state=draft, genera cuenta analítica automáticamente.

Escenario 2: Código único

Dado que ya existe proyecto con code="MOB-001", Cuando intento crear otro con mismo código, Entonces error 400 "Código ya existe".

Escenario 3: Actualizar proyecto

Dado que proyecto existe, Cuando actualizo end_date="2024-12-31", budget=120000, Entonces sistema actualiza y registra en audit_log.

Escenario 4: Vincular a cuenta analítica

Dado que proyecto se crea, Cuando se completa creación, Entonces sistema crea cuenta analítica con code=proyecto.code para trackeo de costos.

Reglas de Negocio

  • RN-1: Código único por empresa.
  • RN-2: Budget >= 0.
  • RN-3: start_date <= end_date (si ambos existen).
  • RN-4: Crea cuenta analítica automáticamente.
  • RN-5: RLS filtra por empresa.

Tareas Técnicas

Backend

  • Endpoint: POST/GET/PUT/DELETE /api/v1/projects
  • Service: ProjectService (CRUD)
  • Crear cuenta analítica al crear proyecto
  • Unit tests

Frontend

  • Página: ProjectsPage.tsx
  • Formulario: ProjectForm.tsx
  • Vista: Dashboard de proyecto

Database

  • Tabla: projects.projects (code, name, customer_id, manager_id, budget, start_date, end_date, state, analytical_account_id)
  • Constraint: unique(company_id, code)
  • Enum: project_state

Estimación Detallada

Tarea Horas
Backend 2.5
Frontend 2.5
Testing 2
TOTAL 7 horas = 5 SP

Definition of Done

  • CRUD completo
  • Cuenta analítica creada automáticamente
  • Validaciones aplicadas
  • Tests >80%
  • QA/PO aprobado

Referencias