awc-zns-mtd 2.4.0 → 2.6.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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Comando: new
3
- * Crea un nuevo proyecto con estructura completa AWC ZNS-MTD
3
+ * Crea un nuevo directorio de proyecto con configuración base AWC ZNS-MTD
4
4
  */
5
5
 
6
6
  const fs = require('fs-extra');
@@ -45,38 +45,23 @@ async function newProjectCommand(projectName, options = {}) {
45
45
  process.exit(1);
46
46
  }
47
47
 
48
- // Preguntas de configuración
49
- const answers = await inquirer.prompt([
48
+ // Preguntar responsable del proyecto
49
+ const { responsible, description, gitInit } = await inquirer.prompt([
50
50
  {
51
- type: 'list',
52
- name: 'projectType',
53
- message: '¿Qué tipo de proyecto es?',
54
- choices: [
55
- { name: 'Web Application (Frontend + Backend)', value: 'web' },
56
- { name: 'API/Microservices', value: 'api' },
57
- { name: 'Mobile Application', value: 'mobile' },
58
- { name: 'Enterprise System', value: 'enterprise' },
59
- { name: 'Otro', value: 'other' }
60
- ],
61
- default: options.type
51
+ type: 'input',
52
+ name: 'responsible',
53
+ message: '👤 Responsable del proyecto:',
54
+ validate: (input) => {
55
+ if (!input.trim()) return 'El responsable es requerido';
56
+ return true;
57
+ }
62
58
  },
63
59
  {
64
60
  type: 'input',
65
61
  name: 'description',
66
- message: '📝 Descripción breve del proyecto:',
62
+ message: '📝 Descripción breve (opcional):',
67
63
  default: `Proyecto ${projectName}`
68
64
  },
69
- {
70
- type: 'list',
71
- name: 'teamSize',
72
- message: '👥 Tamaño del equipo:',
73
- choices: [
74
- { name: 'Individual (1 persona)', value: 'solo' },
75
- { name: 'Pequeño (2-5 personas)', value: 'small' },
76
- { name: 'Mediano (6-15 personas)', value: 'medium' },
77
- { name: 'Grande (16+ personas)', value: 'large' }
78
- ]
79
- },
80
65
  {
81
66
  type: 'confirm',
82
67
  name: 'gitInit',
@@ -85,13 +70,231 @@ async function newProjectCommand(projectName, options = {}) {
85
70
  }
86
71
  ]);
87
72
 
88
- const spinner = ora('Creando estructura del proyecto...').start();
73
+ const spinner = ora('Creando estructura base del proyecto...').start();
89
74
 
90
75
  try {
91
76
  // 1. Crear directorio raíz del proyecto
92
77
  await fs.ensureDir(projectPath);
93
78
  spinner.text = `Directorio ${projectName} creado`;
94
79
 
80
+ // 2. Crear estructura base mínima
81
+ const baseDirectories = [
82
+ '.awc/agents',
83
+ '.awc/workflows',
84
+ '.awc/templates',
85
+ 'docs'
86
+ ];
87
+
88
+ for (const dir of baseDirectories) {
89
+ await fs.ensureDir(path.join(projectPath, dir));
90
+ }
91
+ spinner.text = 'Estructura base creada';
92
+
93
+ // 3. Copiar agentes base (4 agentes core)
94
+ const srcAgentsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/agents');
95
+ const destAgentsPath = path.join(projectPath, '.awc/agents');
96
+
97
+ if (await fs.pathExists(srcAgentsPath)) {
98
+ await fs.copy(srcAgentsPath, destAgentsPath);
99
+ spinner.text = 'Agentes base copiados';
100
+ }
101
+
102
+ // 4. Copiar agentes especializados (22 agentes)
103
+ const srcCustomAgentsPath = path.join(__dirname, '../../../src/modules/custom-agents/cli/.awc-agents');
104
+ const destCustomAgentsPath = path.join(projectPath, '.awc/agents/specialized');
105
+
106
+ if (await fs.pathExists(srcCustomAgentsPath)) {
107
+ await fs.copy(srcCustomAgentsPath, destCustomAgentsPath);
108
+ spinner.text = 'Agentes especializados copiados';
109
+ }
110
+
111
+ // 5. Copiar workflows
112
+ const srcWorkflowsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/workflows');
113
+ const destWorkflowsPath = path.join(projectPath, '.awc/workflows');
114
+
115
+ if (await fs.pathExists(srcWorkflowsPath)) {
116
+ await fs.copy(srcWorkflowsPath, destWorkflowsPath);
117
+ spinner.text = 'Workflows copiados';
118
+ }
119
+
120
+ // 6. Copiar templates
121
+ const srcTemplatesPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/templates');
122
+ const destTemplatesPath = path.join(projectPath, '.awc/templates');
123
+
124
+ if (await fs.pathExists(srcTemplatesPath)) {
125
+ await fs.copy(srcTemplatesPath, destTemplatesPath);
126
+ spinner.text = 'Templates copiados';
127
+ }
128
+
129
+ // 7. Crear archivo de configuración AWC
130
+ const awcConfig = {
131
+ version: getVersion(),
132
+ createdAt: new Date().toISOString(),
133
+ project: {
134
+ name: projectName,
135
+ description: description,
136
+ responsible: responsible
137
+ },
138
+ projectType: null, // Se definirá con awc init
139
+ initialized: false,
140
+ preferences: {
141
+ communication_language: 'Spanish',
142
+ document_output_language: 'Spanish',
143
+ code_language: 'English'
144
+ },
145
+ workflows: {
146
+ current_phase: null,
147
+ completed_phases: []
148
+ }
149
+ };
150
+
151
+ await fs.writeJson(
152
+ path.join(projectPath, '.awc/config.json'),
153
+ awcConfig,
154
+ { spaces: 2 }
155
+ );
156
+ spinner.text = 'Configuración AWC creada';
157
+
158
+ // 8. Crear README.md del proyecto
159
+ const readme = createReadmeContent(projectName, responsible, description);
160
+ await fs.writeFile(path.join(projectPath, 'README.md'), readme);
161
+ spinner.text = 'README.md creado';
162
+
163
+ // 9. Crear .gitignore
164
+ const gitignore = createGitignoreContent();
165
+ await fs.writeFile(path.join(projectPath, '.gitignore'), gitignore);
166
+ spinner.text = '.gitignore creado';
167
+
168
+ // 10. Crear configuración de VS Code
169
+ await createVSCodeConfig(projectPath, projectName);
170
+ spinner.text = 'Configuración VS Code creada';
171
+
172
+ // 11. Copiar copilot-instructions.md
173
+ const githubDir = path.join(projectPath, '.github');
174
+ await fs.ensureDir(githubDir);
175
+ const templateCopilotPath = path.join(__dirname, '../../../templates/.github/copilot-instructions.md');
176
+ if (await fs.pathExists(templateCopilotPath)) {
177
+ await fs.copy(templateCopilotPath, path.join(githubDir, 'copilot-instructions.md'));
178
+ spinner.text = 'GitHub Copilot instructions creadas';
179
+ }
180
+
181
+ // 12. Crear archivo NEXT_STEPS.md
182
+ const nextSteps = createNextStepsContent(projectName);
183
+ await fs.writeFile(path.join(projectPath, 'NEXT_STEPS.md'), nextSteps);
184
+ spinner.text = 'Guía de próximos pasos creada';
185
+
186
+ // 13. Inicializar Git si se solicitó
187
+ if (gitInit) {
188
+ const { execSync } = require('child_process');
189
+ try {
190
+ execSync('git init', { cwd: projectPath, stdio: 'ignore' });
191
+ execSync('git add .', { cwd: projectPath, stdio: 'ignore' });
192
+ execSync(`git commit -m "feat: Inicializar proyecto ${projectName} con AWC ZNS-MTD"`, {
193
+ cwd: projectPath,
194
+ stdio: 'ignore'
195
+ });
196
+ spinner.text = 'Repositorio Git inicializado';
197
+ } catch (error) {
198
+ // Git no está disponible o fallo, continuar sin git
199
+ }
200
+ }
201
+
202
+ spinner.succeed(chalk.green('✅ Proyecto creado exitosamente'));
203
+
204
+ // Mostrar resumen
205
+ console.log(chalk.cyan('\n' + '═'.repeat(60)));
206
+ console.log(chalk.cyan('📦 Proyecto Creado'));
207
+ console.log(chalk.cyan('═'.repeat(60) + '\n'));
208
+
209
+ console.log(`${chalk.gray('Nombre:')} ${chalk.green(projectName)}`);
210
+ console.log(`${chalk.gray('Responsable:')} ${chalk.yellow(responsible)}`);
211
+ console.log(`${chalk.gray('Ubicación:')} ${chalk.blue(projectPath)}`);
212
+ console.log(`${chalk.gray('AWC Versión:')} ${chalk.yellow(getVersion())}\n`);
213
+
214
+ // Próximos pasos
215
+ console.log(chalk.cyan('📚 Próximos Pasos:\n'));
216
+ console.log(` ${chalk.green('1.')} cd ${projectName}`);
217
+ console.log(` ${chalk.green('2.')} awc init ${chalk.gray('# Inicializar tipo de proyecto')}`);
218
+ console.log(` ${chalk.green('3.')} Leer ${chalk.yellow('NEXT_STEPS.md')} para más detalles\n`);
219
+
220
+ console.log(chalk.yellow('⚠️ La estructura de fases se creará al ejecutar') + chalk.green(' awc init\n'));
221
+
222
+ } catch (error) {
223
+ spinner.fail(chalk.red('❌ Error creando proyecto'));
224
+ throw error;
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Crea el contenido del README.md
230
+ */
231
+ function createReadmeContent(projectName, responsible, description) {
232
+ return `# ${projectName}
233
+
234
+ > ${description}
235
+
236
+ ## 📋 Información del Proyecto
237
+
238
+ - **Responsable**: ${responsible}
239
+ - **Metodología**: AWC ZNS-MTD (Zen, Neutro, Sistemático)
240
+ - **Estado**: Pendiente de inicialización
241
+
242
+ ## 🚀 Próximos Pasos
243
+
244
+ Este proyecto ha sido creado con la estructura base de AWC ZNS-MTD.
245
+
246
+ ### 1. Inicializar Tipo de Proyecto
247
+
248
+ \`\`\`bash
249
+ awc init
250
+ \`\`\`
251
+
252
+ El comando \`awc init\` te preguntará:
253
+ - Tipo de proyecto (auditoría, desarrollo nuevo, migración, etc.)
254
+ - Tecnologías a utilizar
255
+ - Tipo de workflow (quick, standard, enterprise)
256
+
257
+ Basado en tus respuestas, creará automáticamente:
258
+ - ✅ Estructura de directorios por fase
259
+ - ✅ Directorios client-docs específicos
260
+ - ✅ Templates relevantes para tu proyecto
261
+ - ✅ Workflows configurados
262
+
263
+ ### 2. Comenzar a Trabajar
264
+
265
+ Una vez inicializado, seguir las guías en cada fase del proyecto.
266
+
267
+ ## 🔧 Configuración AWC
268
+
269
+ El directorio \`.awc/\` contiene:
270
+
271
+ - \`agents/\` - 4 agentes base + 22 agentes especializados
272
+ - \`workflows/\` - 8 workflows completos
273
+ - \`templates/\` - 7 templates profesionales
274
+ - \`config.json\` - Configuración del proyecto
275
+
276
+ ## 📝 Comandos Disponibles
277
+
278
+ \`\`\`bash
279
+ # Inicializar proyecto (siguiente paso)
280
+ awc init
281
+
282
+ # Ver estado del proyecto
283
+ awc status
284
+
285
+ # Validar estructura
286
+ awc validate
287
+
288
+ # Ver configuración
289
+ awc config
290
+ \`\`\`
291
+
292
+ ---
293
+
294
+ Generado con ❤️ usando AWC ZNS-MTD Method v${getVersion()}
295
+ `;
296
+ }
297
+
95
298
  // 2. Crear estructura estándar de directorios
96
299
  const directories = [
97
300
  // Fase 0: Comercial
@@ -99,45 +302,65 @@ async function newProjectCommand(projectName, options = {}) {
99
302
  '01-comercial/02-technical-proposal',
100
303
  '01-comercial/03-quotation',
101
304
  '01-comercial/04-contract',
305
+ '01-comercial/docs/client-docs/requerimientos',
306
+ '01-comercial/docs/client-docs/presentaciones',
307
+ '01-comercial/docs/client-docs/contratos',
102
308
 
103
309
  // Fase 1: Inception
104
310
  '02-inception/01-kickoff',
105
311
  '02-inception/02-prd',
106
312
  '02-inception/03-backlog',
107
313
  '02-inception/04-release-planning',
314
+ '02-inception/docs/client-docs/procesos',
315
+ '02-inception/docs/client-docs/manuales',
316
+ '02-inception/docs/client-docs/imagenes',
108
317
 
109
318
  // Fase 2: Análisis
110
319
  '03-analysis/01-code-audit',
111
320
  '03-analysis/02-architecture-review',
112
321
  '03-analysis/03-technical-debt',
113
322
  '03-analysis/04-recommendations',
323
+ '03-analysis/docs/client-docs/arquitectura',
324
+ '03-analysis/docs/client-docs/databases',
325
+ '03-analysis/docs/client-docs/especificaciones',
114
326
 
115
327
  // Fase 3: Planificación
116
328
  '04-planning/01-sprint-planning',
117
329
  '04-planning/02-backlog-refinement',
118
330
  '04-planning/03-release-planning',
119
331
  '04-planning/04-roadmap',
332
+ '04-planning/docs/client-docs/historias',
333
+ '04-planning/docs/client-docs/estimaciones',
120
334
 
121
335
  // Fase 4: Desarrollo
122
336
  '05-development/src',
123
337
  '05-development/tests',
124
338
  '05-development/docs',
339
+ '05-development/docs/client-docs/apis',
340
+ '05-development/docs/client-docs/integraciones',
341
+ '05-development/docs/client-docs/recursos',
125
342
 
126
343
  // Fase 5: QA
127
344
  '06-qa/test-plans',
128
345
  '06-qa/test-cases',
129
346
  '06-qa/test-results',
130
347
  '06-qa/bug-reports',
348
+ '06-qa/docs/client-docs/criterios-aceptacion',
349
+ '06-qa/docs/client-docs/escenarios-prueba',
131
350
 
132
351
  // Fase 6: Deployment
133
352
  '07-deployment/environments',
134
353
  '07-deployment/scripts',
135
354
  '07-deployment/logs',
355
+ '07-deployment/docs/client-docs/infraestructura',
356
+ '07-deployment/docs/client-docs/accesos',
136
357
 
137
358
  // Fase 7: Soporte
138
359
  '08-support/incidents',
139
360
  '08-support/bug-fixes',
140
361
  '08-support/maintenance',
362
+ '08-support/docs/client-docs/incidentes',
363
+ '08-support/docs/client-docs/cambios',
141
364
 
142
365
  // Documentación general
143
366
  'docs/architecture',
@@ -225,6 +448,10 @@ async function newProjectCommand(projectName, options = {}) {
225
448
  await createPhaseGuides(projectPath);
226
449
  spinner.text = 'Guías de fase creadas';
227
450
 
451
+ // 9.0. Crear README para client-docs
452
+ await createClientDocsReadmes(projectPath);
453
+ spinner.text = 'README de client-docs creados';
454
+
228
455
  // 9.1. Crear configuración de VS Code
229
456
  await createVSCodeConfig(projectPath);
230
457
  spinner.text = 'Configuración VS Code creada';
@@ -639,6 +866,357 @@ Una vez features completas → **06-qa/**
639
866
  }
640
867
  }
641
868
 
869
+ /**
870
+ * Crea README.md en directorios client-docs
871
+ */
872
+ async function createClientDocsReadmes(projectPath) {
873
+ const clientDocsReadmes = [
874
+ {
875
+ path: '01-comercial/docs/client-docs/README.md',
876
+ content: `# 📄 Documentación del Cliente - Fase Comercial
877
+
878
+ Este directorio contiene toda la documentación proporcionada por el cliente durante la fase comercial.
879
+
880
+ ## 📂 Estructura
881
+
882
+ ### requerimientos/
883
+ Documentos de requerimientos del cliente:
884
+ - PDFs con especificaciones funcionales
885
+ - Word con listados de requerimientos
886
+ - Excel con matrices de requerimientos
887
+ - Presentaciones con necesidades del negocio
888
+
889
+ ### presentaciones/
890
+ Presentaciones del cliente:
891
+ - Decks ejecutivos
892
+ - Presentaciones de producto actual
893
+ - Material de marketing
894
+ - Diagramas de flujo de negocio
895
+
896
+ ### contratos/
897
+ Documentos contractuales (CONFIDENCIAL):
898
+ - Contratos firmados
899
+ - NDAs
900
+ - SOWs (Statement of Work)
901
+ - Anexos contractuales
902
+
903
+ ⚠️ **IMPORTANTE**: Los archivos en \`contratos/\` están en .gitignore por defecto.
904
+
905
+ ## 📝 Buenas Prácticas
906
+
907
+ 1. **Nomenclatura**: Usar formato \`YYYYMMDD-nombre-descriptivo.ext\`
908
+ - ✅ \`20260107-requerimientos-funcionales-v1.pdf\`
909
+ - ❌ \`documento.pdf\`
910
+
911
+ 2. **Versionado**: Incluir versión en el nombre
912
+ - \`requerimientos-v1.0.docx\`
913
+ - \`requerimientos-v1.1.docx\`
914
+
915
+ 3. **Organización**: Un archivo por tipo de documento
916
+ - No mezclar requerimientos con contratos
917
+ - Mantener presentaciones separadas
918
+
919
+ 4. **Respaldo**: Mantener originales intactos
920
+ - No editar documentos del cliente
921
+ - Crear copias de trabajo si es necesario
922
+ `
923
+ },
924
+ {
925
+ path: '02-inception/docs/client-docs/README.md',
926
+ content: `# 📄 Documentación del Cliente - Fase Inception
927
+
928
+ Este directorio contiene la documentación del cliente relevante para el inicio del proyecto.
929
+
930
+ ## 📂 Estructura
931
+
932
+ ### procesos/
933
+ Diagramas y documentación de procesos actuales:
934
+ - Diagramas de flujo (BPMN, Visio)
935
+ - Mapas de procesos de negocio
936
+ - Descripciones de workflows actuales
937
+ - Casos de uso documentados
938
+
939
+ ### manuales/
940
+ Manuales de usuario de sistemas existentes:
941
+ - Manuales de usuario en PDF/Word
942
+ - Guías de operación
943
+ - Documentación de sistemas legacy
944
+ - FAQs del sistema actual
945
+
946
+ ### imagenes/
947
+ Material visual del cliente:
948
+ - Screenshots de sistemas actuales
949
+ - Wireframes/mockups proporcionados
950
+ - Logos y branding guidelines
951
+ - Fotografías de procesos físicos
952
+ - Diagramas y esquemas
953
+
954
+ ## 📝 Uso Recomendado
955
+
956
+ **procesos/**: Usar para entender flujos actuales y diseñar mejoras
957
+ **manuales/**: Referencia para features esperados en el nuevo sistema
958
+ **imagenes/**: Material visual para PRD y documentación
959
+
960
+ ## ⚠️ Importante
961
+ - Estos documentos son REFERENCIA, no especificaciones finales
962
+ - Validar con stakeholders antes de implementar
963
+ - Mantener trazabilidad con el PRD
964
+ `
965
+ },
966
+ {
967
+ path: '03-analysis/docs/client-docs/README.md',
968
+ content: `# 📄 Documentación del Cliente - Fase Análisis
969
+
970
+ Documentación técnica del cliente para auditoría y análisis.
971
+
972
+ ## 📂 Estructura
973
+
974
+ ### arquitectura/
975
+ Diagramas arquitectónicos actuales:
976
+ - Diagramas de arquitectura (C4, UML)
977
+ - Diagramas de red e infraestructura
978
+ - Diagramas de componentes
979
+ - Documentos de diseño técnico
980
+
981
+ ### databases/
982
+ Documentación de bases de datos:
983
+ - Esquemas de base de datos (ERD)
984
+ - Modelos de datos en PDF/Visio
985
+ - Scripts SQL de estructura
986
+ - Diccionarios de datos
987
+ - Excel con tablas y campos
988
+
989
+ ### especificaciones/
990
+ Especificaciones técnicas:
991
+ - Documentos de APIs existentes (Swagger, Postman)
992
+ - Especificaciones de interfaces
993
+ - Protocolos de integración
994
+ - Documentación de servicios web
995
+
996
+ ## 🎯 Objetivo
997
+
998
+ Entender la arquitectura actual para:
999
+ - Identificar technical debt
1000
+ - Planificar migraciones
1001
+ - Diseñar integraciones
1002
+ - Evaluar impacto de cambios
1003
+
1004
+ ## 📊 Artefactos Generados
1005
+
1006
+ A partir de esta documentación, el equipo AWC generará:
1007
+ - Reporte de auditoría de código
1008
+ - Análisis de arquitectura
1009
+ - Assessment de technical debt
1010
+ - Recomendaciones de mejora
1011
+ `
1012
+ },
1013
+ {
1014
+ path: '04-planning/docs/client-docs/README.md',
1015
+ content: `# 📄 Documentación del Cliente - Fase Planificación
1016
+
1017
+ Documentación del cliente para planificación de sprints.
1018
+
1019
+ ## 📂 Estructura
1020
+
1021
+ ### historias/
1022
+ User stories y casos de uso del cliente:
1023
+ - Word/Excel con historias de usuario
1024
+ - Casos de uso detallados
1025
+ - Escenarios de negocio
1026
+ - Criterios de aceptación iniciales
1027
+
1028
+ ### estimaciones/
1029
+ Material para estimación:
1030
+ - Hojas de cálculo con estimaciones del cliente
1031
+ - Referencias de proyectos similares
1032
+ - Benchmarks de performance esperado
1033
+ - Constraints de tiempo/presupuesto
1034
+
1035
+ ## 💡 Uso
1036
+
1037
+ Esta documentación ayuda a:
1038
+ - Refinar user stories del backlog
1039
+ - Validar estimaciones del equipo
1040
+ - Alinear expectativas de tiempos
1041
+ - Priorizar features según negocio
1042
+ `
1043
+ },
1044
+ {
1045
+ path: '05-development/docs/client-docs/README.md',
1046
+ content: `# 📄 Documentación del Cliente - Fase Desarrollo
1047
+
1048
+ Recursos técnicos del cliente necesarios para implementación.
1049
+
1050
+ ## 📂 Estructura
1051
+
1052
+ ### apis/
1053
+ Documentación de APIs a integrar:
1054
+ - Swagger/OpenAPI specs
1055
+ - Colecciones de Postman
1056
+ - WSDL de servicios SOAP
1057
+ - Documentación de endpoints REST
1058
+ - Credenciales de acceso (sandbox/test)
1059
+
1060
+ ### integraciones/
1061
+ Sistemas externos a integrar:
1062
+ - Manuales de integración
1063
+ - Diagramas de flujo de integración
1064
+ - Mappings de campos
1065
+ - Ejemplos de payloads XML/JSON
1066
+ - Certificados SSL/TLS
1067
+
1068
+ ### recursos/
1069
+ Assets para la aplicación:
1070
+ - Imágenes para UI (logos, iconos)
1071
+ - Archivos de diseño (Figma, Sketch exports)
1072
+ - Fuentes corporativas
1073
+ - Guidelines de branding
1074
+ - Templates de documentos
1075
+
1076
+ ## 🔧 Integración
1077
+
1078
+ **Antes de integrar**:
1079
+ 1. Validar credenciales en ambiente de pruebas
1080
+ 2. Revisar rate limits y SLAs
1081
+ 3. Documentar endpoints en Swagger local
1082
+ 4. Crear tests de integración
1083
+
1084
+ **Durante desarrollo**:
1085
+ - Mantener colecciones de Postman actualizadas
1086
+ - Documentar cambios en APIs
1087
+ - Reportar issues de integración al cliente
1088
+ `
1089
+ },
1090
+ {
1091
+ path: '06-qa/docs/client-docs/README.md',
1092
+ content: `# 📄 Documentación del Cliente - Fase QA
1093
+
1094
+ Material del cliente para validación y pruebas.
1095
+
1096
+ ## 📂 Estructura
1097
+
1098
+ ### criterios-aceptacion/
1099
+ Criterios de aceptación del cliente:
1100
+ - Excel/Word con criterios de aceptación
1101
+ - Checklist de features esperados
1102
+ - Requerimientos no funcionales (SLA, performance)
1103
+ - Escenarios de validación de negocio
1104
+
1105
+ ### escenarios-prueba/
1106
+ Escenarios de prueba proporcionados:
1107
+ - Casos de prueba del cliente
1108
+ - Datos de prueba (datasets CSV/Excel)
1109
+ - Scripts de carga de datos
1110
+ - Escenarios end-to-end prioritarios
1111
+
1112
+ ## ✅ Validación
1113
+
1114
+ Esta documentación se usa para:
1115
+ 1. Crear test cases alineados con expectativas
1116
+ 2. Generar datos de prueba realistas
1117
+ 3. Validar acceptance criteria
1118
+ 4. Preparar UAT con el cliente
1119
+
1120
+ ## 📋 UAT (User Acceptance Testing)
1121
+
1122
+ Coordinar con cliente:
1123
+ - [ ] Ambiente de UAT preparado
1124
+ - [ ] Usuarios de prueba creados
1125
+ - [ ] Datasets cargados
1126
+ - [ ] Sesiones de UAT agendadas
1127
+ - [ ] Formulario de signoff preparado
1128
+ `
1129
+ },
1130
+ {
1131
+ path: '07-deployment/docs/client-docs/README.md',
1132
+ content: `# 📄 Documentación del Cliente - Fase Deployment
1133
+
1134
+ Información de infraestructura del cliente para deployment.
1135
+
1136
+ ## 📂 Estructura
1137
+
1138
+ ### infraestructura/
1139
+ Documentación de infraestructura del cliente:
1140
+ - Diagramas de red
1141
+ - Especificaciones de servidores
1142
+ - Configuraciones de firewalls
1143
+ - IPs y rangos asignados
1144
+ - Políticas de seguridad
1145
+
1146
+ ### accesos/
1147
+ Credenciales y accesos (CONFIDENCIAL):
1148
+ - Credenciales de servidores
1149
+ - VPN configs
1150
+ - Certificados SSL
1151
+ - API keys de producción
1152
+ - Passwords de bases de datos
1153
+
1154
+ ⚠️ **CRÍTICO**:
1155
+ - Archivos en esta carpeta están en .gitignore
1156
+ - Usar gestor de secretos (Azure Key Vault, AWS Secrets Manager)
1157
+ - NUNCA commitear credenciales al repositorio
1158
+
1159
+ ## 🚀 Pre-Deployment Checklist
1160
+
1161
+ - [ ] Accesos a servidores validados
1162
+ - [ ] VPN configurada y probada
1163
+ - [ ] DNS apuntando correctamente
1164
+ - [ ] Certificados SSL instalados
1165
+ - [ ] Firewall rules configurados
1166
+ - [ ] Backup de producción realizado
1167
+ `
1168
+ },
1169
+ {
1170
+ path: '08-support/docs/client-docs/README.md',
1171
+ content: `# 📄 Documentación del Cliente - Fase Soporte
1172
+
1173
+ Documentación de incidentes y solicitudes del cliente.
1174
+
1175
+ ## 📂 Estructura
1176
+
1177
+ ### incidentes/
1178
+ Reportes de incidentes del cliente:
1179
+ - Screenshots de errores
1180
+ - Logs proporcionados por el cliente
1181
+ - Videos reproduciendo issues
1182
+ - Reportes de usuarios finales
1183
+
1184
+ ### cambios/
1185
+ Solicitudes de cambio:
1186
+ - Change requests (PDFs/Word)
1187
+ - Nuevos requerimientos post-lanzamiento
1188
+ - Solicitudes de mejoras
1189
+ - Feedback de usuarios
1190
+
1191
+ ## 🎫 Gestión de Incidentes
1192
+
1193
+ **Flujo recomendado**:
1194
+ 1. Cliente reporta → Copiar evidencia a \`incidentes/\`
1195
+ 2. Crear ticket en sistema de tracking
1196
+ 3. Reproducir y documentar en \`08-support/incidents/\`
1197
+ 4. Resolver y validar con cliente
1198
+
1199
+ **Nomenclatura**:
1200
+ - \`INC-001-descripcion-corta/\` (subdirectorio por incidente)
1201
+ - Dentro: screenshots, logs, análisis, solución
1202
+
1203
+ ## 📝 Change Requests
1204
+
1205
+ **Evaluación**:
1206
+ 1. Cliente envía CR → Guardar en \`cambios/\`
1207
+ 2. Equipo analiza impacto (tiempo/costo)
1208
+ 3. Aprobar/rechazar con justificación
1209
+ 4. Si aprobado → Crear user stories en backlog
1210
+ `
1211
+ }
1212
+ ];
1213
+
1214
+ for (const readme of clientDocsReadmes) {
1215
+ const filePath = path.join(projectPath, readme.path);
1216
+ await fs.writeFile(filePath, readme.content);
1217
+ }
1218
+ }
1219
+
642
1220
  /**
643
1221
  * Crea configuración de VS Code para cargar AWC automáticamente
644
1222
  */