Servicios Go/Gin

Servicio: budget

Información General


Propósito de Negocio

El control presupuestario en Bimtrazer permite: - Comparar presupuesto planificado vs gasto real - Registrar compromisos financieros (contratos firmados) - Calcular acumulados por etiqueta de trabajo - Generar vistas de desempeño financiero del proyecto


Endpoints Expuestos

POST (crear registros)

Path Descripción
POST /budget/records Crear registro de presupuesto
POST /budget/committed-records Crear registro de compromiso
POST /budget/spent-records Crear registro de gasto real

GET (consultar acumulados)

Path Descripción
GET /budget/accumulated/:projectId/:labelCode Acumulado de presupuesto por etiqueta
GET /budget/spent-accumulated/:projectId/:labelCode Acumulado de gasto por etiqueta
GET /budget/committed-accumulated/:projectId/:labelCode Acumulado de compromisos por etiqueta
GET /budget/all-accumulated/:projectId Todos los acumulados de presupuesto
GET /budget/all-spent-accumulated/:projectId Todos los acumulados de gasto
GET /budget/all-committed-accumulated/:projectId Todos los acumulados de compromisos
GET /budget/records/:projectId/:labelCode Registros de presupuesto por etiqueta
GET /budget/spent-records/:projectId/:labelCode Registros de gasto por etiqueta
GET /budget/committed-records/:projectId/:labelCode Registros de compromisos por etiqueta
GET /budget/all-records/:projectId Todos los registros de presupuesto
GET /budget/all-spent-records/:projectId Todos los registros de gasto
GET /budget/all-committed-records/:projectId Todos los registros de compromisos

Base de Datos

Colecciones Usadas

Colección Base de Datos Descripción
budget_records {projectId} Registros de presupuesto
committed_records {projectId} Registros de compromisos
spent_records {projectId} Registros de gasto real

Estructura de Registro

{
  "_id": "ObjectId",
  "amount": "float64",
  "currency": "string",
  "user": "string",
  "notes": "string",
  "date": "time.Time",
  "labelCode": "string",
  "status": "bool (activo/inactivo)"
}

Variables de Entorno

Variable Descripción
ENVIRONMENT Ambiente: dev, qa, prod, local
{ENV}_PORT Puerto HTTP (:8118)
{ENV}_DB_USER Usuario MongoDB
{ENV}_DB_PASSWORD Contraseña MongoDB (sensible)
{ENV}_DB_HOST Host MongoDB
{ENV}_DB_PORT Puerto MongoDB
{ENV}_ALLOWED_IPS IPs permitidas
{ENV}_ALLOWED_HOSTS Hosts permitidos

Lógica de Acumulados

Al crear registros con accumulatedValues = true:

Crea múltiples registros a partir de datos acumulados
En lugar de un registro puntual, distribuye el acumulado en períodos

Los endpoints GET /.../accumulated/... devuelven la suma de todos los registros activos (status = true) para la etiqueta solicitada.


Middlewares


Rol en Casos de Uso

Caso de Uso Rol
CU-12: Registro de Presupuesto Servicio principal