16 KiB
PLAN DE EXPANSION DEL BACKEND
Proyecto: ERP Generic Fecha: 2025-11-24 Version: 1.0.0 Autor: Architecture-Analyst Estado: ✅ COMPLETADO (2025-11-24)
Resumen Ejecutivo
Este documento detalla el plan para expandir el backend del ERP Generic desde su estado actual (~114 endpoints) hasta alcanzar cobertura completa de todas las especificaciones tecnicas documentadas (~300+ endpoints).
Estado Final
| Metrica | Inicial | Objetivo | Final |
|---|---|---|---|
| Endpoints implementados | 114 | ~300 | 309 |
| Modulos backend | 9 | 15 | 15 |
| Cobertura funcional | 35% | 100% | 100% |
FASE 1: Completar Modulos Existentes
1.1 Sales - Quotations & Orders
Tablas BD existentes: sales.quotations, sales.quotation_lines, sales.sales_orders, sales.sales_order_lines
Endpoints a implementar:
# Quotations (Cotizaciones)
GET /api/v1/sales/quotations - Listar cotizaciones
GET /api/v1/sales/quotations/:id - Obtener cotizacion por ID
POST /api/v1/sales/quotations - Crear cotizacion
PUT /api/v1/sales/quotations/:id - Actualizar cotizacion
DELETE /api/v1/sales/quotations/:id - Eliminar cotizacion (soft)
POST /api/v1/sales/quotations/:id/send - Enviar cotizacion por email
POST /api/v1/sales/quotations/:id/confirm - Confirmar (convertir a orden)
POST /api/v1/sales/quotations/:id/cancel - Cancelar cotizacion
# Quotation Lines
POST /api/v1/sales/quotations/:id/lines - Agregar linea
PUT /api/v1/sales/quotations/:id/lines/:lineId - Actualizar linea
DELETE /api/v1/sales/quotations/:id/lines/:lineId - Eliminar linea
# Sales Orders (Ordenes de Venta)
GET /api/v1/sales/orders - Listar ordenes
GET /api/v1/sales/orders/:id - Obtener orden por ID
POST /api/v1/sales/orders - Crear orden
PUT /api/v1/sales/orders/:id - Actualizar orden
DELETE /api/v1/sales/orders/:id - Eliminar orden (soft)
POST /api/v1/sales/orders/:id/confirm - Confirmar orden
POST /api/v1/sales/orders/:id/cancel - Cancelar orden
POST /api/v1/sales/orders/:id/invoice - Generar factura
# Order Lines
POST /api/v1/sales/orders/:id/lines - Agregar linea
PUT /api/v1/sales/orders/:id/lines/:lineId - Actualizar linea
DELETE /api/v1/sales/orders/:id/lines/:lineId - Eliminar linea
Archivos a crear:
src/modules/sales/quotations.service.tssrc/modules/sales/orders.service.ts
Story Points estimados: 13 SP
1.2 Financial - Invoices & Payments
Tablas BD existentes: financial.invoices, financial.invoice_lines, financial.payments, financial.payment_invoice, financial.taxes
Endpoints a implementar:
# Invoices (Facturas)
GET /api/v1/financial/invoices - Listar facturas
GET /api/v1/financial/invoices/:id - Obtener factura por ID
POST /api/v1/financial/invoices - Crear factura
PUT /api/v1/financial/invoices/:id - Actualizar factura
DELETE /api/v1/financial/invoices/:id - Eliminar factura (soft)
POST /api/v1/financial/invoices/:id/post - Publicar factura
POST /api/v1/financial/invoices/:id/cancel - Cancelar factura
POST /api/v1/financial/invoices/:id/send - Enviar por email
# Invoice Lines
POST /api/v1/financial/invoices/:id/lines - Agregar linea
PUT /api/v1/financial/invoices/:id/lines/:lineId - Actualizar linea
DELETE /api/v1/financial/invoices/:id/lines/:lineId - Eliminar linea
# Payments (Pagos)
GET /api/v1/financial/payments - Listar pagos
GET /api/v1/financial/payments/:id - Obtener pago por ID
POST /api/v1/financial/payments - Registrar pago
PUT /api/v1/financial/payments/:id - Actualizar pago
DELETE /api/v1/financial/payments/:id - Eliminar pago
POST /api/v1/financial/payments/:id/post - Publicar pago
POST /api/v1/financial/payments/:id/reconcile - Conciliar con facturas
# Taxes (Impuestos)
GET /api/v1/financial/taxes - Listar impuestos
GET /api/v1/financial/taxes/:id - Obtener impuesto por ID
POST /api/v1/financial/taxes - Crear impuesto
PUT /api/v1/financial/taxes/:id - Actualizar impuesto
DELETE /api/v1/financial/taxes/:id - Eliminar impuesto
Archivos a crear:
src/modules/financial/invoices.service.tssrc/modules/financial/payments.service.tssrc/modules/financial/taxes.service.ts
Story Points estimados: 21 SP
1.3 Purchases - RFQs & Receipts
Tablas BD existentes: purchase.rfqs, purchase.rfq_lines
Endpoints a implementar:
# RFQs (Solicitudes de Cotizacion)
GET /api/v1/purchases/rfqs - Listar RFQs
GET /api/v1/purchases/rfqs/:id - Obtener RFQ por ID
POST /api/v1/purchases/rfqs - Crear RFQ
PUT /api/v1/purchases/rfqs/:id - Actualizar RFQ
DELETE /api/v1/purchases/rfqs/:id - Eliminar RFQ (soft)
POST /api/v1/purchases/rfqs/:id/send - Enviar a proveedor
POST /api/v1/purchases/rfqs/:id/confirm - Confirmar (convertir a PO)
POST /api/v1/purchases/rfqs/:id/cancel - Cancelar RFQ
# RFQ Lines
POST /api/v1/purchases/rfqs/:id/lines - Agregar linea
PUT /api/v1/purchases/rfqs/:id/lines/:lineId - Actualizar linea
DELETE /api/v1/purchases/rfqs/:id/lines/:lineId - Eliminar linea
Story Points estimados: 8 SP
1.4 Inventory - Adjustments & Lots
Tablas BD existentes: inventory.inventory_adjustments, inventory.adjustment_lines, inventory.lots
Endpoints a implementar:
# Inventory Adjustments (Ajustes de Inventario)
GET /api/v1/inventory/adjustments - Listar ajustes
GET /api/v1/inventory/adjustments/:id - Obtener ajuste por ID
POST /api/v1/inventory/adjustments - Crear ajuste
PUT /api/v1/inventory/adjustments/:id - Actualizar ajuste
POST /api/v1/inventory/adjustments/:id/validate - Validar ajuste
POST /api/v1/inventory/adjustments/:id/cancel - Cancelar ajuste
# Adjustment Lines
POST /api/v1/inventory/adjustments/:id/lines - Agregar linea
PUT /api/v1/inventory/adjustments/:id/lines/:lineId - Actualizar linea
DELETE /api/v1/inventory/adjustments/:id/lines/:lineId - Eliminar linea
# Lots (Lotes/Trazabilidad)
GET /api/v1/inventory/lots - Listar lotes
GET /api/v1/inventory/lots/:id - Obtener lote por ID
POST /api/v1/inventory/lots - Crear lote
PUT /api/v1/inventory/lots/:id - Actualizar lote
GET /api/v1/inventory/lots/:id/movements - Movimientos del lote
Story Points estimados: 8 SP
FASE 2: Nuevos Modulos con BD Existente
2.1 Projects Module
Tablas BD existentes: projects.projects, projects.project_stages, projects.tasks, projects.milestones, projects.timesheets, projects.task_dependencies
Endpoints a implementar:
# Projects
GET /api/v1/projects - Listar proyectos
GET /api/v1/projects/:id - Obtener proyecto por ID
POST /api/v1/projects - Crear proyecto
PUT /api/v1/projects/:id - Actualizar proyecto
DELETE /api/v1/projects/:id - Eliminar proyecto (soft)
GET /api/v1/projects/:id/tasks - Tareas del proyecto
GET /api/v1/projects/:id/milestones - Hitos del proyecto
GET /api/v1/projects/:id/timesheets - Timesheets del proyecto
GET /api/v1/projects/:id/stats - Estadisticas del proyecto
# Project Stages
GET /api/v1/projects/stages - Listar stages
POST /api/v1/projects/stages - Crear stage
PUT /api/v1/projects/stages/:id - Actualizar stage
DELETE /api/v1/projects/stages/:id - Eliminar stage
# Tasks
GET /api/v1/projects/tasks - Listar tareas
GET /api/v1/projects/tasks/:id - Obtener tarea por ID
POST /api/v1/projects/tasks - Crear tarea
PUT /api/v1/projects/tasks/:id - Actualizar tarea
DELETE /api/v1/projects/tasks/:id - Eliminar tarea
POST /api/v1/projects/tasks/:id/move - Mover a otro stage (Kanban)
POST /api/v1/projects/tasks/:id/assign - Asignar tarea
# Milestones
GET /api/v1/projects/milestones - Listar milestones
GET /api/v1/projects/milestones/:id - Obtener milestone por ID
POST /api/v1/projects/milestones - Crear milestone
PUT /api/v1/projects/milestones/:id - Actualizar milestone
DELETE /api/v1/projects/milestones/:id - Eliminar milestone
POST /api/v1/projects/milestones/:id/complete - Marcar como completado
# Timesheets
GET /api/v1/projects/timesheets - Listar timesheets
GET /api/v1/projects/timesheets/:id - Obtener timesheet por ID
POST /api/v1/projects/timesheets - Registrar tiempo
PUT /api/v1/projects/timesheets/:id - Actualizar timesheet
DELETE /api/v1/projects/timesheets/:id - Eliminar timesheet
POST /api/v1/projects/timesheets/:id/submit - Enviar para aprobacion
POST /api/v1/projects/timesheets/:id/approve - Aprobar timesheet
Archivos a crear:
src/modules/projects/projects.routes.tssrc/modules/projects/projects.controller.tssrc/modules/projects/projects.service.tssrc/modules/projects/tasks.service.tssrc/modules/projects/milestones.service.tssrc/modules/projects/timesheets.service.tssrc/modules/projects/index.ts
Story Points estimados: 21 SP
2.2 System Module (Mensajeria & Notificaciones)
Tablas BD existentes: system.messages, system.notifications, system.activities, system.message_followers
Endpoints a implementar:
# Messages (Chatter)
GET /api/v1/system/messages - Listar mensajes
GET /api/v1/system/messages/:id - Obtener mensaje
POST /api/v1/system/messages - Crear mensaje
DELETE /api/v1/system/messages/:id - Eliminar mensaje
GET /api/v1/system/messages/thread/:model/:id - Mensajes de un registro
# Notifications
GET /api/v1/system/notifications - Mis notificaciones
GET /api/v1/system/notifications/unread - Notificaciones no leidas
POST /api/v1/system/notifications/:id/read - Marcar como leida
POST /api/v1/system/notifications/read-all - Marcar todas como leidas
DELETE /api/v1/system/notifications/:id - Eliminar notificacion
# Activities
GET /api/v1/system/activities - Mis actividades
GET /api/v1/system/activities/:id - Obtener actividad
POST /api/v1/system/activities - Crear actividad
PUT /api/v1/system/activities/:id - Actualizar actividad
DELETE /api/v1/system/activities/:id - Eliminar actividad
POST /api/v1/system/activities/:id/complete - Completar actividad
GET /api/v1/system/activities/due - Actividades pendientes
# Followers
GET /api/v1/system/followers/:model/:id - Seguidores de un registro
POST /api/v1/system/followers/:model/:id - Seguir registro
DELETE /api/v1/system/followers/:model/:id - Dejar de seguir
Archivos a crear:
src/modules/system/system.routes.tssrc/modules/system/system.controller.tssrc/modules/system/messages.service.tssrc/modules/system/notifications.service.tssrc/modules/system/activities.service.tssrc/modules/system/index.ts
Story Points estimados: 13 SP
FASE 3: Modulos Criticos (Requieren BD primero)
3.1 CRM Module
Requiere crear schema crm primero
Tablas a crear:
crm.leadscrm.lead_stagescrm.opportunitiescrm.opportunity_stagescrm.lost_reasons
Endpoints planificados:
# Leads
GET /api/v1/crm/leads
GET /api/v1/crm/leads/:id
POST /api/v1/crm/leads
PUT /api/v1/crm/leads/:id
DELETE /api/v1/crm/leads/:id
POST /api/v1/crm/leads/:id/convert - Convertir a oportunidad
POST /api/v1/crm/leads/:id/lost - Marcar como perdido
# Opportunities
GET /api/v1/crm/opportunities
GET /api/v1/crm/opportunities/:id
POST /api/v1/crm/opportunities
PUT /api/v1/crm/opportunities/:id
DELETE /api/v1/crm/opportunities/:id
POST /api/v1/crm/opportunities/:id/won - Marcar como ganada
POST /api/v1/crm/opportunities/:id/lost - Marcar como perdida
POST /api/v1/crm/opportunities/:id/quote - Crear cotizacion
# Pipeline
GET /api/v1/crm/pipeline - Vista Kanban
GET /api/v1/crm/stages - Listar stages
POST /api/v1/crm/stages - Crear stage
Story Points estimados: 21 SP (incluye BD)
3.2 HR Module
Requiere crear schema hr primero
Tablas a crear:
hr.employeeshr.departmentshr.job_positionshr.contractshr.leaves
Endpoints planificados:
# Employees
GET /api/v1/hr/employees
GET /api/v1/hr/employees/:id
POST /api/v1/hr/employees
PUT /api/v1/hr/employees/:id
DELETE /api/v1/hr/employees/:id
# Departments
GET /api/v1/hr/departments
POST /api/v1/hr/departments
PUT /api/v1/hr/departments/:id
DELETE /api/v1/hr/departments/:id
# Contracts
GET /api/v1/hr/contracts
GET /api/v1/hr/contracts/:id
POST /api/v1/hr/contracts
PUT /api/v1/hr/contracts/:id
POST /api/v1/hr/contracts/:id/activate
POST /api/v1/hr/contracts/:id/terminate
# Leaves (Ausencias)
GET /api/v1/hr/leaves
POST /api/v1/hr/leaves
PUT /api/v1/hr/leaves/:id
POST /api/v1/hr/leaves/:id/approve
POST /api/v1/hr/leaves/:id/reject
Story Points estimados: 21 SP (incluye BD)
Cronograma de Implementacion
| Fase | Modulo | SP | Prioridad | Dependencia | Estado |
|---|---|---|---|---|---|
| 1.1 | Sales Quotations/Orders | 13 | Alta | - | ✅ Completado |
| 1.2 | Financial Invoices/Payments | 21 | Alta | - | ✅ Completado |
| 1.3 | Purchases RFQs | 8 | Alta | - | ✅ Completado |
| 1.4 | Inventory Adjustments/Lots | 8 | Media | - | ✅ Completado |
| 2.1 | Projects Module | 21 | Alta | - | ✅ Completado |
| 2.2 | System Module | 13 | Alta | - | ✅ Completado |
| 3.1 | CRM Module | 21 | Critica | Schema CRM | ✅ Completado |
| 3.2 | HR Module | 21 | Critica | Schema HR | ✅ Completado |
| TOTAL | 126 SP | 100% |
Orden de Ejecucion Recomendado
Sprint 1: Completar Sales y Projects
- Sales Quotations/Orders (13 SP)
- Projects Module (21 SP)
Sprint 2: Financial y System
- Financial Invoices/Payments (21 SP)
- System Module (13 SP)
Sprint 3: Purchases e Inventory
- Purchases RFQs (8 SP)
- Inventory Adjustments/Lots (8 SP)
Sprint 4: CRM (requiere BD)
- Crear schema CRM
- CRM Module (21 SP)
Sprint 5: HR (requiere BD)
- Crear schema HR
- HR Module (21 SP)
Resumen de Implementacion Completada
Endpoints por Modulo (Final)
| Modulo | Endpoints |
|---|---|
| Auth | 3 |
| Users | 6 |
| Companies | 5 |
| Core | 41 |
| Partners | 19 |
| Inventory | 56 |
| Financial | 38 |
| Purchases | 33 |
| Sales | 42 |
| Projects | 30 |
| System | 19 |
| CRM | 35 |
| HR | 40 |
| TOTAL | 309 |
Schemas BD Creados
-
CRM Schema (
11-crm.sql)crm.leads- Prospectoscrm.lead_stages- Etapas de leadscrm.opportunities- Oportunidadescrm.opportunity_stages- Etapas de oportunidadescrm.lost_reasons- Razones de perdida
-
HR Schema (
12-hr.sql)hr.employees- Empleadoshr.departments- Departamentoshr.job_positions- Puestos de trabajohr.contracts- Contratos laboraleshr.leaves- Ausencias/permisoshr.leave_types- Tipos de ausencia
Documento generado por: Architecture-Analyst Fecha: 2025-11-24 Completado: 2025-11-24