xonecode 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +167 -0
  2. package/dist/agent/authEnDisco.js +56 -0
  3. package/dist/agent/authEnDisco.js.map +1 -0
  4. package/dist/agent/configEnDisco.js +109 -0
  5. package/dist/agent/configEnDisco.js.map +1 -0
  6. package/dist/agent/crearProyecto.js +34 -0
  7. package/dist/agent/crearProyecto.js.map +1 -0
  8. package/dist/agent/entorno.js +124 -0
  9. package/dist/agent/entorno.js.map +1 -0
  10. package/dist/agent/guionizado.js +53 -0
  11. package/dist/agent/guionizado.js.map +1 -0
  12. package/dist/agent/instantanea.js +129 -0
  13. package/dist/agent/instantanea.js.map +1 -0
  14. package/dist/agent/interrupts.js +83 -0
  15. package/dist/agent/interrupts.js.map +1 -0
  16. package/dist/agent/mensajes.js +24 -0
  17. package/dist/agent/mensajes.js.map +1 -0
  18. package/dist/agent/modelos.js +42 -0
  19. package/dist/agent/modelos.js.map +1 -0
  20. package/dist/agent/normalizar.js +20 -0
  21. package/dist/agent/normalizar.js.map +1 -0
  22. package/dist/agent/perfiles.js +103 -0
  23. package/dist/agent/perfiles.js.map +1 -0
  24. package/dist/agent/proyecto.js +107 -0
  25. package/dist/agent/proyecto.js.map +1 -0
  26. package/dist/agent/puente.js +142 -0
  27. package/dist/agent/puente.js.map +1 -0
  28. package/dist/agent/resumenDeTool.js +48 -0
  29. package/dist/agent/resumenDeTool.js.map +1 -0
  30. package/dist/agent/skills.js +65 -0
  31. package/dist/agent/skills.js.map +1 -0
  32. package/dist/agent/textoDeTool.js +113 -0
  33. package/dist/agent/textoDeTool.js.map +1 -0
  34. package/dist/agent/turnoReal.js +173 -0
  35. package/dist/agent/turnoReal.js.map +1 -0
  36. package/dist/agent/verificador.js +65 -0
  37. package/dist/agent/verificador.js.map +1 -0
  38. package/dist/agent/xoneAgent.js +106 -0
  39. package/dist/agent/xoneAgent.js.map +1 -0
  40. package/dist/bin.js +9 -0
  41. package/dist/bin.js.map +1 -0
  42. package/dist/cli/aprobar.js +82 -0
  43. package/dist/cli/aprobar.js.map +1 -0
  44. package/dist/cli/config.js +133 -0
  45. package/dist/cli/config.js.map +1 -0
  46. package/dist/cli/consola.js +346 -0
  47. package/dist/cli/consola.js.map +1 -0
  48. package/dist/cli/describe.js +53 -0
  49. package/dist/cli/describe.js.map +1 -0
  50. package/dist/cli/doctor.js +45 -0
  51. package/dist/cli/doctor.js.map +1 -0
  52. package/dist/cli/main.js +520 -0
  53. package/dist/cli/main.js.map +1 -0
  54. package/dist/cli/markdown.js +90 -0
  55. package/dist/cli/markdown.js.map +1 -0
  56. package/dist/cli/run.js +164 -0
  57. package/dist/cli/run.js.map +1 -0
  58. package/dist/cli/spinner.js +89 -0
  59. package/dist/cli/spinner.js.map +1 -0
  60. package/dist/cli/stdio.js +193 -0
  61. package/dist/cli/stdio.js.map +1 -0
  62. package/dist/cli/tema.js +40 -0
  63. package/dist/cli/tema.js.map +1 -0
  64. package/dist/cli/verify.js +62 -0
  65. package/dist/cli/verify.js.map +1 -0
  66. package/dist/core/bitacora.js +30 -0
  67. package/dist/core/bitacora.js.map +1 -0
  68. package/dist/core/config.js +236 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/contextos.js +56 -0
  71. package/dist/core/contextos.js.map +1 -0
  72. package/dist/core/deps.js +51 -0
  73. package/dist/core/deps.js.map +1 -0
  74. package/dist/core/diff.js +79 -0
  75. package/dist/core/diff.js.map +1 -0
  76. package/dist/core/esqueleto.js +366 -0
  77. package/dist/core/esqueleto.js.map +1 -0
  78. package/dist/core/events.js +2 -0
  79. package/dist/core/events.js.map +1 -0
  80. package/dist/core/modelos.js +85 -0
  81. package/dist/core/modelos.js.map +1 -0
  82. package/dist/core/notify.js +106 -0
  83. package/dist/core/notify.js.map +1 -0
  84. package/dist/core/ports.js +114 -0
  85. package/dist/core/ports.js.map +1 -0
  86. package/dist/core/turno.js +127 -0
  87. package/dist/core/turno.js.map +1 -0
  88. package/dist/vendor/hitl.js +103 -0
  89. package/dist/vendor/hitl.js.map +1 -0
  90. package/dist/vendor/skillLoaders/catalog.js +74 -0
  91. package/dist/vendor/skillLoaders/catalog.js.map +1 -0
  92. package/dist/vendor/tokenTracking.js +58 -0
  93. package/dist/vendor/tokenTracking.js.map +1 -0
  94. package/package.json +41 -0
  95. package/skills/xone-debugging/SKILL.md +52 -0
  96. package/skills/xone-debugging/references/faq.md +561 -0
  97. package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
  98. package/skills/xone-development/SKILL.md +105 -0
  99. package/skills/xone-development/references/anti-patrones.md +94 -0
  100. package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
  101. package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
  102. package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
  103. package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
  104. package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
  105. package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
  106. package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
  107. package/skills/xone-development/references/datos/appdata.md +611 -0
  108. package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
  109. package/skills/xone-development/references/datos/http.md +366 -0
  110. package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
  111. package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
  112. package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
  113. package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
  114. package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
  115. package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
  116. package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
  117. package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
  118. package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
  119. package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
  120. package/skills/xone-development/references/indice-completo.md +77 -0
  121. package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
  122. package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
  123. package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
  124. package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
  125. package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
  126. package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
  127. package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
  128. package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
  129. package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
  130. package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
  131. package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
  132. package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
  133. package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
  134. package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
  135. package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
  136. package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
  137. package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
  138. package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
  139. package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
  140. package/skills/xone-development/references/tipos-de-prop.md +28 -0
  141. package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
  142. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
  143. package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
  144. package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
  145. package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
  146. package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
  147. package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
  148. package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
  149. package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
  150. package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
  151. package/skills/xone-development/references/xml-ui/mapas.md +685 -0
  152. package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
  153. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
  154. package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
  155. package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
  156. package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
  157. package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
  158. package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
  159. package/skills/xone-plan-builder/SKILL.md +183 -0
  160. package/skills/xone-plan-builder/agents/openai.yaml +5 -0
  161. package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
  162. package/skills/xone-project-generator/SKILL.md +111 -0
  163. package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
  164. package/skills/xone-project-generator/references/colecciones-base.md +16 -0
  165. package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
  166. package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
  167. package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
  168. package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
  169. package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
  170. package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
  171. package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
  172. package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
  173. package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
  174. package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
  175. package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
  176. package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
  177. package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
  178. package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
  179. package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
  180. package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
  181. package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
  182. package/skills/xone-review/SKILL.md +189 -0
  183. package/skills/xone-spec-builder/SKILL.md +235 -0
  184. package/skills/xone-spec-builder/agents/openai.yaml +5 -0
  185. package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
  186. package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
  187. package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
@@ -0,0 +1,350 @@
1
+ # Generación XOne — Fases 0-2: flujo, requisitos y modelo de datos
2
+
3
+ > Fuente: `xone/v2/xone-project-generator/references/xone-project-generation-workflow.md` §1–§3. Referencia de la skill; el índice está en [../SKILL.md](../SKILL.md).
4
+
5
+ Contenido: §1 Fase 0 diagrama de flujo completo · §2 Fase 1 análisis de requisitos (datos mínimos, inferencias, regla de decisión técnica) · §3 Fase 2 diseño del modelo de datos (colecciones base obligatorias, tipos de propiedades, visibilidad, foreign keys)
6
+
7
+ ---
8
+
9
+ ## 1. Fase 0: Diagrama de Flujo Completo
10
+
11
+ ```
12
+ INICIO: Usuario solicita nuevo proyecto
13
+ |
14
+ v
15
+ [FASE 0] Diagrama / Planificacion
16
+ |
17
+ v
18
+ [FASE 1] Analisis de Requisitos
19
+ |-- Identificar sector y funcionalidades
20
+ |-- Determinar colecciones necesarias
21
+ |-- Identificar pantallas requeridas
22
+ |-- Definir paleta de colores e iconos
23
+ |
24
+ v
25
+ [FASE 2] Diseno del Modelo de Datos
26
+ |-- Colecciones base (Empresas, Usuarios)
27
+ |-- Colecciones adicionales del proyecto
28
+ |-- Relaciones entre colecciones
29
+ |-- Tipos de campos y visibilidad
30
+ |
31
+ v
32
+ [FASE 3] Estilos CSS
33
+ |-- default.css (estilos globales)
34
+ |-- colors.css (paleta de colores, opcional)
35
+ |
36
+ v
37
+ [FASE 4] Creación de Estructura de Carpetas
38
+ |-- bd/, icons/, files/, fonts/
39
+ |
40
+ v
41
+ [FASE 5] Generacion de Archivos de Configuración
42
+ |-- app.xml (configuracion global)
43
+ |-- app.ini (metadatos)
44
+ |-- mappings.xne (SOLO Empresas y Usuarios)
45
+ |
46
+ v
47
+ [FASE 6] Generacion de Colecciones
48
+ |-- Un archivo .xne por cada coleccion adicional
49
+ |-- Definir campos, tipos, visibilidad
50
+ |
51
+ v
52
+ [FASE 7] Generacion de Pantallas
53
+ |-- Decidir si la app tiene autologin o login
54
+ |-- Login.xne (solo si NO es autologin)
55
+ |-- EntradaApp.xne / MenuPrincipal.xne (punto de entrada)
56
+ |-- Consola.xne (obligatoria, siempre; con replica completa o solo info de dispositivo)
57
+ |-- Pantallas de listas, detalle, mapas, config
58
+ |
59
+ v
60
+ [FASE 8] Eventos y Reglas de Negocio
61
+ |-- Eventos de ciclo de vida (create, insert, before-edit, after-edit, delete)
62
+ |-- Eventos de coleccion Empresas (onlogon, onlogoff, maintenance, replica-ok...)
63
+ |-- Eventos de contents (selecteditem, load, auto-selecteditem)
64
+ |-- Eventos de controles (onclick, onchange, onback, onfocus...)
65
+ |-- Eventos especiales de app (on-app-foreground, on-app-background, inactividad)
66
+ |
67
+ v
68
+ [FASE 9] Funciones JavaScript
69
+ |-- functions.js (funciones globales)
70
+ |-- Scripts adicionales si es necesario
71
+ |
72
+ v
73
+ [FASE 10] Generacion de READMEs
74
+ |-- README.md en cada carpeta (bd/, icons/, files/, fonts/)
75
+ |-- README.md principal con prompt detallado
76
+ |
77
+ v
78
+ [FASE 11] Tareas Finales (en este orden exacto)
79
+ |-- 1. Generar base de datos con xone_db_generator
80
+ |-- 2. Insertar datos iniciales (Empresa + Usuario admin)
81
+ |-- 3. Descargar iconos (Iconify API — PNG, JPG o SVG validos)
82
+ |
83
+ v
84
+ [FASE 12] Validación
85
+ |-- Ejecutar checklist completo
86
+ |-- Verificar estructura, BD, iconos
87
+ |
88
+ v
89
+ FIN: Proyecto completo y validado
90
+ ```
91
+
92
+ ---
93
+
94
+ ## 2. Fase 1: Análisis de Requisitos
95
+
96
+ ### 2.1 Objetivo
97
+
98
+ Entender que hay que construir antes de escribir código. El agente debe inferir todo lo que pueda del contexto de la solicitud, y preguntar **únicamente lo que no pueda deducir por si mismo**.
99
+
100
+ > **REGLA:** No lanzar un interrogatorio. Analizar primero la solicitud, inferir, y preguntar solo lo mínimo imprescindible para no poder continuar.
101
+
102
+ ---
103
+
104
+ ### 2.2 Datos Mínimos Obligatorios
105
+
106
+ Son los únicos datos sin los cuales es imposible iniciar el proyecto. Si no están presentes en la solicitud, preguntar **en un único mensaje**, todos juntos:
107
+
108
+ | Dato | Por que es obligatorio |
109
+ |------|------------------------|
110
+ | **¿Que hace la app?** — descripción breve | Sin esto no se puede inferir nada: colecciones, pantallas, lógica |
111
+ | **¿Con login o sin login (autologin)?** | Determina si se genera Login.xne y como se configura app.xml |
112
+ | **¿Tiene replica con servidor?** | Determina el contenido de la Consola y la configuración de license.ini |
113
+
114
+ Si el programador ya lo ha descrito en su solicitud, no volver a preguntar.
115
+
116
+ ---
117
+
118
+ ### 2.3 Datos que el Agente Infiere
119
+
120
+ El agente deduce estos datos del contexto sin preguntar. Si la inferencia es dudosa, aplica el valor por defecto y avanza:
121
+
122
+ | Dato | Como inferirlo | Valor por defecto |
123
+ |------|----------------|-------------------|
124
+ | Nombre del proyecto | Del título o descripción de la solicitud | `MiProyecto` |
125
+ | Sector | De las entidades y funcionalidades descritas | `Servicios` |
126
+ | Colecciones necesarias | De las funcionalidades y entidades mencionadas | Se modelan según el sector |
127
+ | Pantallas necesarias | De las colecciones y el flujo descrito | Lista + Detalle por cada coleccion |
128
+ | Pantalla de entrada | Si no se indica, usar `EntradaApp` | `EntradaApp` |
129
+ | Roles de usuario | De la descripción o del sector | `Administrador, Usuario` |
130
+ | Prefijo BD | Si no se indica explicitamente | `gen` |
131
+ | Plataforma | Si no se indica | Android |
132
+ | Orientación | Si no se indica | Portrait |
133
+ | Resolución de referencia | Si no se indica | 1080x1920 |
134
+ | Colores | Si no se indican, usar paleta Material Design neutra | `#2196F3`, `#757575`, `#FF5722` |
135
+ | Fuente | Si no se indica | `Roboto-Regular.ttf` |
136
+ | Integraciones (GPS, camara, PDF...) | De las funcionalidades descritas | Ninguna |
137
+ | Datos iniciales BD | Siempre | Empresa de prueba + usuario admin |
138
+
139
+ ---
140
+
141
+ ### 2.4 Datos que el Programador Puede Aportar Voluntariamente
142
+
143
+ El agente no pregunta por estos, pero si el programador los aporta, los usa:
144
+
145
+ - Diseños de pantallas (Figma, wireframes, imágenes)
146
+ - Colores corporativos o logo
147
+ - Fuente tipografica corporativa
148
+ - Campos especificos de las entidades
149
+ - Restricciones técnicas (versión Android, seguridad, inactividad)
150
+ - URL del servidor de replica e intervalo de sincronización
151
+ - Prefijo de BD diferente a `gen`
152
+
153
+ ---
154
+
155
+ ### 2.5 Regla de Decisión Técnica
156
+
157
+ ```
158
+ ANTES de escribir codigo:
159
+ 1. ¿Existe documentacion en las knowledgebases?
160
+ -> SI: Seguir la documentacion exactamente
161
+ -> NO: Buscar ejemplos en templates/projects/
162
+
163
+ 2. ¿Hay ejemplos similares en los proyectos?
164
+ -> SI: Analizar el patron y adaptarlo
165
+ -> NO: Preguntar al usuario antes de improvisar
166
+
167
+ 3. ¿El atributo/funcion/propiedad esta documentado?
168
+ -> SI: Usar solo valores documentados
169
+ -> NO: NO inventar, buscar alternativas documentadas
170
+ ```
171
+
172
+ ---
173
+
174
+ ### 2.6 Donde Buscar Referencia
175
+
176
+ | Necesidad | Fuente |
177
+ |-----------|--------|
178
+ | Estructura de proyecto | `knowledgebase/docs/xone-project-structure-knowledgebase.md` |
179
+ | Atributos XML | `knowledgebase/docs/xone-xml-structure-knowledgebase.md` |
180
+ | API JavaScript | `knowledgebase/docs/xone-javascript-api-knowledgebase.md` |
181
+ | Estilos CSS | `knowledgebase/docs/xone-css-knowledgebase.md` |
182
+ | Guía paso a paso | `knowledgebase/docs/xone-new-project-guide-knowledgebase.md` |
183
+ | Proyecto de ejemplo | `knowledgebase/examples/UseCars/` |
184
+ | Proyectos reales | `templates/projects/` |
185
+
186
+
187
+ ## 3. Fase 2: Diseño del Modelo de Datos
188
+
189
+ ### 3.1 Objetivo
190
+
191
+ Disenar el modelo de datos completo del proyecto, incluyendo colecciones, campos, tipos, visibilidad y relaciones entre entidades.
192
+
193
+ ### 3.2 Colecciones Base Obligatorias
194
+
195
+ Toda aplicación XOne debe tener al mínimo estas dos colecciones en `mappings.xne`.
196
+
197
+ **Estructura mínima obligatoria de `mappings.xne`:**
198
+
199
+ ```xml
200
+ <?xml version="1.0" encoding="iso-8859-15"?>
201
+ <xml>
202
+ <collprops type="general">
203
+
204
+ <coll name="Empresas" title="la empresa"
205
+ sql="select e.* from ##PREF##empresa e"
206
+ objname="empresa" updateobj="empresa" progid="ASGestion.CASEmpresa">
207
+ <group name="General" id="1">
208
+ <prop name="CODIGO" visible="3" type="N" fieldsize="12" />
209
+ <prop name="NOMBRE" type="T" fieldsize="30" size="250" />
210
+ </group>
211
+ </coll>
212
+
213
+ <coll name="Usuarios" title="el usuario"
214
+ sql="select u.* from ##PREF##usuarios u"
215
+ objname="usuarios" updateobj="usuarios" progid="ASGestion.CASUser">
216
+ <group name="General" id="1">
217
+ <prop name="IDEMPRESA" visible="0" type="N" mapcol="Empresas" mapfld="ID" />
218
+ <prop name="CODIGO" visible="3" type="T" fieldsize="10" size="50" />
219
+ <prop name="LOGIN" visible="3" type="T" fieldsize="10" size="50" />
220
+ <prop name="PWD" type="X" fieldsize="10" size="50" visible="0" />
221
+ <prop name="NOMBRE" visible="3" type="T" fieldsize="30" size="50" />
222
+ </group>
223
+ <create>
224
+ <action name="setval" field="IDEMPRESA" value="##ENTID##" />
225
+ </create>
226
+ </coll>
227
+
228
+ </collprops>
229
+ </xml>
230
+ ```
231
+
232
+ **Reglas críticas del mappings.xne:**
233
+ - Solo contiene `Empresas` y `Usuarios`. El resto de colecciones van en archivos `.xne` separados
234
+ - El campo de relación en Usuarios es `IDEMPRESA` (FK a Empresas), con `mapcol="Empresas" mapfld="ID"`
235
+ - El evento `<create>` en Usuarios asigna automáticamente `##ENTID##` al crear un nuevo usuario
236
+ - El encoding puede ser UTF-8 o `iso-8859-15` (coherente con los bytes; el motor respeta el declarado)
237
+
238
+ ### 3.3 Tipos de Propiedades Disponibles
239
+
240
+ Los tipos de XOne se dividen en dos categorías: los que **se persisten en base de datos** y los que son **solo visuales** (no generan columna en BD).
241
+
242
+ #### Tipos de Datos (se persisten en BD)
243
+
244
+ | Tipo | SQLite | Descripción | Ejemplo de Uso |
245
+ |------|--------|-------------|----------------|
246
+ | `T` | TEXT | Texto. Admite variantes: texto simple, multilinea (con `lines`) o mapeada (con `linkedto`) | Nombres, descripciones, campos enlazados |
247
+ | `N` | INTEGER | Número entero | IDs, cantidades, flags numéricos |
248
+ | `N2` | REAL | Número con 2 decimales | Precios, importes |
249
+ | `N3` | REAL | Número con 3 decimales | Coordenadas |
250
+ | `N4` | REAL | Número con 4 decimales | Precisión alta |
251
+ | `N5` | REAL | Número con 5 decimales | Precisión muy alta |
252
+ | `N6` | REAL | Número con 6 decimales | GPS lat/lon |
253
+ | `TN` | TEXT | Número almacenado como texto (entero) | Números con leading zeros, códigos numéricos |
254
+ | `TN2` | TEXT | Número almacenado como texto (2 decimales) | Importes formateados como texto |
255
+ | `TN3` | TEXT | Número almacenado como texto (3 decimales) | Medidas con precisión |
256
+ | `TN4` | TEXT | Número almacenado como texto (4 decimales) | Precisión alta |
257
+ | `TN5` | TEXT | Número almacenado como texto (5 decimales) | Precisión muy alta |
258
+ | `TN6` | TEXT | Número almacenado como texto (6 decimales) | GPS como texto |
259
+ | `X` | TEXT | Password — se muestra enmascarado, admite `hash-type` y `encode` | Contrasenas |
260
+ | `D` | TEXT | Fecha | Fechas |
261
+ | `DT` | TEXT | Fecha y hora | Timestamps |
262
+ | `TT` | TEXT | Hora en formato texto | Horas, duraciones |
263
+ | `NC` | INTEGER | Checkbox / Toggle (0=no, 1=si) | Opciones booleanas |
264
+ | `IMG` | TEXT | Imagen (ruta al fichero) | Fotos referenciadas, logos |
265
+ | `PH` | TEXT | Fotografía — captura desde camara del dispositivo | Fotos tomadas en campo |
266
+ | `VD` | TEXT | Video — grabacion, selección o escaner QR/barcode | Grabacion de video, lectura de códigos |
267
+ | `AT` | TEXT | Adjunto — permite adjuntar ficheros al registro | Documentos adjuntos |
268
+ | `DR` | TEXT | Dibujo / firma a mano alzada (ruta al fichero) | Firmas, croquis |
269
+ | `WEB` | TEXT | WebView — URL o HTML embebido | Contenido web, videos online |
270
+ | `O` | (no aplica) | Sub-objeto JavaScript — NO genera columna ni se persiste | Estructuras temporales en memoria |
271
+
272
+ #### Tipos de UI (NO se persisten en BD — solo visuales)
273
+
274
+ Estos tipos definen controles visuales que **no generan columna en la base de datos**. Se usan exclusivamente para la interfaz.
275
+
276
+ | Tipo | Descripción | Uso |
277
+ |------|-------------|-----|
278
+ | `L` | Etiqueta de texto (solo lectura) — forma preferida. Muestra el `title`; sin `title`, usa el valor del campo como fallback | Títulos, labels, textos informativos o valores dinámicos |
279
+ | `TL` | Alias legacy de `L` (mismo control) | Equivalente a `type="L"` |
280
+ | `THTML` | Etiqueta con contenido HTML enriquecido | Textos con formato HTML embebido (negrita, colores, enlaces) |
281
+ | `B` | Botón | Acciones, navegación, llamadas a ExecuteNode |
282
+ | `Z` | Contents — lista embebida dentro de otra coleccion | Subgrids, detalles de maestro-detalle, mapas (`viewmode="mapview"`), kanban, slider, etc. |
283
+
284
+ ### 3.4 Sistema de Visibilidad (Bitmask)
285
+
286
+ El atributo `visible` define **en que contextos de la UI se pinta el campo**. Es estático — no se puede cambiar en tiempo de ejecución por script ni por condiciones. Si un campo tiene `visible="0"`, no existe en pantalla en ningun momento.
287
+
288
+ Cada bit representa un contexto:
289
+
290
+ | Bit | Valor | Contexto |
291
+ |-----|-------|----------|
292
+ | Bit 0 | 1 | Edición (formulario individual) |
293
+ | Bit 1 | 2 | Lista (vista de registros) |
294
+ | Bit 2 | 4 | Content (lista embebida `type="Z"`) |
295
+ | Bit 3 | 8 | Combo (desplegable) |
296
+
297
+ Cualquier combinacion de bits es valida. Las más usadas:
298
+
299
+ | Valor | Contextos | Uso típico |
300
+ |-------|-----------|------------|
301
+ | `0` | Ninguno | Campo puramente interno — solo para lógica |
302
+ | `1` | Edición | Solo en formulario individual |
303
+ | `2` | Lista | Solo en vista de registros |
304
+ | `3` | Edición + Lista | En formulario y en lista |
305
+ | `4` | Content | Solo en listas embebidas |
306
+ | `7` | Edición + Lista + Content | **El más habitual** |
307
+ | `8` | Combo | Solo en desplegables |
308
+ | `15` | Todos | Edición + Lista + Content + Combo |
309
+
310
+ **Regla general:**
311
+ - Campos de BD internos (ID, ROWID): `visible="0"`
312
+ - Campos visibles para el usuario: `visible="7"`
313
+ - Campos solo en formulario: `visible="1"`
314
+ - Campos solo en listas: `visible="2"`
315
+
316
+ > **Diferencia con `disablevisible`:** `visible` es estático — decide si el campo existe en pantalla en ese contexto. `disablevisible` es dinámico — el campo existe pero se muestra u oculta según el valor de otro campo en tiempo de ejecución.
317
+
318
+ ### 3.5 Relaciones entre Colecciones (Foreign Keys)
319
+
320
+ Las relaciones se definen con los atributos `mapcol` y `mapfld`:
321
+
322
+ ```xml
323
+ <!-- Campo que referencia otra coleccion -->
324
+ <prop name="IDEMPRESA" type="N" visible="7" mapcol="Empresas" mapfld="ID" />
325
+ <!-- Significa: IDEMPRESA referencia al campo ID de la coleccion Empresas -->
326
+ ```
327
+
328
+ ### 3.6 Ejemplo de Diseño de Modelo
329
+
330
+ Para una app de gestion de entregas:
331
+
332
+ ```
333
+ Empresas (mappings.xne)
334
+ ├── CODIGO, NOMBRE (declarar como <prop>; ID y ROWID los gestiona XOne, no hace falta declararlos)
335
+ ├── CIF, DIRECCION, TELEFONO (adicionales)
336
+
337
+ Usuarios (mappings.xne)
338
+ ├── CODIGO, NOMBRE, IDEMPRESA, LOGIN, PWD (declarar como <prop>; ID y ROWID los gestiona XOne)
339
+ ├── ROL, EMAIL, TELEFONO, ACTIVO (adicionales)
340
+
341
+ Clientes (Clientes.xne)
342
+ ├── ID, CODIGO, NOMBRE, DIRECCION, TELEFONO, EMAIL, LATITUD, LONGITUD
343
+
344
+ Pedidos (Pedidos.xne)
345
+ ├── ID, ID_CLIENTE (FK->Clientes), FECHA, ESTADO, TOTAL, OBSERVACIONES
346
+
347
+ Entregas (Entregas.xne)
348
+ ├── ID, ID_PEDIDO (FK->Pedidos), ID_REPARTIDOR (FK->Usuarios)
349
+ ├── FECHA_ENTREGA, FIRMA, FOTO_ENTREGA, LATITUD, LONGITUD, ESTADO
350
+ ```
@@ -0,0 +1,194 @@
1
+ # Generación XOne — Fases 10-12: READMEs, tareas finales y validación
2
+
3
+ > Fuente: `xone/v2/xone-project-generator/references/xone-project-generation-workflow.md` §11–§13. Referencia de la skill; el índice está en [../SKILL.md](../SKILL.md).
4
+
5
+ Contenido: §11 Fase 10 READMEs · §12 Fase 11 tareas finales (base de datos, datos iniciales, iconos) · §13 Fase 12 checklist completo de validación
6
+
7
+ ---
8
+
9
+ ## 11. Fase 10: Generación de READMEs
10
+
11
+ ### 10.1 Objetivo
12
+
13
+ Crear un README.md en cada carpeta del proyecto y un README.md principal con el prompt detallado de generación.
14
+
15
+ ### 10.2 READMEs por Carpeta
16
+
17
+ Cada carpeta obligatoria debe tener un README.md que describa:
18
+
19
+ - **bd/README.md**: Proposito de la carpeta, como se genera gestion.db, comando `xone_db_generator`
20
+ - **icons/README.md**: Fuente de iconos (Google Material Icons), formato PNG, tamanios estándar, nomenclatura
21
+ - **files/README.md**: Proposito (archivos dinámicos), como acceder desde código (appData.getFilesPath())
22
+ - **fonts/README.md**: Fuentes incluidas, formatos soportados (TTF, OTF), uso en CSS y XML
23
+
24
+ ### 10.3 README.md Principal (Raiz del Proyecto)
25
+
26
+ El README.md principal debe ser un **prompt detallado** que describe completamente como crear la aplicación. Debe contener:
27
+
28
+ 1. **Descripción General** - Que hace la app, sector, plataformas
29
+ 2. **Funcionalidades** - Lista detallada de funciones principales
30
+ 3. **Modelo de Datos** - Todas las colecciones con sus campos, tipos y relaciones
31
+ 4. **Pantallas** - Descripción de cada pantalla con su proposito y elementos
32
+ 5. **Flujos de Usuario** - Pasos de interaccion para cada funcionalidad
33
+ 6. **Reglas de Negocio** - Validaciones, calculos y restricciones
34
+ 7. **Integraciones** - GPS, camara, firma digital, NFC, Bluetooth, etc.
35
+ 8. **Paleta de Colores** - Colores hex del proyecto (primario, secundario, acento, estados)
36
+ 9. **Iconos Requeridos** - Lista completa de iconos necesarios con nombre y pantalla
37
+ 10. **Comandos de Generación** - Como generar BD, descargar iconos, convertir e insertar datos
38
+
39
+ ---
40
+
41
+ ## 12. Fase 11: Tareas Finales
42
+
43
+ ### 11.1 Objetivo
44
+
45
+ Ejecutar las tareas finales de generación en el orden exacto especificado. Estas tareas se ejecutan DESPUES de generar todo el código fuente.
46
+
47
+ ### 11.2 Orden de Ejecución (OBLIGATORIO)
48
+
49
+ 1. Generar base de datos (`xone_db_generator`)
50
+ 2. Insertar datos iniciales (Empresa + Usuario admin)
51
+ 3. Descargar iconos (Iconify API — PNG, JPG o SVG validos)
52
+
53
+ ### 11.3 Tarea 1: Generar Base de Datos
54
+
55
+ Comando:
56
+
57
+ ```bash
58
+ python3 -m xone_db_generator NombreProyecto --overwrite
59
+ ```
60
+
61
+ Verificación: sqlite3 .../bd/gestion.db ".tables"
62
+
63
+ Las tablas deben tener el prefijo `gen_` y estar en minúsculas (ej: `gen_empresas`, `gen_usuarios`). Los campos se generan en mayúsculas.
64
+
65
+ **Mapeo de Tipos XOne a SQLite:**
66
+
67
+ | Tipo XOne | SQLite | Descripción |
68
+ |-----------|--------|-------------|
69
+ | T, L, TL, X, PH | TEXT | Texto |
70
+ | D, DT | TEXT | Fechas |
71
+ | IMG, VD, F, M | TEXT | Rutas |
72
+ | N | INTEGER | Entero |
73
+ | NC, R | INTEGER | Boolean |
74
+ | N1-N6 | REAL | Decimales |
75
+ | C | TEXT | Combo |
76
+ | B, Z, L, S, P, O | NO SE CREA | UI |
77
+
78
+ ### 11.4 Tarea 2: Insertar Datos Iniciales
79
+
80
+ Registros obligatorios:
81
+ - Empresa: CODIGO=1, NOMBRE="EMPRESA DE PRUEBA", ROWID=GUID_32_hex
82
+ - Usuario: CODIGO=1, NOMBRE="admin", LOGIN="admin", IDEMPRESA=1, ROWID=GUID_32_hex
83
+
84
+ GUID sin guiones: python3 -c "import uuid; print(uuid.uuid4().hex)"
85
+
86
+ ### 11.5 Tarea 3: Descargar Iconos
87
+
88
+ Fuente: Google Material Icons via Iconify API
89
+ URL: https://api.iconify.design/ic/baseline-{nombre}.svg?color={color}
90
+
91
+ XOne soporta PNG, JPG y SVG — no es necesario convertir SVG a PNG.
92
+ Iconos comunes: home, search, arrow-back, save, settings, person, add, delete, edit, check, close, menu
93
+
94
+ ### 11.6 Nota sobre formatos de iconos
95
+
96
+ XOne soporta PNG, JPG y SVG directamente — no es necesario convertir ni eliminar los SVG.
97
+ Si por preferencia del proyecto se quiere usar solo PNG, se puede convertir con cairosvg (pip install cairosvg), pero no es obligatorio.
98
+
99
+ **Anti-patrón a evitar — NO renderices un SVG con `type="WEB"`:** el soporte de SVG en XOne es nativo y completo. Un `.svg` es una imagen más; se refiere con `type="IMG"` (`path="dibujo.svg"`) o con los atributos `img`/`imgbk`, igual que un PNG. El control `WEB` (WebView) es solo para contenido web remoto (URLs `http`/`https`, vídeos embebidos); usarlo para mostrar una imagen local SVG/PNG/JPG es innecesario y rompe el escalado y la integración con el control.
100
+
101
+ ---
102
+
103
+ ## 13. Fase 12: Validación
104
+
105
+ ### 12.1 Objetivo
106
+
107
+ Ejecutar el checklist completo de validación para asegurar que el proyecto esta completo y funcional.
108
+
109
+ ### 12.2 Checklist Completo
110
+
111
+ #### Archivos raiz
112
+ - [ ] app.xml existe con `prefix="gen"` (o el especificado por el usuario)
113
+ - [ ] app.xml tiene `<connection>`, `<entry-point>`, `<style>` e `<include>`
114
+ - [ ] app.xml declara un encoding coherente con sus bytes (UTF-8 o iso-8859-15)
115
+ - [ ] app.ini existe con `name`, `icon`, `IconFolder=icons`, `FilesFolder=files`
116
+ - [ ] license.ini existe con `Connstring=bd/gestion.db`
117
+ - [ ] mappings.xne existe SOLO con Empresas y Usuarios
118
+ - [ ] mappings.xne declara un encoding coherente con sus bytes (UTF-8 o iso-8859-15)
119
+ - [ ] mappings.xne tiene `progid="ASGestion.CASEmpresa"` en Empresas y `progid="ASGestion.CASUser"` en Usuarios
120
+ - [ ] Usuarios tiene evento `<create>` con `setval field="IDEMPRESA" value="##ENTID##"`
121
+
122
+ #### Campos obligatorios en mappings.xne
123
+ - [ ] Empresas tiene: `CODIGO` (N), `NOMBRE` (T)
124
+ - [ ] Usuarios tiene: `IDEMPRESA` (N, FK a Empresas), `CODIGO` (T), `LOGIN` (T), `PWD` (X), `NOMBRE` (T)
125
+
126
+ #### Colecciones de negocio
127
+ - [ ] Cada coleccion adicional tiene su propio archivo `.xne` (NINGUNA en mappings.xne)
128
+ - [ ] Cada coleccion tiene `sql` con `##PREF##` y el campo `ID` en el SELECT
129
+ - [ ] Cada coleccion tiene `objname`, `updateobj` y `progid="ASData.CASBasicDataObj"`
130
+ - [ ] Tipos de campos validos: `T`, `N`, `N1`-`N6`, `X`, `D`, `DT`, `NC`, `IMG`, `PH`, `VD`, `AT`, `DR`, `TT` para datos; `L` (o su alias legacy `TL`), `THTML`, `B`, `Z` solo para UI
131
+ - [ ] Valores de `visible` usan bitmask correcto (0-7)
132
+ - [ ] Campos enlazados de JOINs llevan prefijo `MAP_` y están marcados como `locked="true"`
133
+ - [ ] Campos FK se nombran `IDLOQUESEA` (todo junto en mayusculas) y usan `mapcol`/`mapfld`
134
+ - [ ] Campos tipo Z llevan prefijo `@` en el name y tienen su `<contents>` asociado
135
+ - [ ] Filtros van en `filter`, ordenaciones en `sort` — NUNCA en el `sql`
136
+ - [ ] No se usan `px` en dimensiones — solo `p` o `%`
137
+
138
+ #### Pantallas
139
+ - [ ] Existe punto de entrada (`EntradaApp.xne` o `MenuPrincipal.xne`) declarado en `<entry-point>` del app.xml
140
+ - [ ] Si `autologon="false"`: existe `Login.xne` declarado en `<login-coll>` del app.xml
141
+ - [ ] Existe `Consola.xne` (siempre obligatoria)
142
+ - [ ] Pantallas con replica: Consola tiene todos los grupos (info replica, dispositivo, ficheros)
143
+ - [ ] Pantallas sin replica: Consola tiene solo el grupo de información del dispositivo
144
+ - [ ] Todas las colecciones-pantalla tienen `<onback>` definido
145
+ - [ ] Grupos fijos (header/footer) usan `fixed="true"` con `orientation="top|bottom"`
146
+ - [ ] Events usan sintaxis correcta: `<action name="runscript"><script language="javascript">`
147
+
148
+ #### Estilos CSS
149
+ - [ ] `default.css` existe en la raiz del proyecto
150
+ - [ ] No hay `compatibility-mode="true"` en app.xml (anularia los CSS)
151
+ - [ ] Unidades en `p` o `%` (NUNCA `px`, `em`, `rem`)
152
+ - [ ] `resolution-width` y `resolution-height` coinciden con el dispositivo físico de referencia
153
+ - [ ] Tamaños de UI usando los valores estándar documentados (TopBar=164p, Botón=124p, Campo=144p)
154
+ - [ ] Fuentes definidas en CSS con clases `.fontN` o con `fontsize` directo en el prop
155
+ - [ ] Colores en formato `#RRGGBB` o `#AARRGGBB` (alpha primero)
156
+ - [ ] Selectores validos: `coll`, `group`, `frame`, `prop`, `prop:TIPO`, `.clase`
157
+ - [ ] `extends:.clase` referencia clases existentes
158
+
159
+ #### JavaScript
160
+ - [ ] `functions.js` existe con funciones globales
161
+ - [ ] Solo usa API documentada: `ui.*`, `appData.*`, `self.*`, `replica.*`
162
+ - [ ] NO usa APIs del DOM: `document`, `document.getElementById`, `document.querySelector`, `window`, `localStorage`, `sessionStorage`, `XMLHttpRequest`, `navigator`, `history` (sí están disponibles `fetch`, `Promise`, `setTimeout`, `URL` con implementación custom).
163
+ - [ ] NO usa `async`/`await` (parse error). Para asincronía prefiere callbacks idiomáticos XOne; `Promise` está disponible si el caso lo justifica.
164
+
165
+ #### Unicidad de nombres (restricción crítica — AMBITO: la coll ENTERA, no el group/frame)
166
+
167
+ > **PASO OBLIGATORIO antes de entregar cada `.xne`:** extraer con regex `name="([^"]+)"` todos los `name=` declarados en nodos `<group>`, `<frame>` y `<prop>` (NO contar `<field name>` de `<onchange>`, ni `name=` de la propia `<coll>`, ni el valor del atributo `fontname=`). Verificar que la lista resultante **no contiene duplicados**. Si hay alguno, renombrar — la solución canónica para campos BD que aparecen en listado + detalle con estilos distintos es declararlos UNA SOLA VEZ en el grupo detalle y añadir aliases `MAP_LIST_*` en el `sql=` para el listado (ver fila "Caso típico" de la tabla `Naming y unicidad` en SKILL.md).
168
+
169
+ - [ ] No hay dos `<coll>` con el mismo `name` en el proyecto
170
+ - [ ] No hay dos `<group>` con el mismo `name` dentro de la misma `<coll>`
171
+ - [ ] No hay dos `<group>` con el mismo `id` dentro de la misma `<coll>`
172
+ - [ ] No hay dos `<frame>` con el mismo `name` dentro de la misma `<coll>` (ámbito coll, NO group — un mismo nombre de frame en dos grupos distintos también colisiona)
173
+ - [ ] No hay dos `<prop>` con el mismo `name` dentro de la misma `<coll>` — incluido el caso típico: campo BD declarado en `grpLista` (visible="2") y otra vez en `grpDetalle` (visible="1") con clase distinta. Si necesitas estilos distintos por modo, declarar el real solo en detalle y usar alias `MAP_LIST_*` en el SELECT para el listado
174
+ - [ ] No hay dos eventos del mismo tipo (ej. dos `<before-edit>`) en la misma `<coll>`
175
+
176
+ #### Estructura de carpetas
177
+ - [ ] `bd/` existe con `README.md`
178
+ - [ ] `icons/` existe con `README.md`
179
+ - [ ] `files/` existe con `README.md`
180
+ - [ ] `fonts/` existe (recomendado)
181
+
182
+ #### Base de Datos
183
+ - [ ] `gestion.db` generado con `xone_db_generator`
184
+ - [ ] Tablas tienen prefijo `gen_` (o el especificado)
185
+ - [ ] Empresa inicial: `CODIGO=1`, `NOMBRE="EMPRESA DE PRUEBA"`
186
+ - [ ] Usuario admin: `CODIGO=1`, `LOGIN="admin"`, `IDEMPRESA=1`
187
+
188
+ #### Recursos gráficos
189
+ - [ ] Archivos de iconos en `icons/` en formato PNG, JPG o SVG
190
+ - [ ] Nomenclatura consistente: `ic_` (acciones), `app_` (icono app), `avatar_` (usuarios)
191
+
192
+ #### README
193
+ - [ ] `README.md` en la raiz con descripción del proyecto
194
+ - [ ] `README.md` en `bd/`, `icons/`, `files/`