@akagilnc/pi-workflow-roles 0.1.6039 → 0.1.6048
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/acp-host/production-host.js +37 -1
- package/dist/headless-host/production-host.js +37 -1
- package/dist/migrate-book-topology.js +37 -1
- package/dist/public-cli/main.js +37 -1
- package/dist/review-submission.js +32 -0
- package/package.json +1 -1
- package/souls/inspector.md +2 -0
- package/src/review-submission.ts +47 -0
|
@@ -1682,7 +1682,7 @@ var init_navigator_output = __esm({
|
|
|
1682
1682
|
|
|
1683
1683
|
// src/review-submission.ts
|
|
1684
1684
|
import { Type as Type5 } from "typebox";
|
|
1685
|
-
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, inspectorSubmissionSchema;
|
|
1685
|
+
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, mechanismRowSchema, inspectorSubmissionSchema;
|
|
1686
1686
|
var init_review_submission = __esm({
|
|
1687
1687
|
"src/review-submission.ts"() {
|
|
1688
1688
|
"use strict";
|
|
@@ -1765,6 +1765,39 @@ var init_review_submission = __esm({
|
|
|
1765
1765
|
},
|
|
1766
1766
|
{ additionalProperties: true }
|
|
1767
1767
|
);
|
|
1768
|
+
mechanismRowBase = {
|
|
1769
|
+
where: Type5.String({
|
|
1770
|
+
description: "\u672C\u7968\u751F\u4EA7\u4EE3\u7801\u51C0\u589E\u91CC\u7684\u90A3\u4E00\u884C path:line\uFF1A\u65B0\u589E\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u4FDD\u5B58\u7684\u72B6\u6001\uFF08\u6A21\u5757\u7EA7\u6216\u5B9E\u4F8B\u7EA7\u7684\u5B57\u5178\u3001\u96C6\u5408\u3001\u5217\u8868\u3001LRU \u7B49\uFF09\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF1B\u4E00\u884C\u4E00\u6761\uFF0C\u7167 diff \u5217\uFF0C\u4E0D\u5408\u5E76\uFF1B\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217"
|
|
1771
|
+
}),
|
|
1772
|
+
keeps: Type5.String({ description: "\u8FD9\u4E00\u884C\u8BA9\u4EC0\u4E48\u4E1C\u897F\u5728\u4E24\u6B21\u8C03\u7528\u4E4B\u95F4\u7559\u4E0B\u6765\uFF0C\u6216\u6321\u4F4F\u4EC0\u4E48" }),
|
|
1773
|
+
layer: Type5.Integer({ description: "\u4ECE\u672C\u7968\u8D77\u70B9\u5230 HEAD\uFF0C\u8FD9\u662F\u7B2C\u51E0\u5904\u8FD9\u6837\u7684\u65B0\u589E\uFF08\u542B\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\uFF09" })
|
|
1774
|
+
};
|
|
1775
|
+
MECHANISM_FRAMEWORK_RULE = "\u6846\u67B6\u662F\u4ED3\u5E93 ADR \u6216\u7968\u9762\u70B9\u540D\u7684\u90A3\u4E00\u4E2A\uFF08\u8BFB\u5199\u6A21\u578B\u3001Web\u3001\u6D4B\u8BD5\u7B49\u6846\u67B6\uFF09\uFF0C\u4E0D\u662F\u5E2D\u4F4D\u81EA\u9009\uFF1B\u5B9E\u73B0\u8FD9\u4E00\u5C42\u6240\u7528\u7684\u5E93\uFF08ORM\u3001\u7F13\u5B58\u5E93\u3001\u89E3\u6790\u5E93\uFF09\u4E0D\u662F\u6846\u67B6\uFF0C\u5B83\u7684 API \u9875\u6216\u793A\u4F8B\u586B\u4E0D\u8FDB\u8FD9\u683C\u2014\u2014\u90A3\u7B54\u7684\u662F\u300C\u8FD9\u5C42\u600E\u4E48\u505A\u300D\uFF0C\u8FD9\u683C\u95EE\u7684\u662F\u300C\u793A\u8303\u4E0D\u5E26\u8FD9\u5C42\u600E\u4E48\u529E\u300D";
|
|
1776
|
+
mechanismRowSchema = Type5.Union(
|
|
1777
|
+
[
|
|
1778
|
+
Type5.Object(
|
|
1779
|
+
{
|
|
1780
|
+
...mechanismRowBase,
|
|
1781
|
+
official: Type5.String({
|
|
1782
|
+
description: `\u8FD9\u6BB5\u4EE3\u7801\u6240\u5C5E\u5E94\u7528\u6846\u67B6\u7684\u5B98\u65B9\u793A\u8303\u91CC\uFF0C\u4E0D\u5E26\u8FD9\u4E00\u5C42\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\uFF1A\u5148\u5199\u6846\u67B6\u540D\uFF0C\u518D\u94FE\u63A5\uFF0B\u539F\u53E5\uFF08\u793A\u8303\u91CC\u76F4\u63A5\u8BFB\u3001\u76F4\u63A5\u67E5\u3001\u4EA4\u7ED9\u6846\u67B6\u54EA\u9879\u8BBE\u7F6E\uFF09\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
1783
|
+
}),
|
|
1784
|
+
disposition: Type5.Literal("\u5220\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86", { description: "official \u586B\u4E86\u5B57\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
1785
|
+
},
|
|
1786
|
+
{ additionalProperties: true }
|
|
1787
|
+
),
|
|
1788
|
+
Type5.Object(
|
|
1789
|
+
{
|
|
1790
|
+
...mechanismRowBase,
|
|
1791
|
+
official: Type5.Null({
|
|
1792
|
+
description: `\u793A\u8303\u4EE3\u7801\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u6216\u4F9D\u8D56\uFF1A\u586B null\uFF0C\u5E76\u5728 keeps \u672B\u5C3E\u5199\u6846\u67B6\u540D\u4E0E\u793A\u8303\u91CC\u90A3\u4E00\u5904\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
1793
|
+
}),
|
|
1794
|
+
disposition: Type5.Literal("\u7559\uFF1A\u793A\u8303\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u5C42", { description: "official \u4E3A null\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
1795
|
+
},
|
|
1796
|
+
{ additionalProperties: true }
|
|
1797
|
+
)
|
|
1798
|
+
],
|
|
1799
|
+
{ description: "\u4E24\u79CD\u884C\u5F62\uFF0C\u6CA1\u6709\u7B2C\u4E09\u79CD\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86\uFF08official \u586B\u5B57\uFF0C\u5220\uFF09\uFF1B\u793A\u8303\u672C\u8EAB\u5C31\u5E26\u540C\u6837\u7684\u5C42\uFF08official null\uFF0C\u7559\uFF09" }
|
|
1800
|
+
);
|
|
1768
1801
|
inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
1769
1802
|
Type5.Object(
|
|
1770
1803
|
{
|
|
@@ -1775,6 +1808,9 @@ var init_review_submission = __esm({
|
|
|
1775
1808
|
}),
|
|
1776
1809
|
ticketComplexity: Type5.Array(ticketComplexityRowSchema, {
|
|
1777
1810
|
description: "\u6574\u7968\u590D\u6742\u5EA6\uFF1A\u672C\u7968\u8D77\u70B9\uFF08\u672C\u5206\u652F\u4E0E\u5BB6\u65CF\u5206\u652F\u6216\u76EE\u6807\u5206\u652F\u7684 git merge-base\uFF09\u5230 HEAD \u7684\u751F\u4EA7\u4E0E\u6D4B\u8BD5\u51C0\u589E\uFF0C\u5BF9\u300A\u8D28\u91CF\u6CD5\u300B\u91CC\u6BCF\u4E00\u53E5\u8981\u6C42\u5220\u9664\u3001\u5408\u5E76\u3001\u590D\u7528\u6216\u4E0D\u53E6\u5199\u7684\u6761\u6587\u5404\u7B54\u4E00\u884C\u3002\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u6539\u52A8\u4E5F\u7B97\u5728\u5185\u3002"
|
|
1811
|
+
}),
|
|
1812
|
+
mechanisms: Type5.Array(mechanismRowSchema, {
|
|
1813
|
+
description: "\u6574\u7968\u673A\u5236\u5C42\uFF1A\u672C\u7968\u8D77\u70B9\u5230 HEAD \u751F\u4EA7\u4EE3\u7801\u65B0\u589E\u7684\u6BCF\u4E00\u5904\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF0C\u5404\u4E00\u884C\uFF0C\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u4E5F\u5217\uFF0C\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217\uFF1B\u4E00\u5904\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
|
|
1778
1814
|
})
|
|
1779
1815
|
},
|
|
1780
1816
|
{ additionalProperties: true }
|
|
@@ -481,7 +481,7 @@ var init_terminating_infrastructure = __esm({
|
|
|
481
481
|
|
|
482
482
|
// src/review-submission.ts
|
|
483
483
|
import { Type as Type2 } from "typebox";
|
|
484
|
-
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, inspectorSubmissionSchema;
|
|
484
|
+
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, mechanismRowSchema, inspectorSubmissionSchema;
|
|
485
485
|
var init_review_submission = __esm({
|
|
486
486
|
"src/review-submission.ts"() {
|
|
487
487
|
"use strict";
|
|
@@ -564,6 +564,39 @@ var init_review_submission = __esm({
|
|
|
564
564
|
},
|
|
565
565
|
{ additionalProperties: true }
|
|
566
566
|
);
|
|
567
|
+
mechanismRowBase = {
|
|
568
|
+
where: Type2.String({
|
|
569
|
+
description: "\u672C\u7968\u751F\u4EA7\u4EE3\u7801\u51C0\u589E\u91CC\u7684\u90A3\u4E00\u884C path:line\uFF1A\u65B0\u589E\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u4FDD\u5B58\u7684\u72B6\u6001\uFF08\u6A21\u5757\u7EA7\u6216\u5B9E\u4F8B\u7EA7\u7684\u5B57\u5178\u3001\u96C6\u5408\u3001\u5217\u8868\u3001LRU \u7B49\uFF09\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF1B\u4E00\u884C\u4E00\u6761\uFF0C\u7167 diff \u5217\uFF0C\u4E0D\u5408\u5E76\uFF1B\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217"
|
|
570
|
+
}),
|
|
571
|
+
keeps: Type2.String({ description: "\u8FD9\u4E00\u884C\u8BA9\u4EC0\u4E48\u4E1C\u897F\u5728\u4E24\u6B21\u8C03\u7528\u4E4B\u95F4\u7559\u4E0B\u6765\uFF0C\u6216\u6321\u4F4F\u4EC0\u4E48" }),
|
|
572
|
+
layer: Type2.Integer({ description: "\u4ECE\u672C\u7968\u8D77\u70B9\u5230 HEAD\uFF0C\u8FD9\u662F\u7B2C\u51E0\u5904\u8FD9\u6837\u7684\u65B0\u589E\uFF08\u542B\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\uFF09" })
|
|
573
|
+
};
|
|
574
|
+
MECHANISM_FRAMEWORK_RULE = "\u6846\u67B6\u662F\u4ED3\u5E93 ADR \u6216\u7968\u9762\u70B9\u540D\u7684\u90A3\u4E00\u4E2A\uFF08\u8BFB\u5199\u6A21\u578B\u3001Web\u3001\u6D4B\u8BD5\u7B49\u6846\u67B6\uFF09\uFF0C\u4E0D\u662F\u5E2D\u4F4D\u81EA\u9009\uFF1B\u5B9E\u73B0\u8FD9\u4E00\u5C42\u6240\u7528\u7684\u5E93\uFF08ORM\u3001\u7F13\u5B58\u5E93\u3001\u89E3\u6790\u5E93\uFF09\u4E0D\u662F\u6846\u67B6\uFF0C\u5B83\u7684 API \u9875\u6216\u793A\u4F8B\u586B\u4E0D\u8FDB\u8FD9\u683C\u2014\u2014\u90A3\u7B54\u7684\u662F\u300C\u8FD9\u5C42\u600E\u4E48\u505A\u300D\uFF0C\u8FD9\u683C\u95EE\u7684\u662F\u300C\u793A\u8303\u4E0D\u5E26\u8FD9\u5C42\u600E\u4E48\u529E\u300D";
|
|
575
|
+
mechanismRowSchema = Type2.Union(
|
|
576
|
+
[
|
|
577
|
+
Type2.Object(
|
|
578
|
+
{
|
|
579
|
+
...mechanismRowBase,
|
|
580
|
+
official: Type2.String({
|
|
581
|
+
description: `\u8FD9\u6BB5\u4EE3\u7801\u6240\u5C5E\u5E94\u7528\u6846\u67B6\u7684\u5B98\u65B9\u793A\u8303\u91CC\uFF0C\u4E0D\u5E26\u8FD9\u4E00\u5C42\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\uFF1A\u5148\u5199\u6846\u67B6\u540D\uFF0C\u518D\u94FE\u63A5\uFF0B\u539F\u53E5\uFF08\u793A\u8303\u91CC\u76F4\u63A5\u8BFB\u3001\u76F4\u63A5\u67E5\u3001\u4EA4\u7ED9\u6846\u67B6\u54EA\u9879\u8BBE\u7F6E\uFF09\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
582
|
+
}),
|
|
583
|
+
disposition: Type2.Literal("\u5220\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86", { description: "official \u586B\u4E86\u5B57\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
584
|
+
},
|
|
585
|
+
{ additionalProperties: true }
|
|
586
|
+
),
|
|
587
|
+
Type2.Object(
|
|
588
|
+
{
|
|
589
|
+
...mechanismRowBase,
|
|
590
|
+
official: Type2.Null({
|
|
591
|
+
description: `\u793A\u8303\u4EE3\u7801\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u6216\u4F9D\u8D56\uFF1A\u586B null\uFF0C\u5E76\u5728 keeps \u672B\u5C3E\u5199\u6846\u67B6\u540D\u4E0E\u793A\u8303\u91CC\u90A3\u4E00\u5904\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
592
|
+
}),
|
|
593
|
+
disposition: Type2.Literal("\u7559\uFF1A\u793A\u8303\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u5C42", { description: "official \u4E3A null\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
594
|
+
},
|
|
595
|
+
{ additionalProperties: true }
|
|
596
|
+
)
|
|
597
|
+
],
|
|
598
|
+
{ description: "\u4E24\u79CD\u884C\u5F62\uFF0C\u6CA1\u6709\u7B2C\u4E09\u79CD\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86\uFF08official \u586B\u5B57\uFF0C\u5220\uFF09\uFF1B\u793A\u8303\u672C\u8EAB\u5C31\u5E26\u540C\u6837\u7684\u5C42\uFF08official null\uFF0C\u7559\uFF09" }
|
|
599
|
+
);
|
|
567
600
|
inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
568
601
|
Type2.Object(
|
|
569
602
|
{
|
|
@@ -574,6 +607,9 @@ var init_review_submission = __esm({
|
|
|
574
607
|
}),
|
|
575
608
|
ticketComplexity: Type2.Array(ticketComplexityRowSchema, {
|
|
576
609
|
description: "\u6574\u7968\u590D\u6742\u5EA6\uFF1A\u672C\u7968\u8D77\u70B9\uFF08\u672C\u5206\u652F\u4E0E\u5BB6\u65CF\u5206\u652F\u6216\u76EE\u6807\u5206\u652F\u7684 git merge-base\uFF09\u5230 HEAD \u7684\u751F\u4EA7\u4E0E\u6D4B\u8BD5\u51C0\u589E\uFF0C\u5BF9\u300A\u8D28\u91CF\u6CD5\u300B\u91CC\u6BCF\u4E00\u53E5\u8981\u6C42\u5220\u9664\u3001\u5408\u5E76\u3001\u590D\u7528\u6216\u4E0D\u53E6\u5199\u7684\u6761\u6587\u5404\u7B54\u4E00\u884C\u3002\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u6539\u52A8\u4E5F\u7B97\u5728\u5185\u3002"
|
|
610
|
+
}),
|
|
611
|
+
mechanisms: Type2.Array(mechanismRowSchema, {
|
|
612
|
+
description: "\u6574\u7968\u673A\u5236\u5C42\uFF1A\u672C\u7968\u8D77\u70B9\u5230 HEAD \u751F\u4EA7\u4EE3\u7801\u65B0\u589E\u7684\u6BCF\u4E00\u5904\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF0C\u5404\u4E00\u884C\uFF0C\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u4E5F\u5217\uFF0C\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217\uFF1B\u4E00\u5904\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
|
|
577
613
|
})
|
|
578
614
|
},
|
|
579
615
|
{ additionalProperties: true }
|
|
@@ -8707,7 +8707,7 @@ var init_navigator_output = __esm({
|
|
|
8707
8707
|
});
|
|
8708
8708
|
|
|
8709
8709
|
// src/review-submission.ts
|
|
8710
|
-
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, inspectorSubmissionSchema;
|
|
8710
|
+
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, mechanismRowSchema, inspectorSubmissionSchema;
|
|
8711
8711
|
var init_review_submission = __esm({
|
|
8712
8712
|
"src/review-submission.ts"() {
|
|
8713
8713
|
"use strict";
|
|
@@ -8791,6 +8791,39 @@ var init_review_submission = __esm({
|
|
|
8791
8791
|
},
|
|
8792
8792
|
{ additionalProperties: true }
|
|
8793
8793
|
);
|
|
8794
|
+
mechanismRowBase = {
|
|
8795
|
+
where: typebox_exports.String({
|
|
8796
|
+
description: "\u672C\u7968\u751F\u4EA7\u4EE3\u7801\u51C0\u589E\u91CC\u7684\u90A3\u4E00\u884C path:line\uFF1A\u65B0\u589E\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u4FDD\u5B58\u7684\u72B6\u6001\uFF08\u6A21\u5757\u7EA7\u6216\u5B9E\u4F8B\u7EA7\u7684\u5B57\u5178\u3001\u96C6\u5408\u3001\u5217\u8868\u3001LRU \u7B49\uFF09\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF1B\u4E00\u884C\u4E00\u6761\uFF0C\u7167 diff \u5217\uFF0C\u4E0D\u5408\u5E76\uFF1B\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217"
|
|
8797
|
+
}),
|
|
8798
|
+
keeps: typebox_exports.String({ description: "\u8FD9\u4E00\u884C\u8BA9\u4EC0\u4E48\u4E1C\u897F\u5728\u4E24\u6B21\u8C03\u7528\u4E4B\u95F4\u7559\u4E0B\u6765\uFF0C\u6216\u6321\u4F4F\u4EC0\u4E48" }),
|
|
8799
|
+
layer: typebox_exports.Integer({ description: "\u4ECE\u672C\u7968\u8D77\u70B9\u5230 HEAD\uFF0C\u8FD9\u662F\u7B2C\u51E0\u5904\u8FD9\u6837\u7684\u65B0\u589E\uFF08\u542B\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\uFF09" })
|
|
8800
|
+
};
|
|
8801
|
+
MECHANISM_FRAMEWORK_RULE = "\u6846\u67B6\u662F\u4ED3\u5E93 ADR \u6216\u7968\u9762\u70B9\u540D\u7684\u90A3\u4E00\u4E2A\uFF08\u8BFB\u5199\u6A21\u578B\u3001Web\u3001\u6D4B\u8BD5\u7B49\u6846\u67B6\uFF09\uFF0C\u4E0D\u662F\u5E2D\u4F4D\u81EA\u9009\uFF1B\u5B9E\u73B0\u8FD9\u4E00\u5C42\u6240\u7528\u7684\u5E93\uFF08ORM\u3001\u7F13\u5B58\u5E93\u3001\u89E3\u6790\u5E93\uFF09\u4E0D\u662F\u6846\u67B6\uFF0C\u5B83\u7684 API \u9875\u6216\u793A\u4F8B\u586B\u4E0D\u8FDB\u8FD9\u683C\u2014\u2014\u90A3\u7B54\u7684\u662F\u300C\u8FD9\u5C42\u600E\u4E48\u505A\u300D\uFF0C\u8FD9\u683C\u95EE\u7684\u662F\u300C\u793A\u8303\u4E0D\u5E26\u8FD9\u5C42\u600E\u4E48\u529E\u300D";
|
|
8802
|
+
mechanismRowSchema = typebox_exports.Union(
|
|
8803
|
+
[
|
|
8804
|
+
typebox_exports.Object(
|
|
8805
|
+
{
|
|
8806
|
+
...mechanismRowBase,
|
|
8807
|
+
official: typebox_exports.String({
|
|
8808
|
+
description: `\u8FD9\u6BB5\u4EE3\u7801\u6240\u5C5E\u5E94\u7528\u6846\u67B6\u7684\u5B98\u65B9\u793A\u8303\u91CC\uFF0C\u4E0D\u5E26\u8FD9\u4E00\u5C42\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\uFF1A\u5148\u5199\u6846\u67B6\u540D\uFF0C\u518D\u94FE\u63A5\uFF0B\u539F\u53E5\uFF08\u793A\u8303\u91CC\u76F4\u63A5\u8BFB\u3001\u76F4\u63A5\u67E5\u3001\u4EA4\u7ED9\u6846\u67B6\u54EA\u9879\u8BBE\u7F6E\uFF09\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
8809
|
+
}),
|
|
8810
|
+
disposition: typebox_exports.Literal("\u5220\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86", { description: "official \u586B\u4E86\u5B57\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
8811
|
+
},
|
|
8812
|
+
{ additionalProperties: true }
|
|
8813
|
+
),
|
|
8814
|
+
typebox_exports.Object(
|
|
8815
|
+
{
|
|
8816
|
+
...mechanismRowBase,
|
|
8817
|
+
official: typebox_exports.Null({
|
|
8818
|
+
description: `\u793A\u8303\u4EE3\u7801\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u6216\u4F9D\u8D56\uFF1A\u586B null\uFF0C\u5E76\u5728 keeps \u672B\u5C3E\u5199\u6846\u67B6\u540D\u4E0E\u793A\u8303\u91CC\u90A3\u4E00\u5904\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
8819
|
+
}),
|
|
8820
|
+
disposition: typebox_exports.Literal("\u7559\uFF1A\u793A\u8303\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u5C42", { description: "official \u4E3A null\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
8821
|
+
},
|
|
8822
|
+
{ additionalProperties: true }
|
|
8823
|
+
)
|
|
8824
|
+
],
|
|
8825
|
+
{ description: "\u4E24\u79CD\u884C\u5F62\uFF0C\u6CA1\u6709\u7B2C\u4E09\u79CD\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86\uFF08official \u586B\u5B57\uFF0C\u5220\uFF09\uFF1B\u793A\u8303\u672C\u8EAB\u5C31\u5E26\u540C\u6837\u7684\u5C42\uFF08official null\uFF0C\u7559\uFF09" }
|
|
8826
|
+
);
|
|
8794
8827
|
inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
8795
8828
|
typebox_exports.Object(
|
|
8796
8829
|
{
|
|
@@ -8801,6 +8834,9 @@ var init_review_submission = __esm({
|
|
|
8801
8834
|
}),
|
|
8802
8835
|
ticketComplexity: typebox_exports.Array(ticketComplexityRowSchema, {
|
|
8803
8836
|
description: "\u6574\u7968\u590D\u6742\u5EA6\uFF1A\u672C\u7968\u8D77\u70B9\uFF08\u672C\u5206\u652F\u4E0E\u5BB6\u65CF\u5206\u652F\u6216\u76EE\u6807\u5206\u652F\u7684 git merge-base\uFF09\u5230 HEAD \u7684\u751F\u4EA7\u4E0E\u6D4B\u8BD5\u51C0\u589E\uFF0C\u5BF9\u300A\u8D28\u91CF\u6CD5\u300B\u91CC\u6BCF\u4E00\u53E5\u8981\u6C42\u5220\u9664\u3001\u5408\u5E76\u3001\u590D\u7528\u6216\u4E0D\u53E6\u5199\u7684\u6761\u6587\u5404\u7B54\u4E00\u884C\u3002\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u6539\u52A8\u4E5F\u7B97\u5728\u5185\u3002"
|
|
8837
|
+
}),
|
|
8838
|
+
mechanisms: typebox_exports.Array(mechanismRowSchema, {
|
|
8839
|
+
description: "\u6574\u7968\u673A\u5236\u5C42\uFF1A\u672C\u7968\u8D77\u70B9\u5230 HEAD \u751F\u4EA7\u4EE3\u7801\u65B0\u589E\u7684\u6BCF\u4E00\u5904\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF0C\u5404\u4E00\u884C\uFF0C\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u4E5F\u5217\uFF0C\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217\uFF1B\u4E00\u5904\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
|
|
8804
8840
|
})
|
|
8805
8841
|
},
|
|
8806
8842
|
{ additionalProperties: true }
|
package/dist/public-cli/main.js
CHANGED
|
@@ -9197,7 +9197,7 @@ var init_navigator_output = __esm({
|
|
|
9197
9197
|
});
|
|
9198
9198
|
|
|
9199
9199
|
// src/review-submission.ts
|
|
9200
|
-
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, inspectorSubmissionSchema;
|
|
9200
|
+
var REVIEW_SUBMISSION_OUTPUT_TOOL_NAME, REVIEW_QUEUE_WORDS, REVIEW_QUEUE_STATUSES, reviewStatusField, reviewNarrativeFields, reviewSubmissionSchema, notaryClauseItemSchema, notaryClausesField, notaryReviewSubmissionSchema, ticketComplexityRowSchema, mechanismRowBase, MECHANISM_FRAMEWORK_RULE, mechanismRowSchema, inspectorSubmissionSchema;
|
|
9201
9201
|
var init_review_submission = __esm({
|
|
9202
9202
|
"src/review-submission.ts"() {
|
|
9203
9203
|
"use strict";
|
|
@@ -9281,6 +9281,39 @@ var init_review_submission = __esm({
|
|
|
9281
9281
|
},
|
|
9282
9282
|
{ additionalProperties: true }
|
|
9283
9283
|
);
|
|
9284
|
+
mechanismRowBase = {
|
|
9285
|
+
where: typebox_exports.String({
|
|
9286
|
+
description: "\u672C\u7968\u751F\u4EA7\u4EE3\u7801\u51C0\u589E\u91CC\u7684\u90A3\u4E00\u884C path:line\uFF1A\u65B0\u589E\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u4FDD\u5B58\u7684\u72B6\u6001\uFF08\u6A21\u5757\u7EA7\u6216\u5B9E\u4F8B\u7EA7\u7684\u5B57\u5178\u3001\u96C6\u5408\u3001\u5217\u8868\u3001LRU \u7B49\uFF09\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF1B\u4E00\u884C\u4E00\u6761\uFF0C\u7167 diff \u5217\uFF0C\u4E0D\u5408\u5E76\uFF1B\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217"
|
|
9287
|
+
}),
|
|
9288
|
+
keeps: typebox_exports.String({ description: "\u8FD9\u4E00\u884C\u8BA9\u4EC0\u4E48\u4E1C\u897F\u5728\u4E24\u6B21\u8C03\u7528\u4E4B\u95F4\u7559\u4E0B\u6765\uFF0C\u6216\u6321\u4F4F\u4EC0\u4E48" }),
|
|
9289
|
+
layer: typebox_exports.Integer({ description: "\u4ECE\u672C\u7968\u8D77\u70B9\u5230 HEAD\uFF0C\u8FD9\u662F\u7B2C\u51E0\u5904\u8FD9\u6837\u7684\u65B0\u589E\uFF08\u542B\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\uFF09" })
|
|
9290
|
+
};
|
|
9291
|
+
MECHANISM_FRAMEWORK_RULE = "\u6846\u67B6\u662F\u4ED3\u5E93 ADR \u6216\u7968\u9762\u70B9\u540D\u7684\u90A3\u4E00\u4E2A\uFF08\u8BFB\u5199\u6A21\u578B\u3001Web\u3001\u6D4B\u8BD5\u7B49\u6846\u67B6\uFF09\uFF0C\u4E0D\u662F\u5E2D\u4F4D\u81EA\u9009\uFF1B\u5B9E\u73B0\u8FD9\u4E00\u5C42\u6240\u7528\u7684\u5E93\uFF08ORM\u3001\u7F13\u5B58\u5E93\u3001\u89E3\u6790\u5E93\uFF09\u4E0D\u662F\u6846\u67B6\uFF0C\u5B83\u7684 API \u9875\u6216\u793A\u4F8B\u586B\u4E0D\u8FDB\u8FD9\u683C\u2014\u2014\u90A3\u7B54\u7684\u662F\u300C\u8FD9\u5C42\u600E\u4E48\u505A\u300D\uFF0C\u8FD9\u683C\u95EE\u7684\u662F\u300C\u793A\u8303\u4E0D\u5E26\u8FD9\u5C42\u600E\u4E48\u529E\u300D";
|
|
9292
|
+
mechanismRowSchema = typebox_exports.Union(
|
|
9293
|
+
[
|
|
9294
|
+
typebox_exports.Object(
|
|
9295
|
+
{
|
|
9296
|
+
...mechanismRowBase,
|
|
9297
|
+
official: typebox_exports.String({
|
|
9298
|
+
description: `\u8FD9\u6BB5\u4EE3\u7801\u6240\u5C5E\u5E94\u7528\u6846\u67B6\u7684\u5B98\u65B9\u793A\u8303\u91CC\uFF0C\u4E0D\u5E26\u8FD9\u4E00\u5C42\u65F6\u540C\u4E00\u5173\u5207\u600E\u4E48\u5904\u7406\uFF1A\u5148\u5199\u6846\u67B6\u540D\uFF0C\u518D\u94FE\u63A5\uFF0B\u539F\u53E5\uFF08\u793A\u8303\u91CC\u76F4\u63A5\u8BFB\u3001\u76F4\u63A5\u67E5\u3001\u4EA4\u7ED9\u6846\u67B6\u54EA\u9879\u8BBE\u7F6E\uFF09\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
9299
|
+
}),
|
|
9300
|
+
disposition: typebox_exports.Literal("\u5220\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86", { description: "official \u586B\u4E86\u5B57\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
9301
|
+
},
|
|
9302
|
+
{ additionalProperties: true }
|
|
9303
|
+
),
|
|
9304
|
+
typebox_exports.Object(
|
|
9305
|
+
{
|
|
9306
|
+
...mechanismRowBase,
|
|
9307
|
+
official: typebox_exports.Null({
|
|
9308
|
+
description: `\u793A\u8303\u4EE3\u7801\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u6216\u4F9D\u8D56\uFF1A\u586B null\uFF0C\u5E76\u5728 keeps \u672B\u5C3E\u5199\u6846\u67B6\u540D\u4E0E\u793A\u8303\u91CC\u90A3\u4E00\u5904\u3002${MECHANISM_FRAMEWORK_RULE}`
|
|
9309
|
+
}),
|
|
9310
|
+
disposition: typebox_exports.Literal("\u7559\uFF1A\u793A\u8303\u672C\u8EAB\u5C31\u4E3A\u540C\u4E00\u5173\u5207\u5E26\u540C\u6837\u7684\u5C42", { description: "official \u4E3A null\uFF0C\u8FD9\u4E00\u884C\u53EA\u80FD\u662F\u8FD9\u4E2A\u5904\u7F6E" })
|
|
9311
|
+
},
|
|
9312
|
+
{ additionalProperties: true }
|
|
9313
|
+
)
|
|
9314
|
+
],
|
|
9315
|
+
{ description: "\u4E24\u79CD\u884C\u5F62\uFF0C\u6CA1\u6709\u7B2C\u4E09\u79CD\uFF1A\u793A\u8303\u4E0D\u5E26\u8FD9\u4E00\u5C42\u4E5F\u5904\u7406\u5F97\u4E86\uFF08official \u586B\u5B57\uFF0C\u5220\uFF09\uFF1B\u793A\u8303\u672C\u8EAB\u5C31\u5E26\u540C\u6837\u7684\u5C42\uFF08official null\uFF0C\u7559\uFF09" }
|
|
9316
|
+
);
|
|
9284
9317
|
inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
9285
9318
|
typebox_exports.Object(
|
|
9286
9319
|
{
|
|
@@ -9291,6 +9324,9 @@ var init_review_submission = __esm({
|
|
|
9291
9324
|
}),
|
|
9292
9325
|
ticketComplexity: typebox_exports.Array(ticketComplexityRowSchema, {
|
|
9293
9326
|
description: "\u6574\u7968\u590D\u6742\u5EA6\uFF1A\u672C\u7968\u8D77\u70B9\uFF08\u672C\u5206\u652F\u4E0E\u5BB6\u65CF\u5206\u652F\u6216\u76EE\u6807\u5206\u652F\u7684 git merge-base\uFF09\u5230 HEAD \u7684\u751F\u4EA7\u4E0E\u6D4B\u8BD5\u51C0\u589E\uFF0C\u5BF9\u300A\u8D28\u91CF\u6CD5\u300B\u91CC\u6BCF\u4E00\u53E5\u8981\u6C42\u5220\u9664\u3001\u5408\u5E76\u3001\u590D\u7528\u6216\u4E0D\u53E6\u5199\u7684\u6761\u6587\u5404\u7B54\u4E00\u884C\u3002\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u6539\u52A8\u4E5F\u7B97\u5728\u5185\u3002"
|
|
9327
|
+
}),
|
|
9328
|
+
mechanisms: typebox_exports.Array(mechanismRowSchema, {
|
|
9329
|
+
description: "\u6574\u7968\u673A\u5236\u5C42\uFF1A\u672C\u7968\u8D77\u70B9\u5230 HEAD \u751F\u4EA7\u4EE3\u7801\u65B0\u589E\u7684\u6BCF\u4E00\u5904\u4F9D\u8D56\u884C\u3001\u8DE8\u8C03\u7528\u72B6\u6001\u3001\u9501\u3001\u7F13\u5B58\u88C5\u9970\u6216\u5305\u88C5\uFF0C\u5404\u4E00\u884C\uFF0C\u524D\u51E0\u8F6E\u5DF2\u7F72\u8FC7\u7684\u4E5F\u5217\uFF0C\u6D4B\u8BD5\u5939\u5177\u4E0D\u5217\uFF1B\u4E00\u5904\u6CA1\u6709\u4E3A\u7A7A\u6570\u7EC4\u3002"
|
|
9294
9330
|
})
|
|
9295
9331
|
},
|
|
9296
9332
|
{ additionalProperties: true }
|
|
@@ -78,6 +78,35 @@ export const ticketComplexityRowSchema = Type.Object({
|
|
|
78
78
|
description: "为这一条打开比对过的几处 path:line:hits 为空时写每处为什么不算,不能只写未发现;有命中时写比对了哪些地方、命中在哪找到",
|
|
79
79
|
}),
|
|
80
80
|
}, { additionalProperties: true });
|
|
81
|
+
/**
|
|
82
|
+
* Inspector whole-ticket mechanism row: one added line that keeps state across calls, locks, caches, or adds a dependency.
|
|
83
|
+
* Two row shapes, no third: the framework's example manages without the layer (official filled, 删), or it carries the
|
|
84
|
+
* same layer itself (official null, 留). The union sits inside the array item, never at the root (see reviewSubmissionSchema).
|
|
85
|
+
*/
|
|
86
|
+
const mechanismRowBase = {
|
|
87
|
+
where: Type.String({
|
|
88
|
+
description: "本票生产代码净增里的那一行 path:line:新增依赖行、跨调用保存的状态(模块级或实例级的字典、集合、列表、LRU 等)、锁、缓存装饰或包装;一行一条,照 diff 列,不合并;测试夹具不列",
|
|
89
|
+
}),
|
|
90
|
+
keeps: Type.String({ description: "这一行让什么东西在两次调用之间留下来,或挡住什么" }),
|
|
91
|
+
layer: Type.Integer({ description: "从本票起点到 HEAD,这是第几处这样的新增(含前几轮已署过的)" }),
|
|
92
|
+
};
|
|
93
|
+
const MECHANISM_FRAMEWORK_RULE = "框架是仓库 ADR 或票面点名的那一个(读写模型、Web、测试等框架),不是席位自选;实现这一层所用的库(ORM、缓存库、解析库)不是框架,它的 API 页或示例填不进这格——那答的是「这层怎么做」,这格问的是「示范不带这层怎么办」";
|
|
94
|
+
export const mechanismRowSchema = Type.Union([
|
|
95
|
+
Type.Object({
|
|
96
|
+
...mechanismRowBase,
|
|
97
|
+
official: Type.String({
|
|
98
|
+
description: `这段代码所属应用框架的官方示范里,不带这一层时同一关切怎么处理:先写框架名,再链接+原句(示范里直接读、直接查、交给框架哪项设置)。${MECHANISM_FRAMEWORK_RULE}`,
|
|
99
|
+
}),
|
|
100
|
+
disposition: Type.Literal("删:示范不带这一层也处理得了", { description: "official 填了字,这一行只能是这个处置" }),
|
|
101
|
+
}, { additionalProperties: true }),
|
|
102
|
+
Type.Object({
|
|
103
|
+
...mechanismRowBase,
|
|
104
|
+
official: Type.Null({
|
|
105
|
+
description: `示范代码本身就为同一关切带同样的状态、锁、缓存或依赖:填 null,并在 keeps 末尾写框架名与示范里那一处。${MECHANISM_FRAMEWORK_RULE}`,
|
|
106
|
+
}),
|
|
107
|
+
disposition: Type.Literal("留:示范本身就为同一关切带同样的层", { description: "official 为 null,这一行只能是这个处置" }),
|
|
108
|
+
}, { additionalProperties: true }),
|
|
109
|
+
], { description: "两种行形,没有第三种:示范不带这一层也处理得了(official 填字,删);示范本身就带同样的层(official null,留)" });
|
|
81
110
|
/** Inspector generation schema: shared review face plus the required whole-ticket complexity answer (package records as-is). */
|
|
82
111
|
export const inspectorSubmissionSchema = withTerminatingOutputDeclarations(Type.Object({
|
|
83
112
|
status: reviewStatusField,
|
|
@@ -88,4 +117,7 @@ export const inspectorSubmissionSchema = withTerminatingOutputDeclarations(Type.
|
|
|
88
117
|
ticketComplexity: Type.Array(ticketComplexityRowSchema, {
|
|
89
118
|
description: "整票复杂度:本票起点(本分支与家族分支或目标分支的 git merge-base)到 HEAD 的生产与测试净增,对《质量法》里每一句要求删除、合并、复用或不另写的条文各答一行。前几轮已署过的改动也算在内。",
|
|
90
119
|
}),
|
|
120
|
+
mechanisms: Type.Array(mechanismRowSchema, {
|
|
121
|
+
description: "整票机制层:本票起点到 HEAD 生产代码新增的每一处依赖行、跨调用状态、锁、缓存装饰或包装,各一行,前几轮已署过的也列,测试夹具不列;一处没有为空数组。",
|
|
122
|
+
}),
|
|
91
123
|
}, { additionalProperties: true }));
|
package/package.json
CHANGED
package/souls/inspector.md
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
本腿判完,再审整票:本票从起点到 HEAD 的生产与测试净增,还剩哪些能删、能合并,按 ticketComplexity 逐条答。有一条命中就封驳;封驳按那句条文写类、列全命中处,不用某一处实例的说法。答无也要拿出比对过的地方:写明为这一条打开比对了哪几处、为什么不算。再从整票里挑出最可疑的一处写进 suspect,说清为什么留着;说不清就是命中。
|
|
12
12
|
|
|
13
|
+
机制按层数,不按行数:票内生产代码每一处新增的跨调用状态、锁、缓存、依赖,各列一行进 mechanisms(测试夹具不是机制层,不列),到这段代码所属应用框架的官方示范里看:不带这一层时,示范怎么处理同一关切。示范不带这一层也处理得了的,就是《质量法》「自撰机制是最后手段」那句的命中,这一行的处置只能是删,判删不判修;留只给示范本身就带同样的层的那一行;框架是 ADR 或票面点名的那一个,不是实现这一层所用的库;实现这一层所用的库自己的文档答的是「这层怎么做」,答不了「示范不带这层怎么办」,不算。一层层叠上去的修法,每多一层就回头看最早那一层该不该在。
|
|
14
|
+
|
|
13
15
|
取证与同类复核依《审法》;复杂度、测试质量与成本依《质量法》。
|
|
14
16
|
|
|
15
17
|
封驳写清现象,原因,具体问题。根因不明先指诊断。
|
package/src/review-submission.ts
CHANGED
|
@@ -112,6 +112,49 @@ export const ticketComplexityRowSchema = Type.Object(
|
|
|
112
112
|
{ additionalProperties: true },
|
|
113
113
|
);
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Inspector whole-ticket mechanism row: one added line that keeps state across calls, locks, caches, or adds a dependency.
|
|
117
|
+
* Two row shapes, no third: the framework's example manages without the layer (official filled, 删), or it carries the
|
|
118
|
+
* same layer itself (official null, 留). The union sits inside the array item, never at the root (see reviewSubmissionSchema).
|
|
119
|
+
*/
|
|
120
|
+
const mechanismRowBase = {
|
|
121
|
+
where: Type.String({
|
|
122
|
+
description:
|
|
123
|
+
"本票生产代码净增里的那一行 path:line:新增依赖行、跨调用保存的状态(模块级或实例级的字典、集合、列表、LRU 等)、锁、缓存装饰或包装;一行一条,照 diff 列,不合并;测试夹具不列",
|
|
124
|
+
}),
|
|
125
|
+
keeps: Type.String({ description: "这一行让什么东西在两次调用之间留下来,或挡住什么" }),
|
|
126
|
+
layer: Type.Integer({ description: "从本票起点到 HEAD,这是第几处这样的新增(含前几轮已署过的)" }),
|
|
127
|
+
} as const;
|
|
128
|
+
|
|
129
|
+
const MECHANISM_FRAMEWORK_RULE =
|
|
130
|
+
"框架是仓库 ADR 或票面点名的那一个(读写模型、Web、测试等框架),不是席位自选;实现这一层所用的库(ORM、缓存库、解析库)不是框架,它的 API 页或示例填不进这格——那答的是「这层怎么做」,这格问的是「示范不带这层怎么办」";
|
|
131
|
+
|
|
132
|
+
export const mechanismRowSchema = Type.Union(
|
|
133
|
+
[
|
|
134
|
+
Type.Object(
|
|
135
|
+
{
|
|
136
|
+
...mechanismRowBase,
|
|
137
|
+
official: Type.String({
|
|
138
|
+
description: `这段代码所属应用框架的官方示范里,不带这一层时同一关切怎么处理:先写框架名,再链接+原句(示范里直接读、直接查、交给框架哪项设置)。${MECHANISM_FRAMEWORK_RULE}`,
|
|
139
|
+
}),
|
|
140
|
+
disposition: Type.Literal("删:示范不带这一层也处理得了", { description: "official 填了字,这一行只能是这个处置" }),
|
|
141
|
+
},
|
|
142
|
+
{ additionalProperties: true },
|
|
143
|
+
),
|
|
144
|
+
Type.Object(
|
|
145
|
+
{
|
|
146
|
+
...mechanismRowBase,
|
|
147
|
+
official: Type.Null({
|
|
148
|
+
description: `示范代码本身就为同一关切带同样的状态、锁、缓存或依赖:填 null,并在 keeps 末尾写框架名与示范里那一处。${MECHANISM_FRAMEWORK_RULE}`,
|
|
149
|
+
}),
|
|
150
|
+
disposition: Type.Literal("留:示范本身就为同一关切带同样的层", { description: "official 为 null,这一行只能是这个处置" }),
|
|
151
|
+
},
|
|
152
|
+
{ additionalProperties: true },
|
|
153
|
+
),
|
|
154
|
+
],
|
|
155
|
+
{ description: "两种行形,没有第三种:示范不带这一层也处理得了(official 填字,删);示范本身就带同样的层(official null,留)" },
|
|
156
|
+
);
|
|
157
|
+
|
|
115
158
|
/** Inspector generation schema: shared review face plus the required whole-ticket complexity answer (package records as-is). */
|
|
116
159
|
export const inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
117
160
|
Type.Object(
|
|
@@ -125,6 +168,10 @@ export const inspectorSubmissionSchema = withTerminatingOutputDeclarations(
|
|
|
125
168
|
description:
|
|
126
169
|
"整票复杂度:本票起点(本分支与家族分支或目标分支的 git merge-base)到 HEAD 的生产与测试净增,对《质量法》里每一句要求删除、合并、复用或不另写的条文各答一行。前几轮已署过的改动也算在内。",
|
|
127
170
|
}),
|
|
171
|
+
mechanisms: Type.Array(mechanismRowSchema, {
|
|
172
|
+
description:
|
|
173
|
+
"整票机制层:本票起点到 HEAD 生产代码新增的每一处依赖行、跨调用状态、锁、缓存装饰或包装,各一行,前几轮已署过的也列,测试夹具不列;一处没有为空数组。",
|
|
174
|
+
}),
|
|
128
175
|
},
|
|
129
176
|
{ additionalProperties: true },
|
|
130
177
|
),
|