@contractspec/module.lifecycle-advisor 3.7.5 → 3.7.7
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/README.md +43 -42
- package/dist/browser/index.js +382 -385
- package/dist/i18n/catalogs/index.d.ts +1 -1
- package/dist/i18n/index.d.ts +7 -7
- package/dist/i18n/locale.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +382 -385
- package/dist/node/index.js +382 -385
- package/package.json +7 -7
- package/src/data/library-stage-map.ts +117 -117
- package/src/data/stage-playbooks.ts +265 -265
package/dist/browser/index.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
// src/recommendations/recommendation-engine.ts
|
|
2
|
-
import {
|
|
3
|
-
LIFECYCLE_STAGE_META
|
|
4
|
-
} from "@contractspec/lib.lifecycle";
|
|
5
|
-
|
|
6
1
|
// src/data/stage-playbooks.ts
|
|
7
2
|
import { LifecycleStage } from "@contractspec/lib.lifecycle";
|
|
8
3
|
|
|
@@ -346,670 +341,670 @@ var enMessages = defineTranslation({
|
|
|
346
341
|
}
|
|
347
342
|
});
|
|
348
343
|
|
|
349
|
-
// src/i18n/catalogs/
|
|
344
|
+
// src/i18n/catalogs/es.ts
|
|
350
345
|
import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
|
|
351
|
-
var
|
|
346
|
+
var esMessages = defineTranslation2({
|
|
352
347
|
meta: {
|
|
353
348
|
key: "lifecycle-advisor.messages",
|
|
354
349
|
version: "1.0.0",
|
|
355
350
|
domain: "lifecycle-advisor",
|
|
356
|
-
description: "Playbook, ceremony, library, and engine strings (
|
|
351
|
+
description: "Playbook, ceremony, library, and engine strings (Spanish)",
|
|
357
352
|
owners: ["platform"],
|
|
358
353
|
stability: "experimental"
|
|
359
354
|
},
|
|
360
|
-
locale: "
|
|
355
|
+
locale: "es",
|
|
361
356
|
fallback: "en",
|
|
362
357
|
messages: {
|
|
363
358
|
"playbook.stage0.focus.0": {
|
|
364
|
-
value: "
|
|
365
|
-
description: "Stage 0 focus area:
|
|
359
|
+
value: "Descubrimiento",
|
|
360
|
+
description: "Stage 0 focus area: discovery research"
|
|
366
361
|
},
|
|
367
362
|
"playbook.stage0.focus.1": {
|
|
368
|
-
value: "
|
|
369
|
-
description: "Stage 0 focus area:
|
|
363
|
+
value: "Claridad del problema",
|
|
364
|
+
description: "Stage 0 focus area: sharpening the problem definition"
|
|
370
365
|
},
|
|
371
366
|
"playbook.stage0.focus.2": {
|
|
372
367
|
value: "Persona",
|
|
373
|
-
description: "Stage 0 focus area:
|
|
368
|
+
description: "Stage 0 focus area: identifying the target persona"
|
|
374
369
|
},
|
|
375
370
|
"playbook.stage1.focus.0": {
|
|
376
|
-
value: "
|
|
377
|
-
description: "Stage 1 focus area:
|
|
371
|
+
value: "Prototipo",
|
|
372
|
+
description: "Stage 1 focus area: building a prototype"
|
|
378
373
|
},
|
|
379
374
|
"playbook.stage1.focus.1": {
|
|
380
|
-
value: "
|
|
381
|
-
description: "Stage 1 focus area:
|
|
375
|
+
value: "Retroalimentación",
|
|
376
|
+
description: "Stage 1 focus area: gathering user feedback"
|
|
382
377
|
},
|
|
383
378
|
"playbook.stage1.focus.2": {
|
|
384
|
-
value: "
|
|
385
|
-
description: "Stage 1 focus area:
|
|
379
|
+
value: "Prueba de valor",
|
|
380
|
+
description: "Stage 1 focus area: proving the value proposition"
|
|
386
381
|
},
|
|
387
382
|
"playbook.stage2.focus.0": {
|
|
388
|
-
value: "
|
|
389
|
-
description: "Stage 2 focus area:
|
|
383
|
+
value: "Activación",
|
|
384
|
+
description: "Stage 2 focus area: user activation"
|
|
390
385
|
},
|
|
391
386
|
"playbook.stage2.focus.1": {
|
|
392
|
-
value: "
|
|
393
|
-
description: "Stage 2 focus area:
|
|
387
|
+
value: "Telemetría",
|
|
388
|
+
description: "Stage 2 focus area: usage telemetry"
|
|
394
389
|
},
|
|
395
390
|
"playbook.stage2.focus.2": {
|
|
396
|
-
value: "
|
|
397
|
-
description: "Stage 2 focus area:
|
|
391
|
+
value: "Retroalimentación",
|
|
392
|
+
description: "Stage 2 focus area: continuous user feedback"
|
|
398
393
|
},
|
|
399
394
|
"playbook.stage3.focus.0": {
|
|
400
|
-
value: "
|
|
401
|
-
description: "Stage 3 focus area:
|
|
395
|
+
value: "Retención",
|
|
396
|
+
description: "Stage 3 focus area: user retention"
|
|
402
397
|
},
|
|
403
398
|
"playbook.stage3.focus.1": {
|
|
404
|
-
value: "
|
|
405
|
-
description: "Stage 3 focus area:
|
|
399
|
+
value: "Fiabilidad",
|
|
400
|
+
description: "Stage 3 focus area: product reliability"
|
|
406
401
|
},
|
|
407
402
|
"playbook.stage3.focus.2": {
|
|
408
|
-
value: "
|
|
409
|
-
description: "Stage 3 focus area:
|
|
403
|
+
value: "Historia",
|
|
404
|
+
description: "Stage 3 focus area: building the narrative"
|
|
410
405
|
},
|
|
411
406
|
"playbook.stage4.focus.0": {
|
|
412
|
-
value: "
|
|
413
|
-
description: "Stage 4 focus area:
|
|
407
|
+
value: "Sistemas",
|
|
408
|
+
description: "Stage 4 focus area: scalable systems"
|
|
414
409
|
},
|
|
415
410
|
"playbook.stage4.focus.1": {
|
|
416
|
-
value: "
|
|
417
|
-
description: "Stage 4 focus area:
|
|
411
|
+
value: "Bucles de crecimiento",
|
|
412
|
+
description: "Stage 4 focus area: repeatable growth loops"
|
|
418
413
|
},
|
|
419
414
|
"playbook.stage4.focus.2": {
|
|
420
|
-
value: "
|
|
421
|
-
description: "Stage 4 focus area:
|
|
415
|
+
value: "Especialización",
|
|
416
|
+
description: "Stage 4 focus area: team specialization"
|
|
422
417
|
},
|
|
423
418
|
"playbook.stage5.focus.0": {
|
|
424
|
-
value: "
|
|
425
|
-
description: "Stage 5 focus area:
|
|
419
|
+
value: "Socios",
|
|
420
|
+
description: "Stage 5 focus area: partner ecosystem"
|
|
426
421
|
},
|
|
427
422
|
"playbook.stage5.focus.1": {
|
|
428
423
|
value: "APIs",
|
|
429
|
-
description: "Stage 5 focus area: APIs"
|
|
424
|
+
description: "Stage 5 focus area: platform APIs"
|
|
430
425
|
},
|
|
431
426
|
"playbook.stage5.focus.2": {
|
|
432
|
-
value: "
|
|
433
|
-
description: "Stage 5 focus area:
|
|
427
|
+
value: "Apuestas de expansión",
|
|
428
|
+
description: "Stage 5 focus area: expansion experiments"
|
|
434
429
|
},
|
|
435
430
|
"playbook.stage6.focus.0": {
|
|
436
|
-
value: "
|
|
437
|
-
description: "Stage 6 focus area:
|
|
431
|
+
value: "Optimización",
|
|
432
|
+
description: "Stage 6 focus area: operational optimization"
|
|
438
433
|
},
|
|
439
434
|
"playbook.stage6.focus.1": {
|
|
440
|
-
value: "
|
|
441
|
-
description: "Stage 6 focus area:
|
|
435
|
+
value: "Renovación",
|
|
436
|
+
description: "Stage 6 focus area: product renewal"
|
|
442
437
|
},
|
|
443
438
|
"playbook.stage6.focus.2": {
|
|
444
|
-
value: "
|
|
445
|
-
description: "Stage 6 focus area:
|
|
439
|
+
value: "Portafolio",
|
|
440
|
+
description: "Stage 6 focus area: portfolio management"
|
|
446
441
|
},
|
|
447
442
|
"playbook.stage0.action0.title": {
|
|
448
|
-
value: "
|
|
449
|
-
description: "
|
|
443
|
+
value: "Realizar un sprint de entrevistas de 5 días",
|
|
444
|
+
description: "Action title for stage 0 interview sprint"
|
|
450
445
|
},
|
|
451
446
|
"playbook.stage0.action0.description": {
|
|
452
|
-
value: "
|
|
453
|
-
description: "
|
|
447
|
+
value: "Programar al menos 5 entrevistas consecutivas y capturar citas sin editar.",
|
|
448
|
+
description: "Action description for stage 0 interview sprint"
|
|
454
449
|
},
|
|
455
450
|
"playbook.stage0.action1.title": {
|
|
456
|
-
value: "
|
|
457
|
-
description: "
|
|
451
|
+
value: "Redactar la historia del problema",
|
|
452
|
+
description: "Action title for stage 0 problem narrative"
|
|
458
453
|
},
|
|
459
454
|
"playbook.stage0.action1.description": {
|
|
460
|
-
value: "
|
|
461
|
-
description: "
|
|
455
|
+
value: "Resumir el dolor en un párrafo que puedas repetir a los socios.",
|
|
456
|
+
description: "Action description for stage 0 problem narrative"
|
|
462
457
|
},
|
|
463
458
|
"playbook.stage1.action0.title": {
|
|
464
|
-
value: "
|
|
465
|
-
description: "
|
|
459
|
+
value: "Ciclo de retroalimentación del prototipo",
|
|
460
|
+
description: "Action title for stage 1 prototype iteration"
|
|
466
461
|
},
|
|
467
462
|
"playbook.stage1.action0.description": {
|
|
468
|
-
value: "
|
|
469
|
-
description: "
|
|
463
|
+
value: "Entregar un prototipo de baja fidelidad y recopilar 3 rondas de reacciones.",
|
|
464
|
+
description: "Action description for stage 1 prototype iteration"
|
|
470
465
|
},
|
|
471
466
|
"playbook.stage1.action1.title": {
|
|
472
|
-
value: "
|
|
473
|
-
description: "
|
|
467
|
+
value: "Capturar señales de recomendación",
|
|
468
|
+
description: "Action title for stage 1 referral tracking"
|
|
474
469
|
},
|
|
475
470
|
"playbook.stage1.action1.description": {
|
|
476
|
-
value: "
|
|
477
|
-
description: "
|
|
471
|
+
value: "Preguntar a cada tester quién más debería ver la demo.",
|
|
472
|
+
description: "Action description for stage 1 referral tracking"
|
|
478
473
|
},
|
|
479
474
|
"playbook.stage2.action0.title": {
|
|
480
|
-
value: "
|
|
481
|
-
description: "
|
|
475
|
+
value: "Definir lista de verificación de activación",
|
|
476
|
+
description: "Action title for stage 2 activation definition"
|
|
482
477
|
},
|
|
483
478
|
"playbook.stage2.action0.description": {
|
|
484
|
-
value: "
|
|
485
|
-
description: "
|
|
479
|
+
value: "Documentar los 3 pasos que los usuarios deben completar para obtener valor.",
|
|
480
|
+
description: "Action description for stage 2 activation definition"
|
|
486
481
|
},
|
|
487
482
|
"playbook.stage2.action1.title": {
|
|
488
|
-
value: "
|
|
489
|
-
description: "
|
|
483
|
+
value: "Sincronización semanal con usuarios",
|
|
484
|
+
description: "Action title for stage 2 user communication"
|
|
490
485
|
},
|
|
491
486
|
"playbook.stage2.action1.description": {
|
|
492
|
-
value: "
|
|
493
|
-
description: "
|
|
487
|
+
value: "Organizar una llamada recurrente con tus 5 testers más activos.",
|
|
488
|
+
description: "Action description for stage 2 user communication"
|
|
494
489
|
},
|
|
495
490
|
"playbook.stage3.action0.title": {
|
|
496
|
-
value: "
|
|
497
|
-
description: "
|
|
491
|
+
value: "Realizar un estudio de retención",
|
|
492
|
+
description: "Action title for stage 3 retention analysis"
|
|
498
493
|
},
|
|
499
494
|
"playbook.stage3.action0.description": {
|
|
500
|
-
value: "
|
|
501
|
-
description: "
|
|
495
|
+
value: "Entrevistar a 3 usuarios retenidos y publicar sus métricas antes/después.",
|
|
496
|
+
description: "Action description for stage 3 retention analysis"
|
|
502
497
|
},
|
|
503
498
|
"playbook.stage3.action1.title": {
|
|
504
|
-
value: "
|
|
505
|
-
description: "
|
|
499
|
+
value: "Revisión ligera de incidentes",
|
|
500
|
+
description: "Action title for stage 3 reliability review"
|
|
506
501
|
},
|
|
507
502
|
"playbook.stage3.action1.description": {
|
|
508
|
-
value: "
|
|
509
|
-
description: "
|
|
503
|
+
value: "Revisar los últimos 2 problemas de fiabilidad y capturar las correcciones.",
|
|
504
|
+
description: "Action description for stage 3 reliability review"
|
|
510
505
|
},
|
|
511
506
|
"playbook.stage4.action0.title": {
|
|
512
|
-
value: "
|
|
513
|
-
description: "
|
|
507
|
+
value: "Codificar un bucle de crecimiento",
|
|
508
|
+
description: "Action title for stage 4 growth loop setup"
|
|
514
509
|
},
|
|
515
510
|
"playbook.stage4.action0.description": {
|
|
516
|
-
value: "
|
|
517
|
-
description: "
|
|
511
|
+
value: "Elegir un bucle (SEO, referencias, outbound) y documentar responsables + entradas.",
|
|
512
|
+
description: "Action description for stage 4 growth loop setup"
|
|
518
513
|
},
|
|
519
514
|
"playbook.stage4.action1.title": {
|
|
520
|
-
value: "
|
|
521
|
-
description: "
|
|
515
|
+
value: "Crear mapa de contratación",
|
|
516
|
+
description: "Action title for stage 4 hiring plan"
|
|
522
517
|
},
|
|
523
518
|
"playbook.stage4.action1.description": {
|
|
524
|
-
value: "
|
|
525
|
-
description: "
|
|
519
|
+
value: "Listar los roles especializados necesarios para los próximos 2 trimestres.",
|
|
520
|
+
description: "Action description for stage 4 hiring plan"
|
|
526
521
|
},
|
|
527
522
|
"playbook.stage5.action0.title": {
|
|
528
|
-
value: "Brief de
|
|
529
|
-
description: "
|
|
523
|
+
value: "Brief de preparación para socios",
|
|
524
|
+
description: "Action title for stage 5 partner preparation"
|
|
530
525
|
},
|
|
531
526
|
"playbook.stage5.action0.description": {
|
|
532
|
-
value: "
|
|
533
|
-
description: "
|
|
527
|
+
value: "Documentar tipos de socios, propuestas de valor y pasos de incorporación.",
|
|
528
|
+
description: "Action description for stage 5 partner preparation"
|
|
534
529
|
},
|
|
535
530
|
"playbook.stage5.action1.title": {
|
|
536
|
-
value: "
|
|
537
|
-
description: "
|
|
531
|
+
value: "Portafolio de experimentos de expansión",
|
|
532
|
+
description: "Action title for stage 5 expansion planning"
|
|
538
533
|
},
|
|
539
534
|
"playbook.stage5.action1.description": {
|
|
540
|
-
value: "
|
|
541
|
-
description: "
|
|
535
|
+
value: "Listar los 3 principales mercados o líneas de producto con responsables.",
|
|
536
|
+
description: "Action description for stage 5 expansion planning"
|
|
542
537
|
},
|
|
543
538
|
"playbook.stage6.action0.title": {
|
|
544
|
-
value: "
|
|
545
|
-
description: "
|
|
539
|
+
value: "Realizar una revisión costo-valor",
|
|
540
|
+
description: "Action title for stage 6 margin audit"
|
|
546
541
|
},
|
|
547
542
|
"playbook.stage6.action0.description": {
|
|
548
|
-
value: "
|
|
549
|
-
description: "
|
|
543
|
+
value: "Auditar cada superficie principal por impacto en márgenes.",
|
|
544
|
+
description: "Action description for stage 6 margin audit"
|
|
550
545
|
},
|
|
551
546
|
"playbook.stage6.action1.title": {
|
|
552
|
-
value: "
|
|
553
|
-
description: "
|
|
547
|
+
value: "Definir la apuesta de renovación",
|
|
548
|
+
description: "Action title for stage 6 reinvention track"
|
|
554
549
|
},
|
|
555
550
|
"playbook.stage6.action1.description": {
|
|
556
|
-
value: "
|
|
557
|
-
description: "
|
|
551
|
+
value: "Elegir una pista de reinvención o descontinuación y establecer puntos de control.",
|
|
552
|
+
description: "Action description for stage 6 reinvention track"
|
|
558
553
|
},
|
|
559
554
|
"ceremony.stage0.title": {
|
|
560
|
-
value: "
|
|
561
|
-
description: "
|
|
555
|
+
value: "Chispa de descubrimiento",
|
|
556
|
+
description: "Ceremony title for stage 0"
|
|
562
557
|
},
|
|
563
558
|
"ceremony.stage0.copy": {
|
|
564
|
-
value: "
|
|
565
|
-
description: "
|
|
559
|
+
value: "Comparte la cita de dolor más impactante con tu equipo. Enmárcala, celebra el enfoque.",
|
|
560
|
+
description: "Ceremony copy for stage 0"
|
|
566
561
|
},
|
|
567
562
|
"ceremony.stage1.title": {
|
|
568
|
-
value: "
|
|
569
|
-
description: "
|
|
563
|
+
value: "Resonancia de la solución",
|
|
564
|
+
description: "Ceremony title for stage 1"
|
|
570
565
|
},
|
|
571
566
|
"ceremony.stage1.copy": {
|
|
572
|
-
value: "
|
|
573
|
-
description: "
|
|
567
|
+
value: "Graba un breve screencast contando la historia antes/después a tu futuro yo.",
|
|
568
|
+
description: "Ceremony copy for stage 1"
|
|
574
569
|
},
|
|
575
570
|
"ceremony.stage2.title": {
|
|
576
|
-
value: "
|
|
577
|
-
description: "
|
|
571
|
+
value: "Brindis por la tracción",
|
|
572
|
+
description: "Ceremony title for stage 2"
|
|
578
573
|
},
|
|
579
574
|
"ceremony.stage2.copy": {
|
|
580
|
-
value: "
|
|
581
|
-
description: "
|
|
575
|
+
value: "Brinda por tus primeros 20 usuarios reales—di sus nombres, diles por qué importan.",
|
|
576
|
+
description: "Ceremony copy for stage 2"
|
|
582
577
|
},
|
|
583
578
|
"ceremony.stage3.title": {
|
|
584
|
-
value: "
|
|
585
|
-
description: "
|
|
579
|
+
value: "Señal de fuego PMF",
|
|
580
|
+
description: "Ceremony title for stage 3"
|
|
586
581
|
},
|
|
587
582
|
"ceremony.stage3.copy": {
|
|
588
|
-
value: "
|
|
589
|
-
description: "
|
|
583
|
+
value: "Escribe una carta a tu futuro yo de la Serie A describiendo la atracción que sientes hoy.",
|
|
584
|
+
description: "Ceremony copy for stage 3"
|
|
590
585
|
},
|
|
591
586
|
"ceremony.stage4.title": {
|
|
592
|
-
value: "
|
|
593
|
-
description: "
|
|
587
|
+
value: "Sistemas de escala",
|
|
588
|
+
description: "Ceremony title for stage 4"
|
|
594
589
|
},
|
|
595
590
|
"ceremony.stage4.copy": {
|
|
596
|
-
value: "
|
|
597
|
-
description: "
|
|
591
|
+
value: "Invita al equipo a mapear el viaje desde el primer usuario hasta la máquina repetible.",
|
|
592
|
+
description: "Ceremony copy for stage 4"
|
|
598
593
|
},
|
|
599
594
|
"ceremony.stage5.title": {
|
|
600
|
-
value: "
|
|
601
|
-
description: "
|
|
595
|
+
value: "Umbral de la plataforma",
|
|
596
|
+
description: "Ceremony title for stage 5"
|
|
602
597
|
},
|
|
603
598
|
"ceremony.stage5.copy": {
|
|
604
|
-
value: "
|
|
605
|
-
description: "
|
|
599
|
+
value: "Organiza un círculo de socios—invita a los aliados a compartir lo que necesitan de tu plataforma.",
|
|
600
|
+
description: "Ceremony copy for stage 5"
|
|
606
601
|
},
|
|
607
602
|
"ceremony.stage6.title": {
|
|
608
|
-
value: "
|
|
609
|
-
description: "
|
|
603
|
+
value: "Cumbre de renovación",
|
|
604
|
+
description: "Ceremony title for stage 6"
|
|
610
605
|
},
|
|
611
606
|
"ceremony.stage6.copy": {
|
|
612
|
-
value: "
|
|
613
|
-
description: "
|
|
607
|
+
value: "Haz una pausa para honrar lo que te trajo aquí, luego comprómetete públicamente con la próxima reinvención.",
|
|
608
|
+
description: "Ceremony copy for stage 6"
|
|
614
609
|
},
|
|
615
610
|
"library.stage0.item0": {
|
|
616
|
-
value: "
|
|
617
|
-
description: "
|
|
611
|
+
value: "Resumir entrevistas y sintetizar insights de IC.",
|
|
612
|
+
description: "Library tool description for stage 0 item 0"
|
|
618
613
|
},
|
|
619
614
|
"library.stage0.item1": {
|
|
620
|
-
value: "
|
|
621
|
-
description: "
|
|
615
|
+
value: "Crear storyboards de baja fidelidad sin código personalizado.",
|
|
616
|
+
description: "Library tool description for stage 0 item 1"
|
|
622
617
|
},
|
|
623
618
|
"library.stage1.item0": {
|
|
624
|
-
value: "
|
|
625
|
-
description: "
|
|
619
|
+
value: "Controlar funcionalidades del prototipo detrás de flags ligeros.",
|
|
620
|
+
description: "Library tool description for stage 1 item 0"
|
|
626
621
|
},
|
|
627
622
|
"library.stage1.item1": {
|
|
628
|
-
value: "
|
|
629
|
-
description: "
|
|
623
|
+
value: "Capturar señales de cuestionario para scoring temprano.",
|
|
624
|
+
description: "Library tool description for stage 1 item 1"
|
|
630
625
|
},
|
|
631
626
|
"library.stage2.item0": {
|
|
632
|
-
value: "
|
|
633
|
-
description: "
|
|
627
|
+
value: "Instrumentar rutas de activación + cohortes.",
|
|
628
|
+
description: "Library tool description for stage 2 item 0"
|
|
634
629
|
},
|
|
635
630
|
"library.stage2.item1": {
|
|
636
|
-
value: "
|
|
637
|
-
description: "
|
|
631
|
+
value: "Recopilar trazas y métricas mínimas viables.",
|
|
632
|
+
description: "Library tool description for stage 2 item 1"
|
|
638
633
|
},
|
|
639
634
|
"library.stage3.item0": {
|
|
640
|
-
value: "
|
|
641
|
-
description: "
|
|
635
|
+
value: "Detectar automáticamente brechas de contrato y mejoras de spec.",
|
|
636
|
+
description: "Library tool description for stage 3 item 0"
|
|
642
637
|
},
|
|
643
638
|
"library.stage3.item1": {
|
|
644
|
-
value: "
|
|
645
|
-
description: "
|
|
639
|
+
value: "Generar orientación enfocada en retención a escala.",
|
|
640
|
+
description: "Library tool description for stage 3 item 1"
|
|
646
641
|
},
|
|
647
642
|
"library.stage4.item0": {
|
|
648
|
-
value: "
|
|
649
|
-
description: "
|
|
643
|
+
value: "Orquestación de experimentos con barandillas.",
|
|
644
|
+
description: "Library tool description for stage 4 item 0"
|
|
650
645
|
},
|
|
651
646
|
"library.stage4.item1": {
|
|
652
|
-
value: "
|
|
653
|
-
description: "
|
|
647
|
+
value: "Estabilizar infraestructura y SLOs a medida que los equipos se dividen.",
|
|
648
|
+
description: "Library tool description for stage 4 item 1"
|
|
654
649
|
},
|
|
655
650
|
"library.stage5.item0": {
|
|
656
|
-
value: "
|
|
657
|
-
description: "
|
|
651
|
+
value: "Automatizar flujos de trabajo de socios e integraciones.",
|
|
652
|
+
description: "Library tool description for stage 5 item 0"
|
|
658
653
|
},
|
|
659
654
|
"library.stage5.item1": {
|
|
660
|
-
value: "
|
|
661
|
-
description: "
|
|
655
|
+
value: "Exponer incorporación de socios gestionada vía Studio.",
|
|
656
|
+
description: "Library tool description for stage 5 item 1"
|
|
662
657
|
},
|
|
663
658
|
"library.stage6.item0": {
|
|
664
|
-
value: "
|
|
665
|
-
description: "
|
|
659
|
+
value: "Modelar escenarios de margen y apuestas de reinversión.",
|
|
660
|
+
description: "Library tool description for stage 6 item 0"
|
|
666
661
|
},
|
|
667
662
|
"library.stage6.item1": {
|
|
668
|
-
value: "
|
|
669
|
-
description: "
|
|
663
|
+
value: "Estandarizar rituales de renovación y automatización.",
|
|
664
|
+
description: "Library tool description for stage 6 item 1"
|
|
670
665
|
},
|
|
671
666
|
"engine.fallbackAction.title": {
|
|
672
|
-
value: "
|
|
673
|
-
description: "Fallback action title
|
|
667
|
+
value: "Avanzar en {focus}",
|
|
668
|
+
description: "Fallback action title when no specific action exists",
|
|
669
|
+
placeholders: [{ name: "focus", type: "string" }]
|
|
674
670
|
},
|
|
675
671
|
"engine.fallbackAction.description": {
|
|
676
|
-
value:
|
|
677
|
-
description: "Fallback action description
|
|
672
|
+
value: 'Identificar una tarea que mejore "{focus}" esta semana.',
|
|
673
|
+
description: "Fallback action description when no specific action exists",
|
|
674
|
+
placeholders: [{ name: "focus", type: "string" }]
|
|
678
675
|
}
|
|
679
676
|
}
|
|
680
677
|
});
|
|
681
678
|
|
|
682
|
-
// src/i18n/catalogs/
|
|
679
|
+
// src/i18n/catalogs/fr.ts
|
|
683
680
|
import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
|
|
684
|
-
var
|
|
681
|
+
var frMessages = defineTranslation3({
|
|
685
682
|
meta: {
|
|
686
683
|
key: "lifecycle-advisor.messages",
|
|
687
684
|
version: "1.0.0",
|
|
688
685
|
domain: "lifecycle-advisor",
|
|
689
|
-
description: "Playbook, ceremony, library, and engine strings (
|
|
686
|
+
description: "Playbook, ceremony, library, and engine strings (French)",
|
|
690
687
|
owners: ["platform"],
|
|
691
688
|
stability: "experimental"
|
|
692
689
|
},
|
|
693
|
-
locale: "
|
|
690
|
+
locale: "fr",
|
|
694
691
|
fallback: "en",
|
|
695
692
|
messages: {
|
|
696
693
|
"playbook.stage0.focus.0": {
|
|
697
|
-
value: "
|
|
698
|
-
description: "Stage 0 focus area:
|
|
694
|
+
value: "Découverte",
|
|
695
|
+
description: "Stage 0 focus area: Discovery"
|
|
699
696
|
},
|
|
700
697
|
"playbook.stage0.focus.1": {
|
|
701
|
-
value: "
|
|
702
|
-
description: "Stage 0 focus area:
|
|
698
|
+
value: "Clarté du problème",
|
|
699
|
+
description: "Stage 0 focus area: Problem clarity"
|
|
703
700
|
},
|
|
704
701
|
"playbook.stage0.focus.2": {
|
|
705
702
|
value: "Persona",
|
|
706
|
-
description: "Stage 0 focus area:
|
|
703
|
+
description: "Stage 0 focus area: Persona"
|
|
707
704
|
},
|
|
708
705
|
"playbook.stage1.focus.0": {
|
|
709
|
-
value: "
|
|
710
|
-
description: "Stage 1 focus area:
|
|
706
|
+
value: "Prototype",
|
|
707
|
+
description: "Stage 1 focus area: Prototype"
|
|
711
708
|
},
|
|
712
709
|
"playbook.stage1.focus.1": {
|
|
713
|
-
value: "
|
|
714
|
-
description: "Stage 1 focus area:
|
|
710
|
+
value: "Retours",
|
|
711
|
+
description: "Stage 1 focus area: Feedback"
|
|
715
712
|
},
|
|
716
713
|
"playbook.stage1.focus.2": {
|
|
717
|
-
value: "
|
|
718
|
-
description: "Stage 1 focus area:
|
|
714
|
+
value: "Preuve de valeur",
|
|
715
|
+
description: "Stage 1 focus area: Value proof"
|
|
719
716
|
},
|
|
720
717
|
"playbook.stage2.focus.0": {
|
|
721
|
-
value: "
|
|
722
|
-
description: "Stage 2 focus area:
|
|
718
|
+
value: "Activation",
|
|
719
|
+
description: "Stage 2 focus area: Activation"
|
|
723
720
|
},
|
|
724
721
|
"playbook.stage2.focus.1": {
|
|
725
|
-
value: "
|
|
726
|
-
description: "Stage 2 focus area:
|
|
722
|
+
value: "Télémétrie",
|
|
723
|
+
description: "Stage 2 focus area: Telemetry"
|
|
727
724
|
},
|
|
728
725
|
"playbook.stage2.focus.2": {
|
|
729
|
-
value: "
|
|
730
|
-
description: "Stage 2 focus area:
|
|
726
|
+
value: "Retours",
|
|
727
|
+
description: "Stage 2 focus area: Feedback"
|
|
731
728
|
},
|
|
732
729
|
"playbook.stage3.focus.0": {
|
|
733
|
-
value: "
|
|
734
|
-
description: "Stage 3 focus area:
|
|
730
|
+
value: "Rétention",
|
|
731
|
+
description: "Stage 3 focus area: Retention"
|
|
735
732
|
},
|
|
736
733
|
"playbook.stage3.focus.1": {
|
|
737
|
-
value: "
|
|
738
|
-
description: "Stage 3 focus area:
|
|
734
|
+
value: "Fiabilité",
|
|
735
|
+
description: "Stage 3 focus area: Reliability"
|
|
739
736
|
},
|
|
740
737
|
"playbook.stage3.focus.2": {
|
|
741
|
-
value: "
|
|
742
|
-
description: "Stage 3 focus area:
|
|
738
|
+
value: "Récit",
|
|
739
|
+
description: "Stage 3 focus area: Story"
|
|
743
740
|
},
|
|
744
741
|
"playbook.stage4.focus.0": {
|
|
745
|
-
value: "
|
|
746
|
-
description: "Stage 4 focus area:
|
|
742
|
+
value: "Systèmes",
|
|
743
|
+
description: "Stage 4 focus area: Systems"
|
|
747
744
|
},
|
|
748
745
|
"playbook.stage4.focus.1": {
|
|
749
|
-
value: "
|
|
750
|
-
description: "Stage 4 focus area:
|
|
746
|
+
value: "Boucles de croissance",
|
|
747
|
+
description: "Stage 4 focus area: Growth loops"
|
|
751
748
|
},
|
|
752
749
|
"playbook.stage4.focus.2": {
|
|
753
|
-
value: "
|
|
754
|
-
description: "Stage 4 focus area:
|
|
750
|
+
value: "Spécialisation",
|
|
751
|
+
description: "Stage 4 focus area: Specialization"
|
|
755
752
|
},
|
|
756
753
|
"playbook.stage5.focus.0": {
|
|
757
|
-
value: "
|
|
758
|
-
description: "Stage 5 focus area:
|
|
754
|
+
value: "Partenaires",
|
|
755
|
+
description: "Stage 5 focus area: Partners"
|
|
759
756
|
},
|
|
760
757
|
"playbook.stage5.focus.1": {
|
|
761
758
|
value: "APIs",
|
|
762
|
-
description: "Stage 5 focus area:
|
|
759
|
+
description: "Stage 5 focus area: APIs"
|
|
763
760
|
},
|
|
764
761
|
"playbook.stage5.focus.2": {
|
|
765
|
-
value: "
|
|
766
|
-
description: "Stage 5 focus area:
|
|
762
|
+
value: "Paris d'expansion",
|
|
763
|
+
description: "Stage 5 focus area: Expansion bets"
|
|
767
764
|
},
|
|
768
765
|
"playbook.stage6.focus.0": {
|
|
769
|
-
value: "
|
|
770
|
-
description: "Stage 6 focus area:
|
|
766
|
+
value: "Optimisation",
|
|
767
|
+
description: "Stage 6 focus area: Optimization"
|
|
771
768
|
},
|
|
772
769
|
"playbook.stage6.focus.1": {
|
|
773
|
-
value: "
|
|
774
|
-
description: "Stage 6 focus area:
|
|
770
|
+
value: "Renouvellement",
|
|
771
|
+
description: "Stage 6 focus area: Renewal"
|
|
775
772
|
},
|
|
776
773
|
"playbook.stage6.focus.2": {
|
|
777
|
-
value: "
|
|
778
|
-
description: "Stage 6 focus area:
|
|
774
|
+
value: "Portefeuille",
|
|
775
|
+
description: "Stage 6 focus area: Portfolio"
|
|
779
776
|
},
|
|
780
777
|
"playbook.stage0.action0.title": {
|
|
781
|
-
value: "
|
|
782
|
-
description: "
|
|
778
|
+
value: "Mener un sprint d'entretiens de 5 jours",
|
|
779
|
+
description: "Stage 0 action 0 title"
|
|
783
780
|
},
|
|
784
781
|
"playbook.stage0.action0.description": {
|
|
785
|
-
value: "
|
|
786
|
-
description: "
|
|
782
|
+
value: "Planifier au moins 5 entretiens consécutifs et capturer les citations brutes.",
|
|
783
|
+
description: "Stage 0 action 0 description"
|
|
787
784
|
},
|
|
788
785
|
"playbook.stage0.action1.title": {
|
|
789
|
-
value: "
|
|
790
|
-
description: "
|
|
786
|
+
value: "Rédiger l'histoire du problème",
|
|
787
|
+
description: "Stage 0 action 1 title"
|
|
791
788
|
},
|
|
792
789
|
"playbook.stage0.action1.description": {
|
|
793
|
-
value: "
|
|
794
|
-
description: "
|
|
790
|
+
value: "Résumer la douleur en un paragraphe que vous pouvez répéter aux partenaires.",
|
|
791
|
+
description: "Stage 0 action 1 description"
|
|
795
792
|
},
|
|
796
793
|
"playbook.stage1.action0.title": {
|
|
797
|
-
value: "
|
|
798
|
-
description: "
|
|
794
|
+
value: "Boucle de retours sur le prototype",
|
|
795
|
+
description: "Stage 1 action 0 title"
|
|
799
796
|
},
|
|
800
797
|
"playbook.stage1.action0.description": {
|
|
801
|
-
value: "
|
|
802
|
-
description: "
|
|
798
|
+
value: "Livrer un prototype basse fidélité et recueillir 3 tours de réactions.",
|
|
799
|
+
description: "Stage 1 action 0 description"
|
|
803
800
|
},
|
|
804
801
|
"playbook.stage1.action1.title": {
|
|
805
|
-
value: "
|
|
806
|
-
description: "
|
|
802
|
+
value: "Capturer les signaux de recommandation",
|
|
803
|
+
description: "Stage 1 action 1 title"
|
|
807
804
|
},
|
|
808
805
|
"playbook.stage1.action1.description": {
|
|
809
|
-
value: "
|
|
810
|
-
description: "
|
|
806
|
+
value: "Demander à chaque testeur qui d'autre devrait voir la démo.",
|
|
807
|
+
description: "Stage 1 action 1 description"
|
|
811
808
|
},
|
|
812
809
|
"playbook.stage2.action0.title": {
|
|
813
|
-
value: "
|
|
814
|
-
description: "
|
|
810
|
+
value: "Définir la checklist d'activation",
|
|
811
|
+
description: "Stage 2 action 0 title"
|
|
815
812
|
},
|
|
816
813
|
"playbook.stage2.action0.description": {
|
|
817
|
-
value: "
|
|
818
|
-
description: "
|
|
814
|
+
value: "Documenter les 3 étapes que les utilisateurs doivent terminer pour obtenir de la valeur.",
|
|
815
|
+
description: "Stage 2 action 0 description"
|
|
819
816
|
},
|
|
820
817
|
"playbook.stage2.action1.title": {
|
|
821
|
-
value: "
|
|
822
|
-
description: "
|
|
818
|
+
value: "Synchronisation hebdomadaire avec les utilisateurs",
|
|
819
|
+
description: "Stage 2 action 1 title"
|
|
823
820
|
},
|
|
824
821
|
"playbook.stage2.action1.description": {
|
|
825
|
-
value: "
|
|
826
|
-
description: "
|
|
822
|
+
value: "Organiser un appel récurrent avec vos 5 testeurs les plus actifs.",
|
|
823
|
+
description: "Stage 2 action 1 description"
|
|
827
824
|
},
|
|
828
825
|
"playbook.stage3.action0.title": {
|
|
829
|
-
value: "
|
|
830
|
-
description: "
|
|
826
|
+
value: "Mener une étude de rétention",
|
|
827
|
+
description: "Stage 3 action 0 title"
|
|
831
828
|
},
|
|
832
829
|
"playbook.stage3.action0.description": {
|
|
833
|
-
value: "
|
|
834
|
-
description: "
|
|
830
|
+
value: "Interviewer 3 utilisateurs retenus et publier leurs métriques avant/après.",
|
|
831
|
+
description: "Stage 3 action 0 description"
|
|
835
832
|
},
|
|
836
833
|
"playbook.stage3.action1.title": {
|
|
837
|
-
value: "
|
|
838
|
-
description: "
|
|
834
|
+
value: "Revue légère d'incidents",
|
|
835
|
+
description: "Stage 3 action 1 title"
|
|
839
836
|
},
|
|
840
837
|
"playbook.stage3.action1.description": {
|
|
841
|
-
value: "
|
|
842
|
-
description: "
|
|
838
|
+
value: "Examiner les 2 derniers incidents de fiabilité et capturer les correctifs.",
|
|
839
|
+
description: "Stage 3 action 1 description"
|
|
843
840
|
},
|
|
844
841
|
"playbook.stage4.action0.title": {
|
|
845
|
-
value: "
|
|
846
|
-
description: "
|
|
842
|
+
value: "Codifier une boucle de croissance",
|
|
843
|
+
description: "Stage 4 action 0 title"
|
|
847
844
|
},
|
|
848
845
|
"playbook.stage4.action0.description": {
|
|
849
|
-
value: "
|
|
850
|
-
description: "
|
|
846
|
+
value: "Choisir une boucle (SEO, recommandations, outbound) et documenter les responsables + entrées.",
|
|
847
|
+
description: "Stage 4 action 0 description"
|
|
851
848
|
},
|
|
852
849
|
"playbook.stage4.action1.title": {
|
|
853
|
-
value: "
|
|
854
|
-
description: "
|
|
850
|
+
value: "Créer la carte de recrutement",
|
|
851
|
+
description: "Stage 4 action 1 title"
|
|
855
852
|
},
|
|
856
853
|
"playbook.stage4.action1.description": {
|
|
857
|
-
value: "
|
|
858
|
-
description: "
|
|
854
|
+
value: "Lister les rôles spécialisés nécessaires pour les 2 prochains trimestres.",
|
|
855
|
+
description: "Stage 4 action 1 description"
|
|
859
856
|
},
|
|
860
857
|
"playbook.stage5.action0.title": {
|
|
861
|
-
value: "Brief de
|
|
862
|
-
description: "
|
|
858
|
+
value: "Brief de préparation partenaire",
|
|
859
|
+
description: "Stage 5 action 0 title"
|
|
863
860
|
},
|
|
864
861
|
"playbook.stage5.action0.description": {
|
|
865
|
-
value: "
|
|
866
|
-
description: "
|
|
862
|
+
value: "Documenter les types de partenaires, propositions de valeur et étapes d'intégration.",
|
|
863
|
+
description: "Stage 5 action 0 description"
|
|
867
864
|
},
|
|
868
865
|
"playbook.stage5.action1.title": {
|
|
869
|
-
value: "
|
|
870
|
-
description: "
|
|
866
|
+
value: "Portefeuille d'expériences d'expansion",
|
|
867
|
+
description: "Stage 5 action 1 title"
|
|
871
868
|
},
|
|
872
869
|
"playbook.stage5.action1.description": {
|
|
873
|
-
value: "
|
|
874
|
-
description: "
|
|
870
|
+
value: "Lister les 3 principaux marchés ou lignes de produits avec les responsables.",
|
|
871
|
+
description: "Stage 5 action 1 description"
|
|
875
872
|
},
|
|
876
873
|
"playbook.stage6.action0.title": {
|
|
877
|
-
value: "
|
|
878
|
-
description: "
|
|
874
|
+
value: "Mener une revue coût-valeur",
|
|
875
|
+
description: "Stage 6 action 0 title"
|
|
879
876
|
},
|
|
880
877
|
"playbook.stage6.action0.description": {
|
|
881
|
-
value: "
|
|
882
|
-
description: "
|
|
878
|
+
value: "Auditer chaque surface majeure pour l’impact sur les marges.",
|
|
879
|
+
description: "Stage 6 action 0 description"
|
|
883
880
|
},
|
|
884
881
|
"playbook.stage6.action1.title": {
|
|
885
|
-
value: "
|
|
886
|
-
description: "
|
|
882
|
+
value: "Définir le pari de renouvellement",
|
|
883
|
+
description: "Stage 6 action 1 title"
|
|
887
884
|
},
|
|
888
885
|
"playbook.stage6.action1.description": {
|
|
889
|
-
value: "
|
|
890
|
-
description: "
|
|
886
|
+
value: "Choisir une piste de réinvention ou d'arrêt et définir des points de contrôle.",
|
|
887
|
+
description: "Stage 6 action 1 description"
|
|
891
888
|
},
|
|
892
889
|
"ceremony.stage0.title": {
|
|
893
|
-
value: "
|
|
894
|
-
description: "
|
|
890
|
+
value: "Étincelle de découverte",
|
|
891
|
+
description: "Stage 0 ceremony title"
|
|
895
892
|
},
|
|
896
893
|
"ceremony.stage0.copy": {
|
|
897
|
-
value: "
|
|
898
|
-
description: "
|
|
894
|
+
value: "Partagez la citation la plus percutante avec votre équipe. Encadrez-la, célébrez le focus.",
|
|
895
|
+
description: "Stage 0 ceremony copy"
|
|
899
896
|
},
|
|
900
897
|
"ceremony.stage1.title": {
|
|
901
|
-
value: "
|
|
902
|
-
description: "
|
|
898
|
+
value: "Résonance de la solution",
|
|
899
|
+
description: "Stage 1 ceremony title"
|
|
903
900
|
},
|
|
904
901
|
"ceremony.stage1.copy": {
|
|
905
|
-
value: "
|
|
906
|
-
description: "
|
|
902
|
+
value: "Enregistrez un court partage d'écran racontant l'histoire avant/après à votre futur vous.",
|
|
903
|
+
description: "Stage 1 ceremony copy"
|
|
907
904
|
},
|
|
908
905
|
"ceremony.stage2.title": {
|
|
909
|
-
value: "
|
|
910
|
-
description: "
|
|
906
|
+
value: "Toast à la traction",
|
|
907
|
+
description: "Stage 2 ceremony title"
|
|
911
908
|
},
|
|
912
909
|
"ceremony.stage2.copy": {
|
|
913
|
-
value: "
|
|
914
|
-
description: "
|
|
910
|
+
value: "Portez un toast à vos 20 premiers vrais utilisateurs — dites leurs noms, dites-leur pourquoi ils comptent.",
|
|
911
|
+
description: "Stage 2 ceremony copy"
|
|
915
912
|
},
|
|
916
913
|
"ceremony.stage3.title": {
|
|
917
|
-
value: "
|
|
918
|
-
description: "
|
|
914
|
+
value: "Signal PMF",
|
|
915
|
+
description: "Stage 3 ceremony title"
|
|
919
916
|
},
|
|
920
917
|
"ceremony.stage3.copy": {
|
|
921
|
-
value: "
|
|
922
|
-
description: "
|
|
918
|
+
value: "Écrivez une lettre à votre futur vous de la Série A décrivant l'attraction que vous ressentez aujourd'hui.",
|
|
919
|
+
description: "Stage 3 ceremony copy"
|
|
923
920
|
},
|
|
924
921
|
"ceremony.stage4.title": {
|
|
925
|
-
value: "
|
|
926
|
-
description: "
|
|
922
|
+
value: "Systèmes d'échelle",
|
|
923
|
+
description: "Stage 4 ceremony title"
|
|
927
924
|
},
|
|
928
925
|
"ceremony.stage4.copy": {
|
|
929
|
-
value: "
|
|
930
|
-
description: "
|
|
926
|
+
value: "Invitez l'équipe à cartographier le parcours du premier utilisateur à la machine répétable.",
|
|
927
|
+
description: "Stage 4 ceremony copy"
|
|
931
928
|
},
|
|
932
929
|
"ceremony.stage5.title": {
|
|
933
|
-
value: "
|
|
934
|
-
description: "
|
|
930
|
+
value: "Seuil de la plateforme",
|
|
931
|
+
description: "Stage 5 ceremony title"
|
|
935
932
|
},
|
|
936
933
|
"ceremony.stage5.copy": {
|
|
937
|
-
value: "
|
|
938
|
-
description: "
|
|
934
|
+
value: "Organisez un cercle de partenaires — invitez les alliés à partager ce dont ils ont besoin de votre plateforme.",
|
|
935
|
+
description: "Stage 5 ceremony copy"
|
|
939
936
|
},
|
|
940
937
|
"ceremony.stage6.title": {
|
|
941
|
-
value: "
|
|
942
|
-
description: "
|
|
938
|
+
value: "Sommet du renouvellement",
|
|
939
|
+
description: "Stage 6 ceremony title"
|
|
943
940
|
},
|
|
944
941
|
"ceremony.stage6.copy": {
|
|
945
|
-
value: "
|
|
946
|
-
description: "
|
|
942
|
+
value: "Faites une pause pour honorer ce qui vous a amené ici, puis engagez-vous publiquement pour la prochaine réinvention.",
|
|
943
|
+
description: "Stage 6 ceremony copy"
|
|
947
944
|
},
|
|
948
945
|
"library.stage0.item0": {
|
|
949
|
-
value: "
|
|
950
|
-
description: "
|
|
946
|
+
value: "Résumer les entretiens et synthétiser les insights IC.",
|
|
947
|
+
description: "Stage 0 library item 0"
|
|
951
948
|
},
|
|
952
949
|
"library.stage0.item1": {
|
|
953
|
-
value: "
|
|
954
|
-
description: "
|
|
950
|
+
value: "Créer des storyboards basse fidélité sans code personnalisé.",
|
|
951
|
+
description: "Stage 0 library item 1"
|
|
955
952
|
},
|
|
956
953
|
"library.stage1.item0": {
|
|
957
|
-
value: "
|
|
958
|
-
description: "
|
|
954
|
+
value: "Contrôler les fonctionnalités prototype derrière des flags légers.",
|
|
955
|
+
description: "Stage 1 library item 0"
|
|
959
956
|
},
|
|
960
957
|
"library.stage1.item1": {
|
|
961
|
-
value: "
|
|
962
|
-
description: "
|
|
958
|
+
value: "Capturer les signaux de questionnaire pour un scoring précoce.",
|
|
959
|
+
description: "Stage 1 library item 1"
|
|
963
960
|
},
|
|
964
961
|
"library.stage2.item0": {
|
|
965
|
-
value: "
|
|
966
|
-
description: "
|
|
962
|
+
value: "Instrumenter les parcours d'activation + cohortes.",
|
|
963
|
+
description: "Stage 2 library item 0"
|
|
967
964
|
},
|
|
968
965
|
"library.stage2.item1": {
|
|
969
|
-
value: "
|
|
970
|
-
description: "
|
|
966
|
+
value: "Collecter les traces et métriques minimales viables.",
|
|
967
|
+
description: "Stage 2 library item 1"
|
|
971
968
|
},
|
|
972
969
|
"library.stage3.item0": {
|
|
973
|
-
value: "
|
|
974
|
-
description: "
|
|
970
|
+
value: "Détecter automatiquement les lacunes de contrat et améliorations de spec.",
|
|
971
|
+
description: "Stage 3 library item 0"
|
|
975
972
|
},
|
|
976
973
|
"library.stage3.item1": {
|
|
977
|
-
value: "
|
|
978
|
-
description: "
|
|
974
|
+
value: "Générer des conseils axés sur la rétention à grande échelle.",
|
|
975
|
+
description: "Stage 3 library item 1"
|
|
979
976
|
},
|
|
980
977
|
"library.stage4.item0": {
|
|
981
|
-
value: "
|
|
982
|
-
description: "
|
|
978
|
+
value: "Orchestration d'expériences avec garde-fous.",
|
|
979
|
+
description: "Stage 4 library item 0"
|
|
983
980
|
},
|
|
984
981
|
"library.stage4.item1": {
|
|
985
|
-
value: "
|
|
986
|
-
description: "
|
|
982
|
+
value: "Stabiliser l’infra et les SLOs au fur et à mesure que les équipes se divisent.",
|
|
983
|
+
description: "Stage 4 library item 1"
|
|
987
984
|
},
|
|
988
985
|
"library.stage5.item0": {
|
|
989
|
-
value: "
|
|
990
|
-
description: "
|
|
986
|
+
value: "Automatiser les workflows partenaires et intégrations.",
|
|
987
|
+
description: "Stage 5 library item 0"
|
|
991
988
|
},
|
|
992
989
|
"library.stage5.item1": {
|
|
993
|
-
value: "
|
|
994
|
-
description: "
|
|
990
|
+
value: "Exposer l'intégration partenaire gérée via Studio.",
|
|
991
|
+
description: "Stage 5 library item 1"
|
|
995
992
|
},
|
|
996
993
|
"library.stage6.item0": {
|
|
997
|
-
value: "
|
|
998
|
-
description: "
|
|
994
|
+
value: "Modéliser les scénarios de marge et paris de réinvestissement.",
|
|
995
|
+
description: "Stage 6 library item 0"
|
|
999
996
|
},
|
|
1000
997
|
"library.stage6.item1": {
|
|
1001
|
-
value: "
|
|
1002
|
-
description: "
|
|
998
|
+
value: "Standardiser les rituels de renouvellement et l'automatisation.",
|
|
999
|
+
description: "Stage 6 library item 1"
|
|
1003
1000
|
},
|
|
1004
1001
|
"engine.fallbackAction.title": {
|
|
1005
|
-
value: "
|
|
1006
|
-
description: "Fallback action title
|
|
1007
|
-
placeholders: [{ name: "focus", type: "string" }]
|
|
1002
|
+
value: "Avancer sur {focus}",
|
|
1003
|
+
description: "Fallback action title with focus placeholder"
|
|
1008
1004
|
},
|
|
1009
1005
|
"engine.fallbackAction.description": {
|
|
1010
|
-
value:
|
|
1011
|
-
description: "Fallback action description
|
|
1012
|
-
placeholders: [{ name: "focus", type: "string" }]
|
|
1006
|
+
value: "Identifier une tâche qui améliorera « {focus} » cette semaine.",
|
|
1007
|
+
description: "Fallback action description with focus placeholder"
|
|
1013
1008
|
}
|
|
1014
1009
|
}
|
|
1015
1010
|
});
|
|
@@ -1276,57 +1271,26 @@ var staticPlaybooks = [
|
|
|
1276
1271
|
var stagePlaybooks = staticPlaybooks;
|
|
1277
1272
|
var stage_playbooks_default = stagePlaybooks;
|
|
1278
1273
|
|
|
1279
|
-
// src/
|
|
1280
|
-
var
|
|
1274
|
+
// src/ceremony/ceremony-designer.ts
|
|
1275
|
+
var CEREMONY_MAP = new Map(stage_playbooks_default.map((entry) => [
|
|
1281
1276
|
entry.stage,
|
|
1282
|
-
|
|
1283
|
-
...entry,
|
|
1284
|
-
stage: entry.stage
|
|
1285
|
-
}
|
|
1277
|
+
entry.ceremony
|
|
1286
1278
|
]));
|
|
1287
1279
|
|
|
1288
|
-
class
|
|
1289
|
-
|
|
1280
|
+
class LifecycleCeremonyDesigner {
|
|
1281
|
+
ceremonies;
|
|
1290
1282
|
constructor(overrides) {
|
|
1291
|
-
this.
|
|
1283
|
+
this.ceremonies = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry.ceremony])) : CEREMONY_MAP;
|
|
1292
1284
|
}
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
return
|
|
1300
|
-
assessmentId: assessment.generatedAt,
|
|
1301
|
-
stage: assessment.stage,
|
|
1302
|
-
actions: finalActions,
|
|
1303
|
-
upcomingMilestones: upcomingMilestones ?? [],
|
|
1304
|
-
ceremony: entry.ceremony
|
|
1305
|
-
};
|
|
1285
|
+
design(stage, locale) {
|
|
1286
|
+
if (locale) {
|
|
1287
|
+
const localized = getLocalizedStagePlaybooks(locale);
|
|
1288
|
+
const entry = localized.find((p) => p.stage === stage);
|
|
1289
|
+
return entry?.ceremony;
|
|
1290
|
+
}
|
|
1291
|
+
return this.ceremonies.get(stage);
|
|
1306
1292
|
}
|
|
1307
1293
|
}
|
|
1308
|
-
function resolveLocalizedPlaybook(stage, locale) {
|
|
1309
|
-
const localized = getLocalizedStagePlaybooks(locale);
|
|
1310
|
-
return localized.find((p) => p.stage === stage) ?? createFallbackPlaybook(stage, locale);
|
|
1311
|
-
}
|
|
1312
|
-
var createFallbackPlaybook = (stage, locale) => ({
|
|
1313
|
-
stage,
|
|
1314
|
-
actions: [],
|
|
1315
|
-
focusAreas: locale ? getLocalizedStagePlaybooks(locale).find((p) => p.stage === stage)?.focusAreas ?? LIFECYCLE_STAGE_META[stage].focusAreas : LIFECYCLE_STAGE_META[stage].focusAreas
|
|
1316
|
-
});
|
|
1317
|
-
var fallbackActions = (assessment, limit, locale) => {
|
|
1318
|
-
const i18n = locale ? createLifecycleAdvisorI18n(locale) : undefined;
|
|
1319
|
-
return (assessment.focusAreas ?? LIFECYCLE_STAGE_META[assessment.stage].focusAreas).slice(0, limit).map((focus, index) => ({
|
|
1320
|
-
id: `fallback-${assessment.stage}-${index}`,
|
|
1321
|
-
stage: assessment.stage,
|
|
1322
|
-
title: i18n ? i18n.t("engine.fallbackAction.title", { focus }) : `Advance ${focus}`,
|
|
1323
|
-
description: i18n ? i18n.t("engine.fallbackAction.description", { focus }) : `Identify one task that will improve "${focus}" this week.`,
|
|
1324
|
-
priority: index + 1,
|
|
1325
|
-
estimatedImpact: "low",
|
|
1326
|
-
effortLevel: "s",
|
|
1327
|
-
category: "product"
|
|
1328
|
-
}));
|
|
1329
|
-
};
|
|
1330
1294
|
// src/data/library-stage-map.ts
|
|
1331
1295
|
function getLocalizedLibraryStageMap(locale) {
|
|
1332
1296
|
const i18n = createLifecycleAdvisorI18n(locale);
|
|
@@ -1447,7 +1411,6 @@ var staticLibraryStageMap = [
|
|
|
1447
1411
|
];
|
|
1448
1412
|
var libraryStageMap = staticLibraryStageMap;
|
|
1449
1413
|
var library_stage_map_default = libraryStageMap;
|
|
1450
|
-
|
|
1451
1414
|
// src/recommendations/library-recommender.ts
|
|
1452
1415
|
var LIBRARY_MAP = new Map(library_stage_map_default.map((entry) => [entry.stage, entry.items]));
|
|
1453
1416
|
|
|
@@ -1468,26 +1431,60 @@ class ContractSpecLibraryRecommender {
|
|
|
1468
1431
|
return items.slice(0, limit);
|
|
1469
1432
|
}
|
|
1470
1433
|
}
|
|
1471
|
-
// src/
|
|
1472
|
-
|
|
1434
|
+
// src/recommendations/recommendation-engine.ts
|
|
1435
|
+
import {
|
|
1436
|
+
LIFECYCLE_STAGE_META
|
|
1437
|
+
} from "@contractspec/lib.lifecycle";
|
|
1438
|
+
var PLAYBOOK_MAP = new Map(stage_playbooks_default.map((entry) => [
|
|
1473
1439
|
entry.stage,
|
|
1474
|
-
|
|
1440
|
+
{
|
|
1441
|
+
...entry,
|
|
1442
|
+
stage: entry.stage
|
|
1443
|
+
}
|
|
1475
1444
|
]));
|
|
1476
1445
|
|
|
1477
|
-
class
|
|
1478
|
-
|
|
1446
|
+
class LifecycleRecommendationEngine {
|
|
1447
|
+
playbooks;
|
|
1479
1448
|
constructor(overrides) {
|
|
1480
|
-
this.
|
|
1449
|
+
this.playbooks = overrides?.length ? new Map(overrides.map((entry) => [entry.stage, entry])) : PLAYBOOK_MAP;
|
|
1481
1450
|
}
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
return
|
|
1451
|
+
generate(assessment, options = {}) {
|
|
1452
|
+
const { locale, limit: rawLimit, upcomingMilestones } = options;
|
|
1453
|
+
const limit = rawLimit ?? 3;
|
|
1454
|
+
const entry = locale ? resolveLocalizedPlaybook(assessment.stage, locale) : this.playbooks.get(assessment.stage) ?? createFallbackPlaybook(assessment.stage);
|
|
1455
|
+
const actions = (entry.actions ?? []).slice(0, limit);
|
|
1456
|
+
const finalActions = actions.length > 0 ? actions : fallbackActions(assessment, limit, locale);
|
|
1457
|
+
return {
|
|
1458
|
+
assessmentId: assessment.generatedAt,
|
|
1459
|
+
stage: assessment.stage,
|
|
1460
|
+
actions: finalActions,
|
|
1461
|
+
upcomingMilestones: upcomingMilestones ?? [],
|
|
1462
|
+
ceremony: entry.ceremony
|
|
1463
|
+
};
|
|
1489
1464
|
}
|
|
1490
1465
|
}
|
|
1466
|
+
function resolveLocalizedPlaybook(stage, locale) {
|
|
1467
|
+
const localized = getLocalizedStagePlaybooks(locale);
|
|
1468
|
+
return localized.find((p) => p.stage === stage) ?? createFallbackPlaybook(stage, locale);
|
|
1469
|
+
}
|
|
1470
|
+
var createFallbackPlaybook = (stage, locale) => ({
|
|
1471
|
+
stage,
|
|
1472
|
+
actions: [],
|
|
1473
|
+
focusAreas: locale ? getLocalizedStagePlaybooks(locale).find((p) => p.stage === stage)?.focusAreas ?? LIFECYCLE_STAGE_META[stage].focusAreas : LIFECYCLE_STAGE_META[stage].focusAreas
|
|
1474
|
+
});
|
|
1475
|
+
var fallbackActions = (assessment, limit, locale) => {
|
|
1476
|
+
const i18n = locale ? createLifecycleAdvisorI18n(locale) : undefined;
|
|
1477
|
+
return (assessment.focusAreas ?? LIFECYCLE_STAGE_META[assessment.stage].focusAreas).slice(0, limit).map((focus, index) => ({
|
|
1478
|
+
id: `fallback-${assessment.stage}-${index}`,
|
|
1479
|
+
stage: assessment.stage,
|
|
1480
|
+
title: i18n ? i18n.t("engine.fallbackAction.title", { focus }) : `Advance ${focus}`,
|
|
1481
|
+
description: i18n ? i18n.t("engine.fallbackAction.description", { focus }) : `Identify one task that will improve "${focus}" this week.`,
|
|
1482
|
+
priority: index + 1,
|
|
1483
|
+
estimatedImpact: "low",
|
|
1484
|
+
effortLevel: "s",
|
|
1485
|
+
category: "product"
|
|
1486
|
+
}));
|
|
1487
|
+
};
|
|
1491
1488
|
export {
|
|
1492
1489
|
getLocalizedStagePlaybooks,
|
|
1493
1490
|
getLocalizedLibraryStageMap,
|