Servicios Go/Gin

Servicio: items

Información General


Propósito de Negocio

Items es la capa de control de costos detallados: - Define “items” (componentes presupuestarios: mano de obra, materiales, equipos) - Asocia recursos con sus costos unitarios - Asigna bloques de construcción a items - Calcula el costo total de una etiqueta sumando los costos de sus bloques


Endpoints Expuestos

PathDescripción
POST /items/resourceCrear recurso
POST /itemsCrear item
POST /items/v1Crear item (versión alternativa)
POST /items/unitsCrear unidad de medida
POST /items/currenciesCrear moneda
GET /items/:projectIdItems activos del proyecto
GET /items/resources/:projectIdRecursos del proyecto
GET /items/assigned-blocks/:projectId/:itemIdBloques asignados a un item
GET /items/unitsListar unidades disponibles
GET /items/currenciesListar monedas disponibles
GET /cost-related/:projectIdItems de costo del proyecto
GET /filtered-cost/:projectId/:labelCode/:itemIdCosto filtrado por etiqueta e item
GET /budget-cost/:projectId/:labelCodeCosto presupuestado por etiqueta
PUT /items/assign-resourcesAsignar recursos a un item
PUT /items/assign-blocksAsignar bloques a un item
DELETE /itemsEliminar item

Base de Datos

Colecciones Usadas

Colección Base de Datos Descripción
items {projectId} Documentos Item
resources {projectId} Recursos con costos
units {projectId} Unidades de medida
currencies {projectId} Monedas
costs {projectId} Costos calculados

Estructura de Item

{
  "_id": "ObjectId",
  "name": "string",
  "description": "string",
  "projectId": "string",
  "resources": [{ "id": "ObjectId", "quantity": "float64" }],
  "blocks": [{ "code": "string", "description": "string", "quantity": "float64" }],
  "valid": true,
  "unit": "string",
  "type": "string"
}

Estructura de Resource

{
  "_id": "ObjectId",
  "name": "string",
  "description": "string",
  "unit": "string",
  "cost": [{ "name": "string", "code": "string", "quantity": "float64" }],
  "projectId": "string",
  "type": "string",
  "valid": true
}

Variables de Entorno

Variable Descripción
ENVIRONMENT Ambiente: dev, qa, prod, local
{ENV}_PORT Puerto HTTP (:8115)
{ENV}_DB_USER Usuario MongoDB
{ENV}_DB_PASSWORD Contraseña MongoDB (sensible)
{ENV}_DB_HOST Host MongoDB
{ENV}_ALLOWED_IPS IPs permitidas
{ENV}_ALLOWED_HOSTS Hosts permitidos
{ENV}_BUDGET_URL URL del servicio Budget externo
{ENV}_BUDGET_API_KEY API Key del servicio Budget (sensible)

Dependencias Externas

Servicio Propósito
Budget API externa Validación de presupuestos y cálculo de costos estimados
Projects service Obtención de datos de bloques para validación

Middlewares


Rol en Casos de Uso

Caso de Uso Rol
CU-12: Registro de Presupuesto Provee costo unitario de los bloques