Commit Graph

  • 5a231c206e Merge pull request 'feat(frontend): sidebar colapsable por secciones + fly-out en modo colapsado' (#62) from chore/sidebar-collapsible-sections into main main dmolinari 2026-04-21 17:09:07 +00:00
  • bcb0c94fc5 feat(frontend): sidebar secciones colapsables + fly-out en modo colapsado dmolinari 2026-04-21 14:07:12 -03:00
  • 2aae873a4b Merge pull request 'chore(frontend): reorganizar sidebar en secciones + quitar items disabled' (#61) from chore/sidebar-categorization into main dmolinari 2026-04-21 16:38:17 +00:00
  • 3a534f7ad3 chore(frontend): reorganize sidebar into grouped sections + remove disabled items dmolinari 2026-04-21 13:37:53 -03:00
  • dfeb5fb7e1 Merge pull request 'chore(prc-001): followups #54 #55 #57 #58 + cierre #52 #53' (#60) from chore/prc-001-followups into main dmolinari 2026-04-21 16:28:29 +00:00
  • 3e7c4bfde9 chore(prc-001): followups #54 #55 #57 #58 — emoji validator + opt-in pricing + demo seed + tsconfig dmolinari 2026-04-21 13:27:54 -03:00
  • 0eab947975 Merge pull request #59: PRC-001 WordCounter + ChargeableCharConfig (SPIKE + scope delta) dmolinari 2026-04-21 16:06:20 +00:00
  • ee36d86b5a docs(bd): V018..V024 entries in database/README.md (PRC-001 archive) dmolinari 2026-04-21 13:04:54 -03:00
  • 0e2e4c9c94 Merge PRC-001: WordCounter + ChargeableCharConfig (SPIKE) + refinement dmolinari 2026-04-21 12:58:07 -03:00
  • 3a596080cb fix(frontend): generic delete warning without FAC-001 reference (PRC-001) dmolinari 2026-04-21 12:47:07 -03:00
  • d7c6cbd4ff fix(backend+tests): reactivate endpoint 500 + test schema mismatches (PRC-001) dmolinari 2026-04-21 11:32:23 -03:00
  • 40b5f3904a fix(bd): V023 idempotent guard for SYSTEM_VERSIONING OFF (PRC-001) dmolinari 2026-04-21 11:18:53 -03:00
  • 3eecb05634 refactor+feat(frontend): chargeableChars por ProductType + Reactivate/Delete/UI condicional (PRC-001) dmolinari 2026-04-21 11:08:17 -03:00
  • f7fb76219a refactor+feat(backend): ChargeableCharConfig por ProductType + Reactivate + Delete endpoints (PRC-001) dmolinari 2026-04-21 10:54:47 -03:00
  • 5c1675e59a refactor(bd): V023+V024 ChargeableCharConfig por ProductType + SP ReactivateWithGuard (PRC-001) dmolinari 2026-04-21 10:35:38 -03:00
  • 5175cc1ece test(integration): concurrency + SYSTEM_VERSIONING + e2e extra (PRC-001) dmolinari 2026-04-20 13:21:59 -03:00
  • c2a0612a70 feat(frontend): chargeableChars feature — table + dialog + copy-to-all (PRC-001) dmolinari 2026-04-20 12:59:27 -03:00
  • 8fc7b363d5 feat(api): ChargeableCharConfigController + DI + ExceptionFilter integration (PRC-001) dmolinari 2026-04-20 12:46:07 -03:00
  • 3b1edfd696 feat(infrastructure): ChargeableCharConfigRepository Dapper + SP invocation (PRC-001) dmolinari 2026-04-20 12:32:17 -03:00
  • f1b38cd9ce feat(application): commands/queries + IChargeableCharConfigService (PRC-001) dmolinari 2026-04-20 12:24:06 -03:00
  • ded76fcdc7 feat(domain): WordCounterService + WordCountResult + ChargeableCharConfig entity + exceptions (PRC-001) dmolinari 2026-04-20 12:13:06 -03:00
  • 8ac91a13aa feat(bd): V020 permiso + V022 seed ChargeableCharConfig (PRC-001) dmolinari 2026-04-20 12:01:55 -03:00
  • 9144c2e89e feat(bd): V021 crea dbo.ChargeableCharConfig + SPs + índices (PRC-001) dmolinari 2026-04-20 12:01:49 -03:00
  • dd4d4a1673 Merge pull request 'feat: paginación en GET /api/v1/products/{id}/prices (closes #47)' (#51) from feature/prd-003-prices-pagination into main dmolinari 2026-04-19 23:08:31 +00:00
  • e997409e95 test(integration): pagination edge cases (prd-003-prices-pagination) dmolinari 2026-04-19 20:01:09 -03:00
  • 34b07a1d55 feat(frontend): pagination UI on product prices history (refs #47) dmolinari 2026-04-19 19:52:45 -03:00
  • 0dce3ee4ac feat(api): pagination on GET product prices (closes #47) dmolinari 2026-04-19 19:47:18 -03:00
  • da063ad677 Merge pull request 'refactor(frontend): unify dateFormat + numberFormat into formatters' (#50) from refactor/unify-formatters into main dmolinari 2026-04-19 22:26:48 +00:00
  • 7d06ac721b refactor(frontend): unify dateFormat + numberFormat into formatters (closes #46) dmolinari 2026-04-19 19:26:24 -03:00
  • 5a55fdaaae Merge pull request 'chore(infra): configure coverlet for backend C# coverage' (#49) from infra/coverlet-setup into main dmolinari 2026-04-19 22:22:05 +00:00
  • 9f1a312bb9 chore(infra): configure coverlet for backend C# coverage dmolinari 2026-04-19 19:21:45 -03:00
  • dd0e5e4fe8 Merge pull request 'feat: PRD-003 ProductPrices históricos (ValidFrom/ValidTo)' (#45) from feature/PRD-003 into main dmolinari 2026-04-19 22:07:21 +00:00
  • 7cabb677f3 test(integration): concurrency + SYSTEM_VERSIONING + e2e extra (PRD-003) dmolinari 2026-04-19 18:43:11 -03:00
  • 6a9818b0ae feat(frontend): productPrices feature — history + dialog (PRD-003) dmolinari 2026-04-19 18:36:17 -03:00
  • f6f24bc4be feat(api): ProductPricesController + DI + ExceptionFilter integration (PRD-003) dmolinari 2026-04-19 18:26:24 -03:00
  • 2d2e90fa3c feat(infrastructure): ProductPriceRepository Dapper + SP invocation (PRD-003) dmolinari 2026-04-19 18:15:30 -03:00
  • 4b0567d252 feat(application): commands/queries + IProductPricingService (PRD-003) dmolinari 2026-04-19 18:08:16 -03:00
  • 54b0265994 feat(domain): ProductPrice entity + exceptions (PRD-003) dmolinari 2026-04-19 17:59:43 -03:00
  • 59f30cddfb feat(bd): V019 crea dbo.ProductPrices + SP + índices (PRD-003) dmolinari 2026-04-19 17:53:58 -03:00
  • e735afb5b4 Merge pull request 'feat(domain): RubroConProductosActivosException + guard en DeactivateRubro (closes #41)' (#44) from fix/issue-41-rubro-deactivation-guard into main dmolinari 2026-04-19 20:09:38 +00:00
  • 50a5118a78 feat(api): ExceptionFilter + e2e 409 para RubroConProductosActivos (closes #41) dmolinari 2026-04-19 17:08:42 -03:00
  • c974e824e0 feat(infrastructure): ProductQueryRepository.CountActiveByRubroAsync + integration test dmolinari 2026-04-19 17:08:35 -03:00
  • 900fd5e975 feat(application): DeactivateRubroCommandHandler guard contra Products activos dmolinari 2026-04-19 17:08:30 -03:00
  • e9d1e3237d feat(domain): RubroConProductosActivosException + test (closes #41) dmolinari 2026-04-19 17:08:23 -03:00
  • e33e9f332e Merge pull request 'refactor(tests): TestWebAppFactory.CreateClientWithOverrides para DI override scoped (closes #36)' (#43) from fix/issue-36-rsa-singleton-override into main dmolinari 2026-04-19 20:00:47 +00:00
  • 0e363d1cfc refactor(tests): TestWebAppFactory.CreateClientWithOverrides para DI override por test (closes #36) dmolinari 2026-04-19 16:59:53 -03:00
  • c5a8cd9edd Merge pull request 'fix: openEdit fetch ProductTypeDetail antes de abrir dialog (closes #37)' (#42) from fix/issue-37-openedit-fetch-detail into main dmolinari 2026-04-19 19:53:47 +00:00
  • 616f6432d1 fix(frontend): openEdit fetch ProductTypeDetail antes de abrir dialog (closes #37) dmolinari 2026-04-19 16:53:00 -03:00
  • 1730b0623e Merge pull request 'feat: PRD-002 Product CRUD' (#40) from feature/PRD-002 into main dmolinari 2026-04-19 16:49:58 +00:00
  • d7fb3105fa feat(bd): V018 crea dbo.Product + SqlTestFixture consolida V018 + permisos catalogo (PRD-002 W6) dmolinari 2026-04-19 13:46:11 -03:00
  • b4f17d6961 refactor: eliminar NullProductQueryRepository dead code + EXISTS en ProductQueryRepository (PRD-002 S1 S2) dmolinari 2026-04-19 13:37:10 -03:00
  • a7cfcdb683 test(frontend): ProductsPage pagination + filter tests (PRD-002 W5) dmolinari 2026-04-19 13:36:48 -03:00
  • 0f5455aba6 test(frontend): ProductFormDialog + DeactivateProductDialog tests (PRD-002 W3 W4) dmolinari 2026-04-19 13:35:23 -03:00
  • 2b79b6f769 feat(frontend): ProductForm reactivo a flags ProductType (PRD-002 W2) dmolinari 2026-04-19 13:33:53 -03:00
  • d262454b28 fix(api): ExceptionFilter 409 para ProductTypeInactivo y RubroInactivo (PRD-002 W1) dmolinari 2026-04-19 13:31:38 -03:00
  • 08a4738daf feat(frontend): Products feature — CRUD page, form, dialogs, hooks (PRD-002) dmolinari 2026-04-19 13:24:42 -03:00
  • a41a4ea341 test(api): guard proof — ProductType deactivation returns 409 when active Products exist (PRD-002) dmolinari 2026-04-19 13:18:21 -03:00
  • 165abc8245 feat(api): ProductsController + ExceptionFilter Product cases, fix permiso count to 27 (PRD-002) dmolinari 2026-04-19 13:17:31 -03:00
  • 733ca0e2e2 test(infrastructure): ProductRepository integration tests — roundtrip, update, deactivate history, UQ (PRD-002) dmolinari 2026-04-19 13:11:21 -03:00
  • 8c9a50504d feat(infrastructure): ProductRepository + ProductQueryRepository, DI swap activates guard (PRD-002) dmolinari 2026-04-19 13:10:21 -03:00
  • bb455be745 feat(application): Product handlers + DI registration, fix permiso count to 27 (PRD-002) dmolinari 2026-04-19 13:07:59 -03:00
  • 8b555e1f8b feat(application): Product commands, DTOs, IProductRepository, validators (PRD-002) dmolinari 2026-04-19 13:02:42 -03:00
  • 16197cf242 feat(domain): Product entity + 5 domain exceptions (PRD-002) dmolinari 2026-04-19 12:59:58 -03:00
  • 0462970ea1 Merge pull request 'feat: PRD-001 ProductType (flags + multimedia)' (#38) from feature/PRD-001 into main dmolinari 2026-04-19 15:18:53 +00:00
  • d6ec618ff2 docs(tests): TODO W1 PRD-002 en ProductTypesControllerTests + audit doc ya completo (PRD-001) dmolinari 2026-04-19 12:10:35 -03:00
  • 230405e056 feat(frontend): wire dialogs en ProductTypesPage (PRD-001 W3) dmolinari 2026-04-19 12:10:09 -03:00
  • 9cb1e84ec0 feat(frontend): ProductTypeForm + Dialog + DeactivateDialog con TDD (PRD-001 W3) dmolinari 2026-04-19 12:08:36 -03:00
  • 3db4dedb91 feat(frontend): feature product-types completa (PRD-001) dmolinari 2026-04-19 10:01:12 -03:00
  • 170789886b feat(api): ProductTypesController + ExceptionFilter 4 casos PRD-001 dmolinari 2026-04-19 09:57:11 -03:00
  • 936d1dc353 feat(infrastructure): ProductTypeRepository Dapper + DI wiring (PRD-001) dmolinari 2026-04-19 09:49:08 -03:00
  • 5c8f19bf39 feat(application): CRUD handlers + validators + DI de ProductType (PRD-001) dmolinari 2026-04-19 09:46:31 -03:00
  • 3c9e852379 feat(application): IProductTypeRepository + IProductQueryRepository stub + queries (PRD-001) dmolinari 2026-04-19 09:38:51 -03:00
  • 132d17c99f feat(domain): ProductType entity + domain exceptions (PRD-001) dmolinari 2026-04-19 09:36:29 -03:00
  • de70152d3e feat(bd): V017 crea dbo.ProductType con SYSTEM_VERSIONING + permiso catalogo:tipos:gestionar (PRD-001) dmolinari 2026-04-19 09:34:23 -03:00
  • d8d1da8ea4 Merge pull request 'feat: CAT-002 Regla de Oro Rama vs Hoja + validaciones' (#35) from feature/CAT-002 into main dmolinari 2026-04-19 11:56:32 +00:00
  • a0a1874ac2 test(frontend): apretar match exacto del title en CategoryTree (CAT-002 W2) dmolinari 2026-04-19 08:52:34 -03:00
  • 4f25233bab feat(frontend): tieneAvisos en RubroTreeNode + disable btn subrubro (CAT-002) dmolinari 2026-04-19 08:35:42 -03:00
  • bb5dde6e24 feat(api): ExceptionFilter 409 para regla de oro + DTO delta (CAT-002) dmolinari 2026-04-19 08:31:39 -03:00
  • f861dfa826 feat(application): RubroTreeBuilder + GetRubroTree con tieneAvisos (CAT-002) dmolinari 2026-04-19 08:25:13 -03:00
  • c03aad8c5a feat(application): guard avisos en MoveRubroCommandHandler (CAT-002) dmolinari 2026-04-19 08:24:07 -03:00
  • 216983623a feat(application): guard avisos en CreateRubroCommandHandler (CAT-002) dmolinari 2026-04-19 08:22:55 -03:00
  • 9e50a929ae feat(application): RubroTreeBuilder + GetRubroTree con tieneAvisos (CAT-002) dmolinari 2026-04-19 08:20:36 -03:00
  • 673194e249 feat(application): IAvisoQueryRepository + NullAvisoQueryRepository (CAT-002) dmolinari 2026-04-19 08:18:56 -03:00
  • ddd28ea4d5 feat(domain): excepciones regla de oro rama/hoja (CAT-002) dmolinari 2026-04-19 08:17:45 -03:00
  • 205f9c76ad Merge pull request 'feat: CAT-001 Árbol N-ario de Rubros' (#30) from feature/CAT-001 into main dmolinari 2026-04-19 10:49:37 +00:00
  • 389dda6e5e fix(tests): consolidar V016 en SqlTestFixture post issue #29 dmolinari 2026-04-19 07:49:18 -03:00
  • bd2febf411 fix(frontend): MoveRubroDialog type cast para zodResolver output (CAT-001) dmolinari 2026-04-18 21:05:51 -03:00
  • 46ef3878de feat(frontend): MoveRubroDialog + wire en RubrosPage + aria-describedby (CAT-001) dmolinari 2026-04-18 20:52:08 -03:00
  • 022a36a90c test(application): GetRubroByIdQueryHandlerTests dedicado (CAT-001) dmolinari 2026-04-18 20:50:16 -03:00
  • f07802f769 fix(frontend): corregir tipos zodResolver en RubroFormDialog (CAT-001) dmolinari 2026-04-18 20:36:12 -03:00
  • b22e9fe59a feat(frontend): rubros feature + CategoryTree + CRUD dialogs (CAT-001) dmolinari 2026-04-18 20:21:11 -03:00
  • 5e2323e0bc feat(api): RubrosController + integration tests e2e + audit verification (CAT-001) dmolinari 2026-04-18 20:05:20 -03:00
  • f8e9d18379 feat(infrastructure): RubroRepository Dapper + DI + integration tests (CAT-001) dmolinari 2026-04-18 20:00:51 -03:00
  • d9fc9a2867 feat(application): Rubros commands/queries + RubroTreeBuilder + audit (CAT-001) dmolinari 2026-04-18 19:25:35 -03:00
  • dcb2e5ada6 feat(domain): Rubro entity + domain exceptions (CAT-001) dmolinari 2026-04-18 19:17:33 -03:00
  • 9f78425a93 fix(bd): V016 COLLATE order — SQL Server requiere COLLATE antes de NOT NULL (CAT-001) dmolinari 2026-04-18 19:10:03 -03:00
  • 0d50d4f3cc feat(bd): V016 create Rubro table con SYSTEM_VERSIONING (CAT-001) dmolinari 2026-04-18 19:04:24 -03:00
  • 9886524645 Merge pull request 'fix: issue #29 — integration tests flakiness (DB split + SqlTestFixture consolidado)' (#34) from fix/issue-29-flakiness into main dmolinari 2026-04-19 10:41:27 +00:00
  • bcbba2c012 Merge pull request 'chore(frontend): limpiar lint errors pre-existentes' (#33) from chore/frontend-lint-preexisting into main dmolinari 2026-04-19 10:41:16 +00:00
  • 3cb89f80a3 Merge pull request 'chore(tests): dotnet format sobre archivos pre-existentes' (#32) from chore/dotnet-format-testfixtures into main dmolinari 2026-04-19 10:41:14 +00:00