feat(nakui): Fase 1 del ERP — FieldKind Select + AutoId, seed inyecta id

Primera fase del plan maestro. La metainterfaz gana dos tipos de campo:
Select (chips de un conjunto cerrado, con options validadas) y AutoId
(UUID autogenerado read-only). NakuiBackend::seed inyecta el id de la
entity = clave del store. El módulo CRM los adopta: etapa/canal son
selects, los ids de idempotencia se autogeneran, el form de cliente ya
no pide id. Ningún formulario pide un UUID a mano.

Tests en meta-schema, meta-runtime y nakui-ui verdes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 18:55:13 +00:00
parent 0d1e378e42
commit 86d06da020
12 changed files with 442 additions and 210 deletions
+15
View File
@@ -2,6 +2,21 @@
Motor GPUI: libs + widgets. Renombrado de `yahweh` el 2026-05-19.
### feat(meta-*): FieldKind Select y AutoId (Fase 1 del ERP nakui)
La metainterfaz declarativa gana dos tipos de campo:
- **`Select`** — valor de un conjunto cerrado. `FieldSpec.options`
(valor + etiqueta opcional); `Module::validate` exige `options` no
vacío. `meta-form` lo renderiza como chips clickables (el chip
elegido resaltado), no texto libre.
- **`AutoId`** — UUID v4 autogenerado. `meta-form` lo rellena al abrir
el formulario y lo muestra read-only; el usuario no teclea ids de
idempotencia. En modo edición conserva el id del record.
`parse_field_value` trata ambos como string passthrough. Tests nuevos
en `meta-schema` (validación de Select) y `meta-runtime` (parseo).
### feat(nahual-widget-text-input): modo enmascarado para contraseñas
`TextInput::with_mask()` dibuja el contenido como puntos (`•`, uno por
+15
View File
@@ -2,6 +2,21 @@
ERP categórico.
### feat(nakui): plan maestro del ERP + Fase 1 (captura sin fricción)
Plan maestro del subproyecto en `docs/nakui-erp-masterplan.md`: 7 fases
ordenadas para llevar nakui de "listas y formularios que funcionan" a
"ERP profesional terminado". Fase 1 implementada:
- El módulo CRM usa `select` para etapa y canal (desplegable de
opciones) y `auto_id` para los ids de idempotencia — ningún
formulario pide un UUID a mano.
- `NakuiBackend::seed` inyecta el `id` de la entity = clave del store,
así `data.id` y la clave coinciden (los schemas Nickel declaran
`id | String`); el formulario de cliente ya no necesita campo `id`.
- Tipos de campo nuevos en la metainterfaz: ver el changelog de
`nahual` (`FieldKind::Select` / `AutoId`).
### feat(nakui-ui): CRM como ERP — listas y formularios
UiModule `examples/nakui-modules/crm/module.json`: hace que el módulo