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