Commit Graph

  • 39160bbb83 feat(api): PuntosDeVentaController + ExceptionFilter mappings ADM-008 dmolinari 2026-04-17 12:34:30 -03:00
  • 489359f0b8 feat(infrastructure): PuntoDeVentaRepository con Dapper + mapping SqlException + registro DI dmolinari 2026-04-17 12:29:16 -03:00
  • 50f6f2b67a feat(application): repository abstraction + DTOs + validators + handlers CRUD PuntosDeVenta con auditoría + retry deadlock dmolinari 2026-04-17 12:28:11 -03:00
  • 43877bd4a1 feat(domain): entidad PuntoDeVenta + SecuenciaComprobante + TipoComprobante + excepciones dmolinari 2026-04-17 12:21:45 -03:00
  • bef8977c5c feat(db): migration V013 + SP usp_ReservarNumeroComprobante para ADM-008 dmolinari 2026-04-17 12:16:56 -03:00
  • b7ac9831f9 Merge pull request '#18 fix(adm-001): cascada de inactividad Medio→Seccion' dmolinari 2026-04-17 14:50:03 +00:00
  • 3829c93af6 test(secciones): cobertura cascada de inactividad — issue #16 dmolinari 2026-04-17 11:46:14 -03:00
  • 4fb25356a3 feat(web): banner y disabled de secciones de medio inactivo — issue #16 dmolinari 2026-04-17 11:46:09 -03:00
  • 455954fa98 feat(api): mapping 409 medio_inactivo en ExceptionFilter — issue #16 dmolinari 2026-04-17 11:46:05 -03:00
  • 870cbe91b3 feat(secciones): validar medio activo en update/deactivate/reactivate — issue #16 dmolinari 2026-04-17 11:46:01 -03:00
  • 1ad6633cdd feat(domain): MedioInactivoException (issue #16) dmolinari 2026-04-17 11:45:56 -03:00
  • 91d353655d Merge pull request '#15 ADM-001: Medios y Secciones (fundacional)' dmolinari 2026-04-17 14:37:15 +00:00
  • 740298a9e1 fix(web): reemplazar <select> nativos por shadcn Select (dark mode compat) — ADM-001 dmolinari 2026-04-17 10:13:20 -03:00
  • 6b946f6080 feat(web): Medios + Secciones admin UI + hooks + routing — ADM-001 B7+B8 dmolinari 2026-04-16 19:28:30 -03:00
  • 13480ad8c2 feat(api): MediosController + SeccionesController + ExceptionFilter mappings — ADM-001 B6 dmolinari 2026-04-16 19:16:33 -03:00
  • a6f4011806 fix(tests): resolve ADM-001 regressions in Api.Tests fixture dmolinari 2026-04-16 19:08:32 -03:00
  • 2f0da2d720 feat(infra): MedioRepository + SeccionRepository + integration tests — ADM-001 B5 dmolinari 2026-04-16 19:04:09 -03:00
  • a1a8e6e0cb fix(tests): realign test expectations with V011 (ADM-001) seed — 22 permisos + Medios fixture dmolinari 2026-04-16 19:04:06 -03:00
  • f672de78ce feat(medios,secciones): application layer + handlers TDD — ADM-001 B3+B4 dmolinari 2026-04-16 18:53:57 -03:00
  • bb98dbf217 feat(domain): Medio + Seccion entities + 4 exceptions — ADM-001 B2 dmolinari 2026-04-16 18:45:46 -03:00
  • ff7d8986fd feat(db): Medio + Seccion (temporal tables + seed) — ADM-001 B1 dmolinari 2026-04-16 18:13:54 -03:00
  • 7c0646be0d Merge pull request 'UDT-010: Infraestructura de Auditoría y Trazabilidad — Closes #6' (#14) from feature/UDT-010 into main dmolinari 2026-04-16 20:30:17 +00:00
  • 9eac044752 feat(jobs): 3 audit maintenance jobs (Quartz.NET, UDT-010 B11) dmolinari 2026-04-16 17:10:43 -03:00
  • b526df2125 feat(web): /admin/audit page + filtros (UDT-010 B12) dmolinari 2026-04-16 17:07:13 -03:00
  • 2bb90118ab feat(api): GET /audit/events + /health/audit (UDT-010 B10) dmolinari 2026-04-16 17:05:40 -03:00
  • b619c05762 feat(audit): security events en Auth + authorization handlers (UDT-010 B9) dmolinari 2026-04-16 13:59:27 -03:00
  • a3f01bc6c9 feat(audit): enchufar audit en handlers de Rol (UDT-010 B8) dmolinari 2026-04-16 13:54:47 -03:00
  • 26efb74c22 feat(audit): enchufar audit en handlers de Usuario — Closes #6 dmolinari 2026-04-16 13:49:44 -03:00
  • a3d6214d09 feat(infra): AuditLogger + SecurityEventLogger impl (UDT-010 B6) dmolinari 2026-04-16 13:41:10 -03:00
  • 300badda73 feat(infra): audit + security event repositories (UDT-010 B5) dmolinari 2026-04-16 13:38:05 -03:00
  • 0b4af4c332 feat(api): audit context middleware + scoped impl (UDT-010 B4) dmolinari 2026-04-16 13:32:13 -03:00
  • 08d6622e43 feat(infra): JsonSanitizer + AuditOptions binding (UDT-010 B3) dmolinari 2026-04-16 13:28:37 -03:00
  • 68f96b90c7 feat(application): audit abstractions (UDT-010 B2) dmolinari 2026-04-16 13:23:11 -03:00
  • c95bc7fe01 fix(tests): extend Respawn + collection config for UDT-010 temporal tables dmolinari 2026-04-16 13:22:56 -03:00
  • 1c79dfa0a4 feat(db): V010 audit infrastructure + temporal tables dmolinari 2026-04-16 13:10:04 -03:00
  • 2d1d187f6e chore(udt-010): bootstrap rama + spike anti-MSDTC dmolinari 2026-04-16 12:56:17 -03:00
  • d201d9e08e Merge pull request 'Design System: bootstrap tokens + paleta brand El Día' (#13) from chore/design-system-tokens into main dmolinari 2026-04-16 15:00:26 +00:00
  • fa76d0055a feat(web): infra UI completa pre-ADM-001 — DataTable + 8 shadcn + MCP global dmolinari 2026-04-16 11:54:14 -03:00
  • 5f7d9e6b89 docs(skill-registry): actualizar compact rules design system v2.3 dmolinari 2026-04-16 11:32:07 -03:00
  • 83d76b95d4 feat(web): tooltips Radix + toggle sidebar al lado del brand dmolinari 2026-04-16 11:26:41 -03:00
  • 7b7ef1c137 feat(web): sidebar colapsable con tooltips + fix scroll horizontal dmolinari 2026-04-16 11:21:42 -03:00
  • 41b6882b5c feat(web): mas contraste cards/tables sobre bg + utility .surface dmolinari 2026-04-16 11:15:36 -03:00
  • 278e1cf378 fix(web): light mode profundidad + grid global + autofill fix dmolinari 2026-04-16 11:10:06 -03:00
  • 3bc2625e21 fix(web): agregar ThemeToggle en PublicLayout (login) dmolinari 2026-04-16 11:05:39 -03:00
  • 6e6c729bac feat(web): design system v2 — tech sophisticated con glass + gradient mesh dmolinari 2026-04-16 11:02:59 -03:00
  • c488e2430d feat(web): bootstrap design system con paleta brand El Dia dmolinari 2026-04-16 10:46:07 -03:00
  • 492705c076 Merge pull request 'UDT-009: Overrides de PermisosJson por usuario — cierre módulo Auth' (#12) from feature/UDT-009 into main dmolinari 2026-04-16 13:12:23 +00:00
  • 6822d56e11 fix(web): montar Toaster + feedback toast en PermisosEditor [UDT-009] dmolinari 2026-04-16 10:11:04 -03:00
  • a30b10ebff fix(web): UsuarioPermisos shape nested para matchear backend [UDT-009] dmolinari 2026-04-16 10:06:43 -03:00
  • b7882613a4 feat(web): UserEditPage con tabs Perfil+Permisos [UDT-009] dmolinari 2026-04-15 21:50:55 -03:00
  • 9dbf3e895d feat(web): tabs.tsx + PermisosEditor tri-state [UDT-009] dmolinari 2026-04-15 21:49:48 -03:00
  • c1426b2257 feat(web): api + hooks permisos overrides [UDT-009] dmolinari 2026-04-15 21:48:06 -03:00
  • 7d4dc4d2bb feat(api): PUT /api/v1/users/{id}/permisos/overrides + excepciones domain + ExceptionFilter [UDT-009] dmolinari 2026-04-15 21:43:38 -03:00
  • 47323302cc feat(api): GET /api/v1/users/{id}/permisos con CQRS handler [UDT-009] dmolinari 2026-04-15 21:43:08 -03:00
  • 5fd88b5a9d feat(infra): IUsuarioRepository.UpdatePermisosJsonAsync + impl Dapper [UDT-009] dmolinari 2026-04-15 21:33:39 -03:00
  • bf64ffb35e feat(api): PermissionAuthorizationHandler resuelve overrides desde DB por request [UDT-009] dmolinari 2026-04-15 21:32:35 -03:00
  • fb07a1139a feat(application): LoginCommandHandler usa PermisoResolver para permisos efectivos [UDT-009] dmolinari 2026-04-15 21:29:33 -03:00
  • 86310de286 feat(security): remover claim permisos del JWT post-UDT-009 [UDT-009] dmolinari 2026-04-15 21:28:26 -03:00
  • 54955231bf feat(infra): V009 migration + Usuario.WithPermisosJson + SqlTestFixture V009 schema [UDT-009] dmolinari 2026-04-15 21:27:29 -03:00
  • da1eb83ac1 feat(application): PermisosOverride record + PermisoResolver static helper [UDT-009] dmolinari 2026-04-15 21:25:09 -03:00
  • be86c2fac9 chore(repo): bootstrap feature/UDT-009 [UDT-009] dmolinari 2026-04-15 21:23:43 -03:00
  • 68897f446b Merge pull request 'UDT-008: Gestión completa de usuarios' (#11) from feature/UDT-008 into main dmolinari 2026-04-16 00:01:36 +00:00
  • 06908263f6 fix(web): cablear ResetPasswordModal en UserEditPage [UDT-008] dmolinari 2026-04-15 21:00:08 -03:00
  • 9e93c70d8b refactor(web): mover Cambiar contraseña de sidebar a menu perfil [UDT-008] dmolinari 2026-04-15 20:55:26 -03:00
  • 851fed8692 fix(web): cablear ResetPasswordModal en UserDetailPage [UDT-008] dmolinari 2026-04-15 20:54:25 -03:00
  • 2e2d4543ad feat(web): router wiring completo + nav link usuarios + MustChangePasswordGate integration [UDT-008] dmolinari 2026-04-15 18:12:54 -03:00
  • 25ed0f6452 feat(web): ChangeMyPasswordPage + ResetPasswordModal — hooks, pages, modal [UDT-008] dmolinari 2026-04-15 18:09:59 -03:00
  • 64e0a8b5fb feat(web): UserDetailPage + UserEditPage — get/update/deactivate/reactivate hooks y pages [UDT-008] dmolinari 2026-04-15 18:06:54 -03:00
  • 9512f4125d feat(web): UsersListPage — api client, hook, filters, table, pagination [UDT-008] dmolinari 2026-04-15 18:05:07 -03:00
  • d998d215e0 feat(web): authStore username+mustChangePassword + MustChangePasswordGate [UDT-008] dmolinari 2026-04-15 18:02:20 -03:00
  • 7d96d5ff18 feat(api): ResetPassword admin — TempPasswordGenerator, handler, endpoint POST /{id}/password/reset [UDT-008] dmolinari 2026-04-15 17:55:45 -03:00
  • a3bd066f7b feat(api): ChangeMyPassword — validator, handler, endpoint PUT /me/password [UDT-008] dmolinari 2026-04-15 17:52:15 -03:00
  • 473566f255 feat(api): Deactivate + Reactivate usuarios — idempotentes, anti-lockout, revoke tokens [UDT-008] dmolinari 2026-04-15 17:50:54 -03:00
  • 14c385fdb1 feat(api): UpdateUsuario — handler, validator, anti-lockout guard, revoke tokens [UDT-008] dmolinari 2026-04-15 17:49:19 -03:00
  • 2925336783 feat(api): List + GetById usuarios — handlers, repo, endpoints [UDT-008] dmolinari 2026-04-15 17:46:23 -03:00
  • 9dcd63543e feat(auth): extend LoginResponse with username + mustChangePassword + ultimoLogin [UDT-008] dmolinari 2026-04-15 17:39:48 -03:00
  • d1f7b3805b feat(domain): V008 migration + Usuario with-methods + DomainException hierarchy [UDT-008] dmolinari 2026-04-15 17:36:46 -03:00
  • 5ddc5ddf02 chore(udt-008): bootstrap rama feature/UDT-008 [UDT-008] dmolinari 2026-04-15 17:34:12 -03:00
  • c0d1ea4ac2 Merge pull request 'UDT-006: Middleware de Autorización (RBAC enforcement)' (#10) from feature/UDT-006 into main dmolinari 2026-04-15 20:15:18 +00:00
  • 8513e99554 test(api): assert count 21 permisos admin post-V007 [UDT-006] dmolinari 2026-04-15 16:49:54 -03:00
  • 96e7290fb7 refactor(web): eliminar guards inline rol admin en páginas de roles/permisos [UDT-006] dmolinari 2026-04-15 16:49:21 -03:00
  • f6cdd7650b feat(web): ProtectedRoute extraído + router migrado + CreateUserPage cleanup [UDT-006] dmolinari 2026-04-15 16:41:39 -03:00
  • 8935115da9 feat(web): usePermission + CanPerform [UDT-006] dmolinari 2026-04-15 16:40:23 -03:00
  • 2efd5e2fdb feat(web): authStore + useLogin persisten permisos [UDT-006] dmolinari 2026-04-15 16:39:18 -03:00
  • 0218d8d371 feat(api): migrar controllers admin a RequirePermission [UDT-006] dmolinari 2026-04-15 16:34:32 -03:00
  • 4866c4f21f feat(api): ForbiddenProblemDetailsHandler 403 shape [UDT-006] dmolinari 2026-04-15 16:27:36 -03:00
  • 58d0df601f feat(api): RequirePermissionAttribute + PermissionAuthorizationHandler [UDT-006] dmolinari 2026-04-15 16:26:30 -03:00
  • cdb8dcd03c feat(api): login response permisos desde RolPermiso [UDT-006] dmolinari 2026-04-15 16:24:21 -03:00
  • 2afac53fca Merge pull request 'UDT-005: Gestión de Permisos (RBAC) — catálogo + asignación rol↔permisos' (#9) from feature/UDT-005 into main dmolinari 2026-04-15 19:02:02 +00:00
  • 1a864e9f8b fix(app): validar formato codigo rol en GetRolPermisos [UDT-005] dmolinari 2026-04-15 15:56:49 -03:00
  • 885a8cef17 feat(web): BATCH 6 - feature permisos con grid por modulo [UDT-005] dmolinari 2026-04-15 15:46:49 -03:00
  • 4913a35d06 feat(api): BATCH 5 - PermisosController + tests HTTP [UDT-005] dmolinari 2026-04-15 15:42:03 -03:00
  • be2257a9bf feat(infra): BATCH 4 - Permiso/RolPermiso repos Dapper + tests integracion [UDT-005] dmolinari 2026-04-15 15:39:25 -03:00
  • 704794a2e2 feat(app): BATCH 3 - handlers permisos con TDD [UDT-005] dmolinari 2026-04-15 15:31:26 -03:00
  • 7ddb71c24c feat(domain): BATCH 2 - Permiso entity + catalogo const [UDT-005] dmolinari 2026-04-15 15:31:20 -03:00
  • 7d2190c37e feat(db): BATCH 1 - V005/V006 Permiso y RolPermiso + seed [UDT-005] dmolinari 2026-04-15 15:26:22 -03:00
  • f6ad371de4 chore(tests): BATCH 0 - agregar Permiso y RolPermiso a TablesToIgnore [UDT-005] dmolinari 2026-04-15 15:26:19 -03:00
  • 4d3e55c422 Actualizar README.md dmolinari 2026-04-15 17:36:36 +00:00
  • e5ee8e673b Merge pull request 'UDT-004: Gestión de Roles (tabla maestra + CRUD admin + validator dinámico + UI)' (#8) from feature/UDT-004 into main dmolinari 2026-04-15 16:19:58 +00:00
  • 57e4cdac01 chore(tests): limpia warning xUnit2012 en CreateUsuario_WithInactiveRol_Returns400 dmolinari 2026-04-15 13:03:18 -03:00