diff --git a/apps/server/package.json b/apps/server/package.json index 78335b15..2028686a 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@erp/factuges-server", - "version": "0.10.5", + "version": "0.10.7", "private": true, "scripts": { "build": "tsup src/index.ts --config tsup.config.ts", @@ -82,4 +82,4 @@ "engines": { "node": ">=22" } -} +} \ No newline at end of file diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index 506d7d76..683888ea 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -38,7 +38,7 @@ const operationContext = new AsyncLocalStorageOperationContextStore(); const transactionContext = new SequelizeTransactionContext(); const auditContextProvider = new OperationAuditContextProvider(operationContext); -const AUDIT_SOURCE = { type: "application", id: "uecko-erp" } as const; +const AUDIT_SOURCE = { type: "application", id: "factuges-erp" } as const; // Guardamos información del estado del servidor export const currentState = { diff --git a/apps/server/src/testing/http/audit-http.integration.test.ts b/apps/server/src/testing/http/audit-http.integration.test.ts index 7cac3c6e..083c9039 100644 --- a/apps/server/src/testing/http/audit-http.integration.test.ts +++ b/apps/server/src/testing/http/audit-http.integration.test.ts @@ -17,7 +17,7 @@ function event(id: string, scopeId: string | null) { kind: "event", occurred_at: new Date("2026-08-25T10:00:00.000Z"), source_type: "application", - source_id: "uecko-erp", + source_id: "factuges-erp", operation_id: `op-${id}`, correlation_id: `cor-${id}`, origin: "http", diff --git a/apps/server/src/testing/http/audit-reader.integration.test.ts b/apps/server/src/testing/http/audit-reader.integration.test.ts index 487ad8cd..2e2684e2 100644 --- a/apps/server/src/testing/http/audit-reader.integration.test.ts +++ b/apps/server/src/testing/http/audit-reader.integration.test.ts @@ -64,7 +64,7 @@ function entry(id: string, action: string, scopeId: string | null, occurredAt: s kind: "event", occurred_at: new Date(occurredAt), source_type: "application", - source_id: "uecko-erp", + source_id: "factuges-erp", operation_id: `operation-${id}`, correlation_id: `correlation-${id}`, origin: "http", diff --git a/apps/server/src/testing/http/audit-runtime.integration.test.ts b/apps/server/src/testing/http/audit-runtime.integration.test.ts index 7733b4f9..30a7888d 100644 --- a/apps/server/src/testing/http/audit-runtime.integration.test.ts +++ b/apps/server/src/testing/http/audit-runtime.integration.test.ts @@ -156,7 +156,7 @@ test("Audit runtime propaga contexto HTTP y transacciones hasta MariaDB", async const event = await AuditEventModel.findOne({ where: { action: "test.audit.event" } }); assert.ok(event); assert.equal(event.source_type, "application"); - assert.equal(event.source_id, "uecko-erp"); + assert.equal(event.source_id, "factuges-erp"); assert.equal(event.origin, "http"); assert.equal(event.operation_id, eventResponse.headers.get("x-request-id")); assert.equal(event.correlation_id, correlationId); diff --git a/apps/server/src/testing/http/company-audit.integration.test.ts b/apps/server/src/testing/http/company-audit.integration.test.ts index 7323fd90..daa4ef1a 100644 --- a/apps/server/src/testing/http/company-audit.integration.test.ts +++ b/apps/server/src/testing/http/company-audit.integration.test.ts @@ -108,7 +108,7 @@ test("companies registra create, updates, no-ops y rollback con MariaDB", async assert.equal(updatedEvent.target_type, "company"); assert.equal(updatedEvent.target_label, "Updated company"); assert.equal(updatedEvent.source_type, "application"); - assert.equal(updatedEvent.source_id, "uecko-erp"); + assert.equal(updatedEvent.source_id, "factuges-erp"); assert.equal(updatedEvent.origin, "http"); assert.equal(updatedEvent.operation_id, updateResponse.headers.get("x-request-id")); assert.equal(updatedEvent.correlation_id, "company-update-correlation"); diff --git a/apps/server/src/testing/http/customer-audit.integration.test.ts b/apps/server/src/testing/http/customer-audit.integration.test.ts index d6521151..84e213a6 100644 --- a/apps/server/src/testing/http/customer-audit.integration.test.ts +++ b/apps/server/src/testing/http/customer-audit.integration.test.ts @@ -157,7 +157,7 @@ test("customers registra create, update y el create público en MariaDB", async }); assert.ok(createdEvent); assert.equal(createdEvent.source_type, "application"); - assert.equal(createdEvent.source_id, "uecko-erp"); + assert.equal(createdEvent.source_id, "factuges-erp"); assert.equal(createdEvent.origin, "http"); assert.equal(createdEvent.operation_id, createResponse.headers.get("x-request-id")); assert.equal(createdEvent.correlation_id, "customer-create-correlation"); diff --git a/apps/server/src/testing/http/http-test-runtime.ts b/apps/server/src/testing/http/http-test-runtime.ts index f62b3272..2f4a5eb2 100644 --- a/apps/server/src/testing/http/http-test-runtime.ts +++ b/apps/server/src/testing/http/http-test-runtime.ts @@ -47,7 +47,7 @@ import { registerModules } from "@/register-modules.ts"; const currentDir = dirname(fileURLToPath(import.meta.url)); const TEST_ENV_FILE = resolve(currentDir, "../../../.env.test"); const FORBIDDEN_DATABASE_NAMES = new Set(["uecko_erp", "uecko_erp_sync", "rodax_db"]); -const AUDIT_SOURCE = { type: "application", id: "uecko-erp" } as const; +const AUDIT_SOURCE = { type: "application", id: "factuges-erp" } as const; export interface HttpTestRuntimeOptions { readonly testModules?: readonly IModuleServer[]; diff --git a/apps/server/src/testing/http/payment-method-audit.integration.test.ts b/apps/server/src/testing/http/payment-method-audit.integration.test.ts index e7c1d987..7902ade4 100644 --- a/apps/server/src/testing/http/payment-method-audit.integration.test.ts +++ b/apps/server/src/testing/http/payment-method-audit.integration.test.ts @@ -68,7 +68,7 @@ test("payment methods registra create y update con el contexto HTTP en MariaDB", }); assert.ok(createdAudit); assert.equal(createdAudit.source_type, "application"); - assert.equal(createdAudit.source_id, "uecko-erp"); + assert.equal(createdAudit.source_id, "factuges-erp"); assert.equal(createdAudit.origin, "http"); assert.equal(createdAudit.operation_id, createResponse.headers.get("x-request-id")); assert.equal(createdAudit.correlation_id, "payment-method-create-correlation"); diff --git a/apps/server/src/testing/http/payment-term-audit.integration.test.ts b/apps/server/src/testing/http/payment-term-audit.integration.test.ts index 3e7cc69e..ad9bc35d 100644 --- a/apps/server/src/testing/http/payment-term-audit.integration.test.ts +++ b/apps/server/src/testing/http/payment-term-audit.integration.test.ts @@ -87,7 +87,7 @@ test("payment terms registra dueRules atómicas y revierte junto con el agregado }); assert.ok(auditEvent); assert.equal(auditEvent.source_type, "application"); - assert.equal(auditEvent.source_id, "uecko-erp"); + assert.equal(auditEvent.source_id, "factuges-erp"); assert.equal(auditEvent.origin, "http"); assert.equal(auditEvent.operation_id, updateResponse.headers.get("x-request-id")); assert.equal(auditEvent.correlation_id, "payment-term-due-rules-correlation"); diff --git a/apps/server/src/testing/http/supplier-audit.integration.test.ts b/apps/server/src/testing/http/supplier-audit.integration.test.ts index 859d76a1..074bd1c5 100644 --- a/apps/server/src/testing/http/supplier-audit.integration.test.ts +++ b/apps/server/src/testing/http/supplier-audit.integration.test.ts @@ -85,7 +85,7 @@ test("suppliers registra create/update, omite no-ops y revierte Supplier + Audit }); assert.ok(createdEvent); assert.equal(createdEvent.source_type, "application"); - assert.equal(createdEvent.source_id, "uecko-erp"); + assert.equal(createdEvent.source_id, "factuges-erp"); assert.equal(createdEvent.origin, "http"); assert.equal(createdEvent.operation_id, createResponse.headers.get("x-request-id")); assert.equal(createdEvent.correlation_id, "supplier-create-correlation"); diff --git a/apps/server/src/testing/http/supplier-status-audit.integration.test.ts b/apps/server/src/testing/http/supplier-status-audit.integration.test.ts index 924a6aca..0698adfa 100644 --- a/apps/server/src/testing/http/supplier-status-audit.integration.test.ts +++ b/apps/server/src/testing/http/supplier-status-audit.integration.test.ts @@ -74,7 +74,7 @@ test("suppliers activa y desactiva con Audit transaccional en MariaDB", async (t }); assert.ok(deactivatedEvent); assert.equal(deactivatedEvent.source_type, "application"); - assert.equal(deactivatedEvent.source_id, "uecko-erp"); + assert.equal(deactivatedEvent.source_id, "factuges-erp"); assert.equal(deactivatedEvent.origin, "http"); assert.equal(deactivatedEvent.operation_id, deactivateResponse.headers.get("x-request-id")); assert.equal(deactivatedEvent.correlation_id, "supplier-deactivate-correlation"); diff --git a/apps/web/package.json b/apps/web/package.json index 758cfa4e..8ba37e16 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,7 +1,7 @@ { "name": "@erp/factuges-web", "private": true, - "version": "0.10.5", + "version": "0.10.7", "type": "module", "scripts": { "typecheck": "tsc -p tsconfig.json --noEmit", diff --git a/docs/audit/audit-system-design.md b/docs/audit/audit-system-design.md index 19a56fa4..9b8797cd 100644 --- a/docs/audit/audit-system-design.md +++ b/docs/audit/audit-system-design.md @@ -107,7 +107,7 @@ Si Audit falla, el resultado debe propagarse y T1 revierte negocio y auditoría. `audit_changes` tiene PK compuesta `(audit_event_id, position)`, FK a `audit_events(id)` con `ON DELETE CASCADE`, además de `path`, `kind`, `before_value` y `after_value` JSON. MariaDB puede devolver JSON como texto; los getters del modelo lo parsean para mantener el contrato al leer. `position` preserva el orden persistido. -La composición productiva crea una única instancia: `AsyncLocalStorageOperationContextStore -> OperationAuditContextProvider`, `SequelizeTransactionContext -> SequelizeAuditStore`, y `Audit({ source: { type: "application", id: "uecko-erp" }, ... })`. Esa instancia se entrega como `ModuleParams.audit`; los módulos reciben el puerto, no el store concreto ni una instancia por request. +La composición productiva crea una única instancia: `AsyncLocalStorageOperationContextStore -> OperationAuditContextProvider`, `SequelizeTransactionContext -> SequelizeAuditStore`, y `Audit({ source: { type: "application", id: "factuges-erp" }, ... })`. Esa instancia se entrega como `ModuleParams.audit`; los módulos reciben el puerto, no el store concreto ni una instancia por request. ## Patrón de instrumentación funcional diff --git a/modules/audit/package.json b/modules/audit/package.json index bfc0b57f..8c9a2c44 100644 --- a/modules/audit/package.json +++ b/modules/audit/package.json @@ -1,7 +1,7 @@ { "name": "@erp/audit", "description": "Audit frontend module", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -40,4 +40,4 @@ "react-router-dom": "^7.14.0", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/auth/package.json b/modules/auth/package.json index 49fb07be..61d9ffb2 100644 --- a/modules/auth/package.json +++ b/modules/auth/package.json @@ -1,6 +1,6 @@ { "name": "@erp/auth", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/catalogs/package.json b/modules/catalogs/package.json index 64936a50..1d9995c6 100644 --- a/modules/catalogs/package.json +++ b/modules/catalogs/package.json @@ -1,7 +1,7 @@ { "name": "@erp/catalogs", "description": "Catalogs module", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -53,4 +53,4 @@ "use-debounce": "^10.1.1", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/companies/package.json b/modules/companies/package.json index 6dd22b56..d18b8516 100644 --- a/modules/companies/package.json +++ b/modules/companies/package.json @@ -1,7 +1,7 @@ { "name": "@erp/companies", "description": "Companies module", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -50,4 +50,4 @@ "sequelize": "^6.37.8", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/core/package.json b/modules/core/package.json index 22e8b6c1..70482111 100644 --- a/modules/core/package.json +++ b/modules/core/package.json @@ -1,6 +1,6 @@ { "name": "@erp/core", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -59,4 +59,4 @@ "sequelize": "^6.37.8", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/customer-invoices/package.json b/modules/customer-invoices/package.json index 4bf0749f..ec95314b 100644 --- a/modules/customer-invoices/package.json +++ b/modules/customer-invoices/package.json @@ -1,6 +1,6 @@ { "name": "@erp/customer-invoices", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -70,4 +70,4 @@ "sequelize": "^6.37.8", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/customers/package.json b/modules/customers/package.json index e0e395ae..5883f301 100644 --- a/modules/customers/package.json +++ b/modules/customers/package.json @@ -1,7 +1,7 @@ { "name": "@erp/customers", "description": "Customers", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -58,4 +58,4 @@ "use-debounce": "^10.1.1", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/modules/document-series/package.json b/modules/document-series/package.json index a6a26839..fb5add8d 100644 --- a/modules/document-series/package.json +++ b/modules/document-series/package.json @@ -1,7 +1,7 @@ { "name": "@erp/document-series", "description": "Document series module", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/factuges/package.json b/modules/factuges/package.json index f6aeb124..15a0e7ee 100644 --- a/modules/factuges/package.json +++ b/modules/factuges/package.json @@ -1,6 +1,6 @@ { "name": "@erp/factuges", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/identity/package.json b/modules/identity/package.json index 5d0bbc75..73c11af9 100644 --- a/modules/identity/package.json +++ b/modules/identity/package.json @@ -1,7 +1,7 @@ { "name": "@erp/identity", "description": "Identity module", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/supplier-invoices/package.json b/modules/supplier-invoices/package.json index 9add489a..633186ea 100644 --- a/modules/supplier-invoices/package.json +++ b/modules/supplier-invoices/package.json @@ -1,7 +1,7 @@ { "name": "@erp/supplier-invoices", "description": "Supplier invoices", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/suppliers/package.json b/modules/suppliers/package.json index eabc4340..a08eb2c5 100644 --- a/modules/suppliers/package.json +++ b/modules/suppliers/package.json @@ -1,7 +1,7 @@ { "name": "@erp/suppliers", "description": "Suppliers", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -57,4 +57,4 @@ "use-debounce": "^10.1.1", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 9fb01d72..b0e56cb2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "uecko-erp-2025", + "name": "factuges-erp-2025", "private": true, - "version": "0.10.5", + "version": "0.10.7", "workspaces": [ "apps/*", "modules/*", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 115d2a73..a16dfb1c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@repo/i18next", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "scripts": { diff --git a/packages/rdx-audit/package.json b/packages/rdx-audit/package.json index ebe7f742..53fbbf2a 100644 --- a/packages/rdx-audit/package.json +++ b/packages/rdx-audit/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-audit", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, @@ -24,4 +24,4 @@ "dependencies": { "@repo/rdx-utils": "workspace:*" } -} +} \ No newline at end of file diff --git a/packages/rdx-criteria/package.json b/packages/rdx-criteria/package.json index 42c9debb..6848f863 100644 --- a/packages/rdx-criteria/package.json +++ b/packages/rdx-criteria/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-criteria", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-ddd/package.json b/packages/rdx-ddd/package.json index f5703715..69366114 100644 --- a/packages/rdx-ddd/package.json +++ b/packages/rdx-ddd/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-ddd", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-logger/package.json b/packages/rdx-logger/package.json index d70b6b02..9c84575a 100644 --- a/packages/rdx-logger/package.json +++ b/packages/rdx-logger/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-logger", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-ui/package.json b/packages/rdx-ui/package.json index 1180cad9..81a7f7ca 100644 --- a/packages/rdx-ui/package.json +++ b/packages/rdx-ui/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-ui", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-utils/package.json b/packages/rdx-utils/package.json index 6b550ae4..bbf0cf0d 100644 --- a/packages/rdx-utils/package.json +++ b/packages/rdx-utils/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-utils", - "version": "0.10.5", + "version": "0.10.7", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/shadcn-ui/package.json b/packages/shadcn-ui/package.json index 798b728e..95044a74 100644 --- a/packages/shadcn-ui/package.json +++ b/packages/shadcn-ui/package.json @@ -1,6 +1,6 @@ { "name": "@repo/shadcn-ui", - "version": "0.10.5", + "version": "0.10.7", "type": "module", "private": true, "exports": { diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index ecfe60d4..76d586e1 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@repo/typescript-config", - "version": "0.10.5", + "version": "0.10.7", "private": true, "publishConfig": { "access": "public" diff --git a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator index 0d9daaed..0fae8c7b 100755 Binary files a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator and b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator differ diff --git a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe index 86b00459..0884c69e 100755 Binary files a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe and b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe differ