You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(fs-13/gap-7+8): align ParameterScope model + add IdpConfiguration Archive lifecycle
Gap #7 — Scope model alignment:
- ParameterScope extended with SuiteLevel(4) and ModuleLevel(5) to match
ConfigurationScope IDs. SupportsGlobal/Tenant/Suite/Module helpers added.
AllScopes updated. No migration required (additive enum values).
Gap #8 — IdpConfiguration Archive lifecycle:
- IdpConfigStatus.Archived(4) added
- IdpConfiguration.Archive(): blocks if Active or already Archived; uses
IdpConfigAlreadyArchived / IdpConfigArchivedCannotChange error codes
- IdpConfiguration.Update(): now blocks with IdpConfigArchivedCannotChange
when config is in Archived state
- ArchiveIdpConfigurationCommand + handler added (mirrors Deactivate pattern)
- POST /idp-configurations/{id}/archive endpoint added
- DomainErrors: IdpConfigAlreadyArchived + IdpConfigArchivedCannotChange added
Tracker: FS-13 promoted to Implemented (23 covered, 4 partial).
FS-13 breakdown section preserved for reference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@@ -40,7 +40,6 @@ Este documento mantiene una vista dinamica de lo que ya esta implementado, lo qu
40
40
| FS | Historia | Senal | Prioridad | Criticidad | Complejidad | Responsable | Objetivo | Estado | Brecha principal | Siguiente accion |
41
41
|---|---|---|---|---|---|---|---|---|---|---|
42
42
|[FS-12](../requirements-es/functional-stories/fs-12-role-promotion-process.md)| Execute Role Promotion Process | Amber | P1 | Alta | Alta | IGA | TBD | Abierto | El flujo de promocion aun necesita la revision completa de manager/seguridad, ejecucion, verificacion y cierre del analisis de impacto. | Terminar la maquina de estados de promocion y alinear los pasos de aprobacion con el contrato de dominio. |
43
-
|[FS-13](../requirements-es/functional-stories/fs-13-hierarchical-config.md)| Configurar Parametros Jerarquicos del Sistema | Amber | P1 | Alta | Alta | Plataforma / Configuracion | TBD | Abierto | 8 brechas especificas identificadas (ver desglose abajo): la jerarquia solo resuelve 2 niveles, el flag no-sobrescribible no existe, los alcances Suite/Module no se procesan, la proteccion de valores sensibles es incompleta. | Trabajar las brechas en orden de prioridad segun el desglose de FS-13. |
44
43
|[FS-14](../requirements-es/functional-stories/fs-14-delegated-management.md)| Delegate User Management Between Administrators | Amber | P2 | Media | Media | Identity | TBD | Abierto | La delegacion existe como modelo, pero el alcance de punta a punta y el flujo de auditoria aun necesitan validacion final. | Cerrar la cobertura de acciones delegadas y verificar la ruta de aceptacion. |
45
44
|[FS-23](../requirements-es/functional-stories/fs-23-profile-access-request.md)| Profile Access Request from Lobby User | Amber | P1 | Alta | Alta | Approvals | TBD | Abierto | El modelo de solicitud aun necesita el rol pedido y la fidelidad de auditoria esperada por el diseno. | Extender el contrato de la solicitud y el seguimiento de su ciclo de vida. |
46
45
|[FS-24](../requirements-es/functional-stories/fs-24-profile-request-approval.md)| Profile Request Approval and Manual Assignment | Amber | P1 | Alta | Alta | Approvals | TBD | Abierto | El registro de decision aun necesita rol solicitado, rol otorgado, razon y resultado de notificacion. | Extender el payload del resultado de aprobacion y el modelo de persistencia. |
@@ -59,8 +58,8 @@ Este documento mantiene una vista dinamica de lo que ya esta implementado, lo qu
59
58
| 4 |~~**Proteccion de valores sensibles**~~ ✅ **Hecho** — Cifrado AES-256-CBC integrado de punta a punta: cifra en Create/Update (handler), descifra al cargar el cache (ConfigurationProvider), redacta `"***"` en DTOs para llamantes no admin. `IValueEncryptionService` + `AesValueEncryptionService` agregados. Clave desde `AppConfiguration:EncryptionKey` (fallback de dev usa clave cero). 9 tests: round-trip, idempotencia, deteccion de prefijo, fallback dev, guard de longitud de clave. | 🟢 Cerrado | RN-5 | — |`AesValueEncryptionService.cs`, `CreateAppConfigurationCommandHandler.cs`, `ConfigurationProvider.cs`, query handlers |
60
59
| 5 |~~**Endpoint `/resolve` faltante**~~ ✅ **Hecho** — `GET /app-configurations/resolve?code=X&tenantId=Y&suiteId=Z&moduleId=W` agregado. `ResolveAppConfigurationQuery/Handler` conectado a `IConfigurationProvider.GetWithPrecedence`. Retorna `ResolvedAppConfigurationDto` con `ResolvedScope`, `SourceConfigId`, flag `Found`. Valores cifrados se redactan para no-admin. 5 nuevos tests. | 🟢 Cerrado | CA-3 | — |`ResolveAppConfigurationQueryHandler.cs`, `AppConfigurationQueryEndpoints.cs`|
61
60
| 6 |~~**Sin endpoints REST para Parameters**~~ ✅ **Hecho (backend)** — Repositorios, commands y endpoints REST agregados para ParameterDefinition (Create/Update/Archive), ParameterGlobalValue (Create/Update/Publish/Archive) y ParameterTenantValue (Create/Update). Rehydration agregada al ConfigurationAggregateFactory. Implementaciones InMemory para dev/tests. Panel frontend permanece diferido. | 🟢 Cerrado | CA-1 | — |`SqlServerParameterRepositories.cs`, `ParameterDefinitionCommands.cs`, `ParameterValueCommands.cs`, `ParameterEndpoints.cs`|
62
-
| 7 |**Inconsistencia del modelo de alcance**— `ParameterScope`(3 valores: GlobalOnly/TenantOnly/GlobalAndTenant) y `ConfigurationScope` (5 valores: Global/Tenant/User/Suite/Module) son incompatibles. El resolver jerarquico no puede unificarse hasta que se alineen. |🟡 P3 / Baja | RN-1 |Decidir un unico modelo de alcance. Migrar `ParameterScope` para usar los valores de `ConfigurationScope`, o agregar Suite y Module a `ParameterScope`. Actualizar todos los usos. |`Ums.Domain/Configuration/Parameter/ValueObjects/ParameterScope.cs`, `Ums.Domain/Enums/ConfigurationScope.cs`|
63
-
| 8 |**`IdpConfiguration` sin ciclo de vida Archive** — Solo existen Activate/Deactivate. No hay comando/endpoint Archive para retirar permanentemente una configuracion IdP. | 🟡 P3 / Baja | Completitud del ciclo de vida | Agregar `ArchiveIdpConfigurationCommand` + handler + endpoint `POST /idp-configurations/{id}/archive`, replicando el patron de archive de `AppConfiguration`. |`Ums.Application/Configuration/IdpConfiguration/Commands/`, `Ums.Presentation/Endpoints/Configuration/IdpConfiguration/`|
61
+
| 7 |~~**Inconsistencia del modelo de alcance**~~ ✅ **Hecho**— `ParameterScope`extendido con `SuiteLevel(4)` y `ModuleLevel(5)` que coinciden con los IDs de `ConfigurationScope`. Helpers `SupportsGlobal/Tenant/Suite/Module` agregados. `AllScopes` actualizado. No requiere migracion (valores son aditivos). |🟢 Cerrado | RN-1 |— |`Ums.Domain/Configuration/Parameter/ValueObjects/ParameterScope.cs`|
62
+
| 8 |~~**`IdpConfiguration` sin ciclo de vida Archive**~~ ✅ **Hecho** — `IdpConfigStatus.Archived(4)` agregado. Metodo de dominio `IdpConfiguration.Archive()` agregado (bloquea si esta Active o ya Archived). `ArchiveIdpConfigurationCommand` + handler + endpoint `POST /idp-configurations/{id}/archive` agregados. Update ahora bloquea en estado Archived. |🟢 Cerrado | Completitud del ciclo de vida | — |`IdpConfigStatus.cs`, `IdpConfiguration.cs`, `ArchiveIdpConfigurationCommand*.cs`, `IdpConfigurationEndpoints.cs`|
64
63
65
64
---
66
65
@@ -72,4 +71,4 @@ Este documento mantiene una vista dinamica de lo que ya esta implementado, lo qu
72
71
73
72
## Ultima Revision
74
73
75
-
2026-06-04 (FS-13 desglose detallado)
74
+
2026-06-04 (FS-13 completamente implementado — 8 brechas cerradas)
0 commit comments