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.
- package/CHANGELOG.md +99 -0
- package/package.json +1 -1
- package/src/modules/awc-zns-mtd/config.yaml +1 -1
- package/tools/cli/commands/init-old.js +147 -0
- package/tools/cli/commands/init.js +513 -147
- package/tools/cli/commands/new-project.js +605 -27
- package/tools/cli/commands/new-project.js.backup +1302 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Comando: new
|
|
3
|
-
* Crea un nuevo proyecto con
|
|
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
|
-
//
|
|
49
|
-
const
|
|
48
|
+
// Preguntar responsable del proyecto
|
|
49
|
+
const { responsible, description, gitInit } = await inquirer.prompt([
|
|
50
50
|
{
|
|
51
|
-
type: '
|
|
52
|
-
name: '
|
|
53
|
-
message: '
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
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
|
*/
|