@taskless-app/shared 0.1.17 → 0.1.19
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/dist/repoProfile.d.ts +287 -0
- package/dist/repoProfile.js +114 -0
- package/dist/repoProfile.js.map +1 -1
- package/dist/transcriptCoverage.d.ts +57 -1
- package/dist/transcriptCoverage.js +25 -1
- package/dist/transcriptCoverage.js.map +1 -1
- package/package.json +1 -1
package/dist/repoProfile.d.ts
CHANGED
|
@@ -431,6 +431,293 @@ export declare const RepoProfilePatch: z.ZodObject<{
|
|
|
431
431
|
spine?: string[] | null | undefined;
|
|
432
432
|
}>;
|
|
433
433
|
export type RepoProfilePatch = z.infer<typeof RepoProfilePatch>;
|
|
434
|
+
/** Кто и когда предложил. `by` — имя дрона-разведчика, для строки «предложил NN». */
|
|
435
|
+
export declare const RepoProfileProposal: z.ZodObject<{
|
|
436
|
+
brief: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
437
|
+
zones: z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
438
|
+
/** Лейбл задачи, например `area:swarm-model`. */
|
|
439
|
+
label: z.ZodString;
|
|
440
|
+
/** Что это за зона словами — одной строкой, для дрона и для человека. */
|
|
441
|
+
about: z.ZodOptional<z.ZodString>;
|
|
442
|
+
/** Пути (glob или префикс), которые к зоне относятся. */
|
|
443
|
+
paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
444
|
+
}, "strip", z.ZodTypeAny, {
|
|
445
|
+
label: string;
|
|
446
|
+
about?: string | undefined;
|
|
447
|
+
paths: string[];
|
|
448
|
+
}, {
|
|
449
|
+
label: string;
|
|
450
|
+
about?: string | undefined;
|
|
451
|
+
paths?: string[] | undefined;
|
|
452
|
+
}>, "many">>>;
|
|
453
|
+
env: z.ZodCatch<z.ZodOptional<z.ZodObject<{
|
|
454
|
+
/** Чем поднять базу данных (`docker compose up -d db`). */
|
|
455
|
+
database: z.ZodOptional<z.ZodString>;
|
|
456
|
+
/** Чем накатить миграции (`pnpm --filter api prisma migrate dev`). */
|
|
457
|
+
migrations: z.ZodOptional<z.ZodString>;
|
|
458
|
+
/**
|
|
459
|
+
* ИМЕНА переменных окружения, без которых репозиторий не заводится. Только
|
|
460
|
+
* имена: значения — секреты, и здесь их быть не должно (разметка едет в
|
|
461
|
+
* промпт дрона и в UI как обычный текст).
|
|
462
|
+
*/
|
|
463
|
+
vars: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
464
|
+
}, "strip", z.ZodTypeAny, {
|
|
465
|
+
database?: string | undefined;
|
|
466
|
+
migrations?: string | undefined;
|
|
467
|
+
vars: string[];
|
|
468
|
+
}, {
|
|
469
|
+
database?: string | undefined;
|
|
470
|
+
migrations?: string | undefined;
|
|
471
|
+
vars?: string[] | undefined;
|
|
472
|
+
}>>>;
|
|
473
|
+
verify: z.ZodCatch<z.ZodOptional<z.ZodObject<{
|
|
474
|
+
/** Команды проверки: typecheck, тесты, линт. */
|
|
475
|
+
commands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
476
|
+
/**
|
|
477
|
+
* Что здесь считается зелёным — словами. Отдельно от команд сознательно:
|
|
478
|
+
* «зелёное» редко равно «команда вернула 0» (кешированный прогон, известные
|
|
479
|
+
* падающие тесты, гейт в CI, а не локально).
|
|
480
|
+
*/
|
|
481
|
+
green: z.ZodOptional<z.ZodString>;
|
|
482
|
+
}, "strip", z.ZodTypeAny, {
|
|
483
|
+
commands: string[];
|
|
484
|
+
green?: string | undefined;
|
|
485
|
+
}, {
|
|
486
|
+
commands?: string[] | undefined;
|
|
487
|
+
green?: string | undefined;
|
|
488
|
+
}>>>;
|
|
489
|
+
conventions: z.ZodCatch<z.ZodOptional<z.ZodObject<{
|
|
490
|
+
/** Язык сообщений коммитов — `ru`, `en` или как принято писать в проекте. */
|
|
491
|
+
commitLanguage: z.ZodOptional<z.ZodString>;
|
|
492
|
+
/** Слаг задачи обязателен в сообщении коммита. */
|
|
493
|
+
slugInCommit: z.ZodOptional<z.ZodBoolean>;
|
|
494
|
+
/**
|
|
495
|
+
* Базовая ветка репозитория — та, от которой ветвятся и в которую идут PR.
|
|
496
|
+
* НАБЛЮДЕНИЕ о репозитории, а не ручка роя: если у проекта задан
|
|
497
|
+
* `swarmConfig.baseBranch` (TASWM-285, интеграционная ветка под пачку задач),
|
|
498
|
+
* побеждает он — это решение человека, а здесь то, что увидела разведка.
|
|
499
|
+
*/
|
|
500
|
+
baseBranch: z.ZodOptional<z.ZodString>;
|
|
501
|
+
}, "strip", z.ZodTypeAny, {
|
|
502
|
+
commitLanguage?: string | undefined;
|
|
503
|
+
slugInCommit?: boolean | undefined;
|
|
504
|
+
baseBranch?: string | undefined;
|
|
505
|
+
}, {
|
|
506
|
+
commitLanguage?: string | undefined;
|
|
507
|
+
slugInCommit?: boolean | undefined;
|
|
508
|
+
baseBranch?: string | undefined;
|
|
509
|
+
}>>>;
|
|
510
|
+
spine: z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
511
|
+
/** ISO-время разведки — по нему видно, что предложение старше нынешнего репозитория. */
|
|
512
|
+
at: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
513
|
+
/** Имя дрона-разведчика. */
|
|
514
|
+
by: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
515
|
+
}, "strip", z.ZodTypeAny, {
|
|
516
|
+
brief?: string | undefined;
|
|
517
|
+
zones?: {
|
|
518
|
+
label: string;
|
|
519
|
+
about?: string | undefined;
|
|
520
|
+
paths: string[];
|
|
521
|
+
}[] | undefined;
|
|
522
|
+
env?: {
|
|
523
|
+
database?: string | undefined;
|
|
524
|
+
migrations?: string | undefined;
|
|
525
|
+
vars: string[];
|
|
526
|
+
} | undefined;
|
|
527
|
+
verify?: {
|
|
528
|
+
commands: string[];
|
|
529
|
+
green?: string | undefined;
|
|
530
|
+
} | undefined;
|
|
531
|
+
conventions?: {
|
|
532
|
+
commitLanguage?: string | undefined;
|
|
533
|
+
slugInCommit?: boolean | undefined;
|
|
534
|
+
baseBranch?: string | undefined;
|
|
535
|
+
} | undefined;
|
|
536
|
+
spine?: string[] | undefined;
|
|
537
|
+
at?: string | undefined;
|
|
538
|
+
by?: string | undefined;
|
|
539
|
+
}, {
|
|
540
|
+
brief?: unknown;
|
|
541
|
+
zones?: unknown;
|
|
542
|
+
env?: unknown;
|
|
543
|
+
verify?: unknown;
|
|
544
|
+
conventions?: unknown;
|
|
545
|
+
spine?: unknown;
|
|
546
|
+
at?: unknown;
|
|
547
|
+
by?: unknown;
|
|
548
|
+
}>;
|
|
549
|
+
export type RepoProfileProposal = z.infer<typeof RepoProfileProposal>;
|
|
550
|
+
/**
|
|
551
|
+
* ЧТО предлагает разведчик — строгая схема ЗАПИСИ (как `RepoProfilePatch`, но без
|
|
552
|
+
* `null`: «очистить поле» разведчику не положено — он предлагает наблюдение, а не
|
|
553
|
+
* стирает чужое). Поля, которых разведчик не понял, он просто не присылает.
|
|
554
|
+
*/
|
|
555
|
+
export declare const RepoProfileScoutReport: z.ZodObject<{
|
|
556
|
+
brief: z.ZodOptional<z.ZodString>;
|
|
557
|
+
zones: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
558
|
+
/** Лейбл задачи, например `area:swarm-model`. */
|
|
559
|
+
label: z.ZodString;
|
|
560
|
+
/** Что это за зона словами — одной строкой, для дрона и для человека. */
|
|
561
|
+
about: z.ZodOptional<z.ZodString>;
|
|
562
|
+
/** Пути (glob или префикс), которые к зоне относятся. */
|
|
563
|
+
paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
564
|
+
}, "strip", z.ZodTypeAny, {
|
|
565
|
+
label: string;
|
|
566
|
+
about?: string | undefined;
|
|
567
|
+
paths: string[];
|
|
568
|
+
}, {
|
|
569
|
+
label: string;
|
|
570
|
+
about?: string | undefined;
|
|
571
|
+
paths?: string[] | undefined;
|
|
572
|
+
}>, "many">>;
|
|
573
|
+
env: z.ZodOptional<z.ZodObject<{
|
|
574
|
+
/** Чем поднять базу данных (`docker compose up -d db`). */
|
|
575
|
+
database: z.ZodOptional<z.ZodString>;
|
|
576
|
+
/** Чем накатить миграции (`pnpm --filter api prisma migrate dev`). */
|
|
577
|
+
migrations: z.ZodOptional<z.ZodString>;
|
|
578
|
+
/**
|
|
579
|
+
* ИМЕНА переменных окружения, без которых репозиторий не заводится. Только
|
|
580
|
+
* имена: значения — секреты, и здесь их быть не должно (разметка едет в
|
|
581
|
+
* промпт дрона и в UI как обычный текст).
|
|
582
|
+
*/
|
|
583
|
+
vars: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
584
|
+
}, "strip", z.ZodTypeAny, {
|
|
585
|
+
database?: string | undefined;
|
|
586
|
+
migrations?: string | undefined;
|
|
587
|
+
vars: string[];
|
|
588
|
+
}, {
|
|
589
|
+
database?: string | undefined;
|
|
590
|
+
migrations?: string | undefined;
|
|
591
|
+
vars?: string[] | undefined;
|
|
592
|
+
}>>;
|
|
593
|
+
verify: z.ZodOptional<z.ZodObject<{
|
|
594
|
+
/** Команды проверки: typecheck, тесты, линт. */
|
|
595
|
+
commands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
596
|
+
/**
|
|
597
|
+
* Что здесь считается зелёным — словами. Отдельно от команд сознательно:
|
|
598
|
+
* «зелёное» редко равно «команда вернула 0» (кешированный прогон, известные
|
|
599
|
+
* падающие тесты, гейт в CI, а не локально).
|
|
600
|
+
*/
|
|
601
|
+
green: z.ZodOptional<z.ZodString>;
|
|
602
|
+
}, "strip", z.ZodTypeAny, {
|
|
603
|
+
commands: string[];
|
|
604
|
+
green?: string | undefined;
|
|
605
|
+
}, {
|
|
606
|
+
commands?: string[] | undefined;
|
|
607
|
+
green?: string | undefined;
|
|
608
|
+
}>>;
|
|
609
|
+
conventions: z.ZodOptional<z.ZodObject<{
|
|
610
|
+
/** Язык сообщений коммитов — `ru`, `en` или как принято писать в проекте. */
|
|
611
|
+
commitLanguage: z.ZodOptional<z.ZodString>;
|
|
612
|
+
/** Слаг задачи обязателен в сообщении коммита. */
|
|
613
|
+
slugInCommit: z.ZodOptional<z.ZodBoolean>;
|
|
614
|
+
/**
|
|
615
|
+
* Базовая ветка репозитория — та, от которой ветвятся и в которую идут PR.
|
|
616
|
+
* НАБЛЮДЕНИЕ о репозитории, а не ручка роя: если у проекта задан
|
|
617
|
+
* `swarmConfig.baseBranch` (TASWM-285, интеграционная ветка под пачку задач),
|
|
618
|
+
* побеждает он — это решение человека, а здесь то, что увидела разведка.
|
|
619
|
+
*/
|
|
620
|
+
baseBranch: z.ZodOptional<z.ZodString>;
|
|
621
|
+
}, "strip", z.ZodTypeAny, {
|
|
622
|
+
commitLanguage?: string | undefined;
|
|
623
|
+
slugInCommit?: boolean | undefined;
|
|
624
|
+
baseBranch?: string | undefined;
|
|
625
|
+
}, {
|
|
626
|
+
commitLanguage?: string | undefined;
|
|
627
|
+
slugInCommit?: boolean | undefined;
|
|
628
|
+
baseBranch?: string | undefined;
|
|
629
|
+
}>>;
|
|
630
|
+
spine: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
631
|
+
}, "strip", z.ZodTypeAny, {
|
|
632
|
+
brief?: string | undefined;
|
|
633
|
+
zones?: {
|
|
634
|
+
label: string;
|
|
635
|
+
about?: string | undefined;
|
|
636
|
+
paths: string[];
|
|
637
|
+
}[] | undefined;
|
|
638
|
+
env?: {
|
|
639
|
+
database?: string | undefined;
|
|
640
|
+
migrations?: string | undefined;
|
|
641
|
+
vars: string[];
|
|
642
|
+
} | undefined;
|
|
643
|
+
verify?: {
|
|
644
|
+
commands: string[];
|
|
645
|
+
green?: string | undefined;
|
|
646
|
+
} | undefined;
|
|
647
|
+
conventions?: {
|
|
648
|
+
commitLanguage?: string | undefined;
|
|
649
|
+
slugInCommit?: boolean | undefined;
|
|
650
|
+
baseBranch?: string | undefined;
|
|
651
|
+
} | undefined;
|
|
652
|
+
spine?: string[] | undefined;
|
|
653
|
+
}, {
|
|
654
|
+
brief?: string | undefined;
|
|
655
|
+
zones?: {
|
|
656
|
+
label: string;
|
|
657
|
+
about?: string | undefined;
|
|
658
|
+
paths?: string[] | undefined;
|
|
659
|
+
}[] | undefined;
|
|
660
|
+
env?: {
|
|
661
|
+
database?: string | undefined;
|
|
662
|
+
migrations?: string | undefined;
|
|
663
|
+
vars?: string[] | undefined;
|
|
664
|
+
} | undefined;
|
|
665
|
+
verify?: {
|
|
666
|
+
commands?: string[] | undefined;
|
|
667
|
+
green?: string | undefined;
|
|
668
|
+
} | undefined;
|
|
669
|
+
conventions?: {
|
|
670
|
+
commitLanguage?: string | undefined;
|
|
671
|
+
slugInCommit?: boolean | undefined;
|
|
672
|
+
baseBranch?: string | undefined;
|
|
673
|
+
} | undefined;
|
|
674
|
+
spine?: string[] | undefined;
|
|
675
|
+
}>;
|
|
676
|
+
export type RepoProfileScoutReport = z.infer<typeof RepoProfileScoutReport>;
|
|
677
|
+
/** Сырой Json из БД → предложение. `null` — предложения нет (или в нём не выжило ни поля). */
|
|
678
|
+
export declare function parseRepoProfileProposal(raw: unknown): RepoProfileProposal | null;
|
|
679
|
+
/**
|
|
680
|
+
* Что стало бы с полем, прими человек предложение:
|
|
681
|
+
* "new" — поля в разметке нет, предложение его добавляет;
|
|
682
|
+
* "changed" — поле есть и отличается;
|
|
683
|
+
* "same" — предложение совпадает с тем, что уже записано (показывать нечего);
|
|
684
|
+
* "gone" — предложения по полю нет, а в разметке оно есть (разведка про него
|
|
685
|
+
* промолчала — НЕ повод стирать: молчание не равно «удалить»).
|
|
686
|
+
*/
|
|
687
|
+
export type RepoProfileFieldChange = "new" | "changed" | "same" | "gone";
|
|
688
|
+
/** Строка разницы по одному полю разметки — то, что человек видит на экране приёмки. */
|
|
689
|
+
export interface RepoProfileFieldDiff {
|
|
690
|
+
field: RepoProfileField;
|
|
691
|
+
change: RepoProfileFieldChange;
|
|
692
|
+
/** Кто вписал то, что лежит в разметке сейчас (если лежит). */
|
|
693
|
+
currentSource?: RepoProfileSource;
|
|
694
|
+
/**
|
|
695
|
+
* Правка ЧЕЛОВЕКА, которую предложение переписало бы. Именно на этом стоит
|
|
696
|
+
* «повторная разведка не затирает ручные правки»: такие поля экран приёмки
|
|
697
|
+
* показывает отдельно и по умолчанию НЕ применяет.
|
|
698
|
+
*/
|
|
699
|
+
overwritesHuman: boolean;
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* РАЗНИЦА между живой разметкой и предложением разведчика — по полю верхнего
|
|
703
|
+
* уровня, тем же зерном, каким пишутся источники (`sources`). Тоньше резать
|
|
704
|
+
* нечего: правка человеком любого куска зон означает «зоны теперь мои».
|
|
705
|
+
*
|
|
706
|
+
* Сравнение — по нормализованному JSON: значения приезжают из БД и из ответа
|
|
707
|
+
* разведчика разными путями, и порядок ключей у них не совпадает. Без
|
|
708
|
+
* нормализации каждая повторная разведка показывала бы «изменилось» на полях,
|
|
709
|
+
* которые не менялись, — то есть ровно то, ради чего diff и заводится.
|
|
710
|
+
*/
|
|
711
|
+
export declare function diffRepoProfile(current: RepoProfile | null, proposal: RepoProfileProposal | null): RepoProfileFieldDiff[];
|
|
712
|
+
/** Есть ли что показывать человеку: хоть одно поле, которое предложение добавляет или меняет. */
|
|
713
|
+
export declare function hasRepoProfileChanges(diff: RepoProfileFieldDiff[]): boolean;
|
|
714
|
+
/**
|
|
715
|
+
* Патч из предложения по ВЫБРАННЫМ человеком полям. Единственный способ
|
|
716
|
+
* применить предложение: экран приёмки присылает список полей, которые человек
|
|
717
|
+
* подтвердил, — не принятые не попадают в патч вовсе (а не приезжают `null`,
|
|
718
|
+
* что стёрло бы уже записанное).
|
|
719
|
+
*/
|
|
720
|
+
export declare function repoProfilePatchFromProposal(proposal: RepoProfileProposal, fields: readonly RepoProfileField[]): RepoProfilePatch;
|
|
434
721
|
/** Есть ли в разметке хоть что-то, кроме карты источников. */
|
|
435
722
|
export declare function isEmptyRepoProfile(profile: RepoProfile): boolean;
|
|
436
723
|
/**
|
package/dist/repoProfile.js
CHANGED
|
@@ -159,6 +159,120 @@ export const RepoProfilePatch = z.object({
|
|
|
159
159
|
conventions: RepoConventions.nullable().optional(),
|
|
160
160
|
spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).nullable().optional(),
|
|
161
161
|
});
|
|
162
|
+
// ── ПРЕДЛОЖЕНИЕ РАЗВЕДЧИКА (TASWM-382) ──────────────────────────────────────
|
|
163
|
+
//
|
|
164
|
+
// Разведчик НЕ ПИШЕТ разметку. Он кладёт рядом ПРЕДЛОЖЕНИЕ, а применяет его
|
|
165
|
+
// человек — по одному полю, глазами. Причина в цене ошибки: неверно угаданная
|
|
166
|
+
// зона разложит задачи по кривым лейблам, а неверная команда миграции испортит
|
|
167
|
+
// локальную базу. Поэтому предложение живёт в отдельной колонке
|
|
168
|
+
// (`ProjectRepo.repoProfileProposal`) и на чтение разметки не влияет вовсе:
|
|
169
|
+
// пока человек не принял, рой работает так, будто разведки не было.
|
|
170
|
+
//
|
|
171
|
+
// Повторная разведка кладёт НОВОЕ предложение поверх старого (непринятое
|
|
172
|
+
// предложение — черновик, копить их незачем), но живую разметку по-прежнему не
|
|
173
|
+
// трогает — отсюда и требование «повторный запуск показывает разницу, а не
|
|
174
|
+
// затирает ручные правки»: разницу считает `diffRepoProfile`.
|
|
175
|
+
/** Кто и когда предложил. `by` — имя дрона-разведчика, для строки «предложил NN». */
|
|
176
|
+
export const RepoProfileProposal = z.object({
|
|
177
|
+
brief: z.string().max(REPO_BRIEF_MAX).optional().catch(undefined),
|
|
178
|
+
zones: z.array(RepoZone).max(REPO_ZONES_MAX).optional().catch(undefined),
|
|
179
|
+
env: RepoEnvSetup.optional().catch(undefined),
|
|
180
|
+
verify: RepoVerify.optional().catch(undefined),
|
|
181
|
+
conventions: RepoConventions.optional().catch(undefined),
|
|
182
|
+
spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).optional().catch(undefined),
|
|
183
|
+
/** ISO-время разведки — по нему видно, что предложение старше нынешнего репозитория. */
|
|
184
|
+
at: z.string().max(40).optional().catch(undefined),
|
|
185
|
+
/** Имя дрона-разведчика. */
|
|
186
|
+
by: z.string().max(80).optional().catch(undefined),
|
|
187
|
+
});
|
|
188
|
+
/**
|
|
189
|
+
* ЧТО предлагает разведчик — строгая схема ЗАПИСИ (как `RepoProfilePatch`, но без
|
|
190
|
+
* `null`: «очистить поле» разведчику не положено — он предлагает наблюдение, а не
|
|
191
|
+
* стирает чужое). Поля, которых разведчик не понял, он просто не присылает.
|
|
192
|
+
*/
|
|
193
|
+
export const RepoProfileScoutReport = z.object({
|
|
194
|
+
brief: z.string().max(REPO_BRIEF_MAX).optional(),
|
|
195
|
+
zones: z.array(RepoZone).max(REPO_ZONES_MAX).optional(),
|
|
196
|
+
env: RepoEnvSetup.optional(),
|
|
197
|
+
verify: RepoVerify.optional(),
|
|
198
|
+
conventions: RepoConventions.optional(),
|
|
199
|
+
spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).optional(),
|
|
200
|
+
});
|
|
201
|
+
/** Сырой Json из БД → предложение. `null` — предложения нет (или в нём не выжило ни поля). */
|
|
202
|
+
export function parseRepoProfileProposal(raw) {
|
|
203
|
+
if (raw == null || typeof raw !== "object" || Array.isArray(raw))
|
|
204
|
+
return null;
|
|
205
|
+
const parsed = RepoProfileProposal.safeParse(raw);
|
|
206
|
+
if (!parsed.success)
|
|
207
|
+
return null;
|
|
208
|
+
return REPO_PROFILE_FIELDS.every((f) => parsed.data[f] === undefined) ? null : parsed.data;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* РАЗНИЦА между живой разметкой и предложением разведчика — по полю верхнего
|
|
212
|
+
* уровня, тем же зерном, каким пишутся источники (`sources`). Тоньше резать
|
|
213
|
+
* нечего: правка человеком любого куска зон означает «зоны теперь мои».
|
|
214
|
+
*
|
|
215
|
+
* Сравнение — по нормализованному JSON: значения приезжают из БД и из ответа
|
|
216
|
+
* разведчика разными путями, и порядок ключей у них не совпадает. Без
|
|
217
|
+
* нормализации каждая повторная разведка показывала бы «изменилось» на полях,
|
|
218
|
+
* которые не менялись, — то есть ровно то, ради чего diff и заводится.
|
|
219
|
+
*/
|
|
220
|
+
export function diffRepoProfile(current, proposal) {
|
|
221
|
+
const out = [];
|
|
222
|
+
for (const field of REPO_PROFILE_FIELDS) {
|
|
223
|
+
const now = current?.[field];
|
|
224
|
+
const next = proposal?.[field];
|
|
225
|
+
if (now === undefined && next === undefined)
|
|
226
|
+
continue;
|
|
227
|
+
const currentSource = current?.sources[field];
|
|
228
|
+
const change = next === undefined ? "gone" : now === undefined ? "new" : sameValue(now, next) ? "same" : "changed";
|
|
229
|
+
out.push({
|
|
230
|
+
field,
|
|
231
|
+
change,
|
|
232
|
+
...(currentSource ? { currentSource } : {}),
|
|
233
|
+
overwritesHuman: change === "changed" && currentSource === "human",
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return out;
|
|
237
|
+
}
|
|
238
|
+
/** Есть ли что показывать человеку: хоть одно поле, которое предложение добавляет или меняет. */
|
|
239
|
+
export function hasRepoProfileChanges(diff) {
|
|
240
|
+
return diff.some((d) => d.change === "new" || d.change === "changed");
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Патч из предложения по ВЫБРАННЫМ человеком полям. Единственный способ
|
|
244
|
+
* применить предложение: экран приёмки присылает список полей, которые человек
|
|
245
|
+
* подтвердил, — не принятые не попадают в патч вовсе (а не приезжают `null`,
|
|
246
|
+
* что стёрло бы уже записанное).
|
|
247
|
+
*/
|
|
248
|
+
export function repoProfilePatchFromProposal(proposal, fields) {
|
|
249
|
+
const patch = {};
|
|
250
|
+
for (const field of REPO_PROFILE_FIELDS) {
|
|
251
|
+
if (!fields.includes(field))
|
|
252
|
+
continue;
|
|
253
|
+
const value = proposal[field];
|
|
254
|
+
if (value === undefined)
|
|
255
|
+
continue;
|
|
256
|
+
patch[field] = value;
|
|
257
|
+
}
|
|
258
|
+
return patch;
|
|
259
|
+
}
|
|
260
|
+
/** Сравнение значений полей по нормализованному JSON (порядок ключей не значим). */
|
|
261
|
+
function sameValue(a, b) {
|
|
262
|
+
return stableJson(a) === stableJson(b);
|
|
263
|
+
}
|
|
264
|
+
function stableJson(value) {
|
|
265
|
+
return JSON.stringify(value, (_key, v) => {
|
|
266
|
+
if (v && typeof v === "object" && !Array.isArray(v)) {
|
|
267
|
+
const src = v;
|
|
268
|
+
const sorted = {};
|
|
269
|
+
for (const k of Object.keys(src).sort())
|
|
270
|
+
sorted[k] = src[k];
|
|
271
|
+
return sorted;
|
|
272
|
+
}
|
|
273
|
+
return v;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
162
276
|
/** Есть ли в разметке хоть что-то, кроме карты источников. */
|
|
163
277
|
export function isEmptyRepoProfile(profile) {
|
|
164
278
|
return REPO_PROFILE_FIELDS.every((field) => profile[field] === undefined);
|
package/dist/repoProfile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoProfile.js","sourceRoot":"","sources":["../src/repoProfile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repoProfile.js","sourceRoot":"","sources":["../src/repoProfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,10 +69,46 @@ export declare const TranscriptCoverage: z.ZodObject<{
|
|
|
69
69
|
reason: "no_audio" | "not_subscribed" | "suppressed";
|
|
70
70
|
}>, "many">>;
|
|
71
71
|
gapCount: z.ZodDefault<z.ZodNumber>;
|
|
72
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Сколько дорожек реконсиляция починила ПО-НАСТОЯЩЕМУ: дожала подписку, и
|
|
74
|
+
* она доехала. С v2 (TAS-500) сюда не попадают неудачные попытки — до этого
|
|
75
|
+
* попадали, и две мёртвые дорожки давали `repairedSubscriptions: 248`.
|
|
76
|
+
*/
|
|
73
77
|
repairedSubscriptions: z.ZodDefault<z.ZodNumber>;
|
|
78
|
+
/**
|
|
79
|
+
* Сколько раз вообще пришлось просить подписку. Много при нулевых починках —
|
|
80
|
+
* SFU не отдаёт трек, сколько ни проси (v2+).
|
|
81
|
+
*/
|
|
82
|
+
subscriptionRetries: z.ZodDefault<z.ZodNumber>;
|
|
83
|
+
/** Поимённо те, у кого подписка так и не встала — это сигнал, а не шум (v2+). */
|
|
84
|
+
stuckSubscriptions: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
85
|
+
identity: z.ZodString;
|
|
86
|
+
name: z.ZodDefault<z.ZodString>;
|
|
87
|
+
}, "strip", z.ZodTypeAny, {
|
|
88
|
+
identity: string;
|
|
89
|
+
name: string;
|
|
90
|
+
}, {
|
|
91
|
+
identity: string;
|
|
92
|
+
name?: string | undefined;
|
|
93
|
+
}>, "many">>;
|
|
94
|
+
stuckCount: z.ZodDefault<z.ZodNumber>;
|
|
74
95
|
/** Сколько распознанных сегментов выброшено анти-дублем «вышедшего». */
|
|
75
96
|
suppressedSegments: z.ZodDefault<z.ZodNumber>;
|
|
97
|
+
/**
|
|
98
|
+
* Чем кончился выход джоба. `drain: "cancelled" | "abandoned"` означает, что
|
|
99
|
+
* хвост очереди распознавания не доехал до базы, — снаружи это выглядит как
|
|
100
|
+
* «человек замолчал под конец», и молчать об этом нельзя (TAS-500).
|
|
101
|
+
*/
|
|
102
|
+
shutdown: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
103
|
+
drain: z.ZodDefault<z.ZodEnum<["drained", "cancelled", "abandoned"]>>;
|
|
104
|
+
unfinishedRecorders: z.ZodDefault<z.ZodNumber>;
|
|
105
|
+
}, "strip", z.ZodTypeAny, {
|
|
106
|
+
drain: "abandoned" | "cancelled" | "drained";
|
|
107
|
+
unfinishedRecorders: number;
|
|
108
|
+
}, {
|
|
109
|
+
drain?: "abandoned" | "cancelled" | "drained" | undefined;
|
|
110
|
+
unfinishedRecorders?: number | undefined;
|
|
111
|
+
}>>>>;
|
|
76
112
|
}, "strip", z.ZodTypeAny, {
|
|
77
113
|
v: number;
|
|
78
114
|
participants: number;
|
|
@@ -94,7 +130,17 @@ export declare const TranscriptCoverage: z.ZodObject<{
|
|
|
94
130
|
}[];
|
|
95
131
|
gapCount: number;
|
|
96
132
|
repairedSubscriptions: number;
|
|
133
|
+
subscriptionRetries: number;
|
|
134
|
+
stuckSubscriptions: {
|
|
135
|
+
identity: string;
|
|
136
|
+
name: string;
|
|
137
|
+
}[];
|
|
138
|
+
stuckCount: number;
|
|
97
139
|
suppressedSegments: number;
|
|
140
|
+
shutdown: {
|
|
141
|
+
drain: "abandoned" | "cancelled" | "drained";
|
|
142
|
+
unfinishedRecorders: number;
|
|
143
|
+
} | null;
|
|
98
144
|
}, {
|
|
99
145
|
v?: number | undefined;
|
|
100
146
|
participants?: number | undefined;
|
|
@@ -116,7 +162,17 @@ export declare const TranscriptCoverage: z.ZodObject<{
|
|
|
116
162
|
}[] | undefined;
|
|
117
163
|
gapCount?: number | undefined;
|
|
118
164
|
repairedSubscriptions?: number | undefined;
|
|
165
|
+
subscriptionRetries?: number | undefined;
|
|
166
|
+
stuckSubscriptions?: {
|
|
167
|
+
identity: string;
|
|
168
|
+
name?: string | undefined;
|
|
169
|
+
}[] | undefined;
|
|
170
|
+
stuckCount?: number | undefined;
|
|
119
171
|
suppressedSegments?: number | undefined;
|
|
172
|
+
shutdown?: {
|
|
173
|
+
drain?: "abandoned" | "cancelled" | "drained" | undefined;
|
|
174
|
+
unfinishedRecorders?: number | undefined;
|
|
175
|
+
} | null | undefined;
|
|
120
176
|
}>;
|
|
121
177
|
export type TranscriptCoverage = z.infer<typeof TranscriptCoverage>;
|
|
122
178
|
/**
|
|
@@ -60,10 +60,34 @@ export const TranscriptCoverage = z.object({
|
|
|
60
60
|
/** Те, у кого речь могла потеряться. Список урезан, счётчик — нет. */
|
|
61
61
|
gaps: z.array(Person.extend({ reason: TranscriptCoverageGapReason })).default([]),
|
|
62
62
|
gapCount: z.number().int().min(0).default(0),
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Сколько дорожек реконсиляция починила ПО-НАСТОЯЩЕМУ: дожала подписку, и
|
|
65
|
+
* она доехала. С v2 (TAS-500) сюда не попадают неудачные попытки — до этого
|
|
66
|
+
* попадали, и две мёртвые дорожки давали `repairedSubscriptions: 248`.
|
|
67
|
+
*/
|
|
64
68
|
repairedSubscriptions: z.number().int().min(0).default(0),
|
|
69
|
+
/**
|
|
70
|
+
* Сколько раз вообще пришлось просить подписку. Много при нулевых починках —
|
|
71
|
+
* SFU не отдаёт трек, сколько ни проси (v2+).
|
|
72
|
+
*/
|
|
73
|
+
subscriptionRetries: z.number().int().min(0).default(0),
|
|
74
|
+
/** Поимённо те, у кого подписка так и не встала — это сигнал, а не шум (v2+). */
|
|
75
|
+
stuckSubscriptions: z.array(Person).default([]),
|
|
76
|
+
stuckCount: z.number().int().min(0).default(0),
|
|
65
77
|
/** Сколько распознанных сегментов выброшено анти-дублем «вышедшего». */
|
|
66
78
|
suppressedSegments: z.number().int().min(0).default(0),
|
|
79
|
+
/**
|
|
80
|
+
* Чем кончился выход джоба. `drain: "cancelled" | "abandoned"` означает, что
|
|
81
|
+
* хвост очереди распознавания не доехал до базы, — снаружи это выглядит как
|
|
82
|
+
* «человек замолчал под конец», и молчать об этом нельзя (TAS-500).
|
|
83
|
+
*/
|
|
84
|
+
shutdown: z
|
|
85
|
+
.object({
|
|
86
|
+
drain: z.enum(["drained", "cancelled", "abandoned"]).default("drained"),
|
|
87
|
+
unfinishedRecorders: z.number().int().min(0).default(0),
|
|
88
|
+
})
|
|
89
|
+
.nullish()
|
|
90
|
+
.default(null),
|
|
67
91
|
});
|
|
68
92
|
/**
|
|
69
93
|
* Разобрать значение JSON-колонки. Мусор и `null` дают `null` — «данных нет»,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcriptCoverage.js","sourceRoot":"","sources":["../src/transcriptCoverage.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,oDAAoD;AACpD,EAAE;AACF,gEAAgE;AAChE,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC;IAChD,gBAAgB;IAChB,UAAU;IACV,YAAY;CACb,CAAC,CAAC;AAGH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,mFAAmF;IACnF,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,0EAA0E;IAC1E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,wEAAwE;IACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,gEAAgE;IAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,mEAAmE;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,wEAAwE;IACxE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,kEAAkE;IAClE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,sEAAsE;IACtE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C
|
|
1
|
+
{"version":3,"file":"transcriptCoverage.js","sourceRoot":"","sources":["../src/transcriptCoverage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taskless-app/shared",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Shared types, Zod schemas and design tokens for the Taskless API contract — consumed by @taskless/api, @taskless/web and the Taskless mobile app.",
|
|
6
6
|
"license": "MIT",
|