feat(nakui): metainterfaz declarativa + 6 modulos ERP estandar
1{
2 "id": "customers",
3 "label": "Clientes",
4 "description": "Gestión de clientes (alta, listado, búsqueda).",
5 "entities": [
6 {
7 "name": "customer",
8 "label": "Cliente",
9 "fields": [
10 { "name": "name", "label": "Nombre", "kind": "text", "required": true },
11 { "name": "email", "label": "Email", "kind": "text", "required": false, "help": "Opcional, formato libre por ahora" },
12 { "name": "phone", "label": "Teléfono", "kind": "text", "required": false },
13 { "name": "active", "label": "Activo", "kind": "boolean", "default": "true" },
14 { "name": "credit_limit", "label": "Límite de crédito", "kind": "number", "default": "0" },
15 { "name": "notes", "label": "Notas", "kind": "multiline", "required": false }
16 ]
17 }
18 ],
19 "menu": [
20 { "label": "Listar", "view": "list", "icon": "📋" },
21 { "label": "Nuevo", "view": "form", "icon": "✚" }
22 ],
23 "views": {
24 "list": {
25 "kind": "list",
26 "title": "Clientes",
27 "entity": "customer",
28 "columns": [
29 { "field": "name", "label": "Nombre", "weight": 2.0 },
30 { "field": "email", "label": "Email", "weight": 3.0 },
31 { "field": "phone", "label": "Teléfono", "weight": 1.5 },
32 { "field": "active", "label": "Activo", "weight": 0.7 },
33 { "field": "credit_limit", "label": "Límite", "weight": 1.0 }
34 ],
35 "actions": [
36 { "kind": "open_view", "view": "form", "label": "✚ Nuevo" }
37 ],
38 "search_in": ["name", "email", "phone"]
39 },
40 "form": {
41 "kind": "form",
42 "title": "Nuevo cliente",
43 "entity": "customer",
44 "fields": [
45 { "name": "name", "label": "Nombre", "kind": "text", "required": true },
46 { "name": "email", "label": "Email", "kind": "text", "required": false },
47 { "name": "phone", "label": "Teléfono", "kind": "text", "required": false },
48 { "name": "active", "label": "Activo", "kind": "boolean", "default": "true" },
49 { "name": "credit_limit", "label": "Límite de crédito", "kind": "number", "default": "0" },
50 { "name": "notes", "label": "Notas", "kind": "multiline" }
51 ],
52 "on_submit": {
53 "kind": "seed_entity",
54 "entity": "customer",
55 "next_view": "list"
56 }
57 }
58 }
59}