Lizandro Guarnizo 7682b11dff feat: consolidations, aduanero portal, payments admin, bug fixes, tests
## Bugs corregidos
- bodega/page.tsx: estados correctos §08 (RECIBIDO_BODEGA, EN_VERIFICACION, EN_TRANSITO_ECUADOR)
- admin/page.tsx: carga paquetes reales, alertas de incidencias/B2B/cobros pendientes, barras de estado

## Nuevos portales y páginas
- /aduanero/ — portal propio para AGENTE_ADUANERO (layout + dashboard §11 + declaraciones DSI)
- /aduanero/declaraciones — cola de declaraciones con formulario DSI y detección DAI automática
- /admin/pagos — gestión de cobros: KPIs, filtros por estado, tabla con breakdown
- /portal/consolidacion — cliente crea/gestiona consolidaciones §21
- /bodega/consolidacion — operador cierra y despacha consolidaciones (→ EN_TRANSITO_ECUADOR)

## API nueva (ConsolidationsModule)
- GET/POST /consolidations
- GET /consolidations/:id
- POST /consolidations/:id/packages
- DELETE /consolidations/:id/packages/:packageId
- POST /consolidations/:id/close
- POST /consolidations/:id/dispatch (→ actualiza paquetes a EN_TRANSITO_ECUADOR)

## Prisma schema v0.5
- ConsolidationStatus enum (ABIERTA, CERRADA, DESPACHADA, ENTREGADA, CANCELADA)
- Consolidation model con totales calculados (totalWeightLb, totalValue)
- ConsolidationPackage (tabla intermedia, un paquete = una consolidación)
- db push aplicado a remote DB (46.202.93.92)

## Navegación
- Login: AGENTE_ADUANERO → /aduanero (ya no /bodega)
- Bodega nav: añadido Consolidaciones
- Portal nav: añadido Consolidar
- Admin nav: añadido Cobros

## Tests (104 total, 8 suites)
- payments.service.spec.ts: 16 tests (createIntent, confirm, list, findByPackageForUser)
- notifications.service.spec.ts: 12 tests (getTemplates, updateTemplate, seedDefaultTemplates, notifyStatusChange, findByUser)

## Legal §21
- Registro: aviso LOPDP Ecuador + normativa NJ en footer del formulario
- Landing footer: aviso detallado de protección de datos LOPDP/NJ

## api.ts: consolidations.* client methods
2026-06-01 18:29:26 -05:00

Moraworld Imports — Software

Casillero internacional (EE.UU. → Ecuador). Monorepo con Next.js, NestJS, PostgreSQL y Redis.

Requisitos

  • Node.js 20+
  • pnpm 9+ (ver instalación abajo si sale command not found)
  • Postgres + Redis — en Coolify (recomendado) o Docker local

Instalar pnpm (si no lo tienes)

npm install -g pnpm@9.15.0

Cierra y abre la terminal, luego:

pnpm -v   # debe mostrar 9.15.x

Alternativa sin instalar global (usa npx):

npx pnpm@9.15.0 install
npx pnpm@9.15.0 dev

Desarrollo local (paso a paso)

1. Variables de entorno

cp .env.example .env

Pega DATABASE_URL y REDIS_URL de Coolify. Guía: docs/VARIABLES-COOLIFY.md

2. Infraestructura (solo si NO usas Coolify para BD)

pnpm docker:up

Levanta PostgreSQL (localhost:5432) y Redis (localhost:6379).
Si Postgres/Redis ya están en Coolify, omite este paso.

3. Instalar dependencias

pnpm install

4. Base de datos

pnpm db:generate
pnpm db:migrate

Nombre sugerido para la primera migración: init.

5. Arrancar apps

pnpm dev
Servicio URL
Web (Next.js) http://localhost:3000
API (NestJS) http://localhost:3001/api/health
Estado http://localhost:3000/status

Estructura

apps/
  api/          # NestJS REST API
  web/          # Next.js (landing + futuro portal)
packages/
  database/     # Prisma + PostgreSQL

Coolify

Ver docs/COOLIFY.md para desplegar API y Web en Coolify (Postgres/Redis como servicios del panel o externos).

Roadmap

Ver ROADMAP.md — Fase 0 en curso.

Prototipos HTML (legacy)

Los archivos index.html, portal-cliente.html, etc. en la raíz del repo son maquetas de referencia hasta completar la migración a Next.js (Fase 1).

S
Description
No description provided
Readme
521 KiB
Languages
TypeScript 60.5%
HTML 35.7%
CSS 3.6%
Dockerfile 0.2%