fix(ui): show ssh repair receipt contract in work items
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 31s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
AWOOOI Harbor 110 Local Repair / workflow-shape (push) Successful in 0s
AWOOOI Harbor 110 Local Repair / harbor-110-local-repair (push) Failing after 4m21s
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 31s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
AWOOOI Harbor 110 Local Repair / workflow-shape (push) Successful in 0s
AWOOOI Harbor 110 Local Repair / harbor-110-local-repair (push) Failing after 4m21s
This commit is contained in:
@@ -9047,6 +9047,10 @@
|
|||||||
"groups": "Groups",
|
"groups": "Groups",
|
||||||
"contract": "Contract"
|
"contract": "Contract"
|
||||||
},
|
},
|
||||||
|
"receipt": {
|
||||||
|
"inputs": "Receipt inputs",
|
||||||
|
"outputs": "Receipt outputs"
|
||||||
|
},
|
||||||
"tagLabels": {
|
"tagLabels": {
|
||||||
"projectId": "Project",
|
"projectId": "Project",
|
||||||
"product": "Product",
|
"product": "Product",
|
||||||
|
|||||||
@@ -9047,6 +9047,10 @@
|
|||||||
"groups": "分群鍵",
|
"groups": "分群鍵",
|
||||||
"contract": "Contract"
|
"contract": "Contract"
|
||||||
},
|
},
|
||||||
|
"receipt": {
|
||||||
|
"inputs": "Receipt inputs",
|
||||||
|
"outputs": "Receipt outputs"
|
||||||
|
},
|
||||||
"tagLabels": {
|
"tagLabels": {
|
||||||
"projectId": "專案",
|
"projectId": "專案",
|
||||||
"product": "產品",
|
"product": "產品",
|
||||||
|
|||||||
@@ -1031,6 +1031,10 @@ type PriorityWorkOrderResponse = {
|
|||||||
ai_loop_current_blocker_id?: string | null;
|
ai_loop_current_blocker_id?: string | null;
|
||||||
ai_loop_current_blocker_log_source_tag_count?: number | null;
|
ai_loop_current_blocker_log_source_tag_count?: number | null;
|
||||||
ai_loop_current_blocker_log_source_tag_keys?: string[] | null;
|
ai_loop_current_blocker_log_source_tag_keys?: string[] | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_input_count?: number | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_input_ids?: string[] | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_output_contract_count?: number | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_output_ids?: string[] | null;
|
||||||
ai_loop_log_source_grouping_key_count?: number | null;
|
ai_loop_log_source_grouping_key_count?: number | null;
|
||||||
ai_loop_log_source_grouping_keys?: string[] | null;
|
ai_loop_log_source_grouping_keys?: string[] | null;
|
||||||
ai_loop_log_source_tagging_contract_count?: number | null;
|
ai_loop_log_source_tagging_contract_count?: number | null;
|
||||||
@@ -1039,6 +1043,8 @@ type PriorityWorkOrderResponse = {
|
|||||||
evidence?: {
|
evidence?: {
|
||||||
ai_loop_current_blocker_log_source_tags?: AiLoopLogSourceTag[] | null;
|
ai_loop_current_blocker_log_source_tags?: AiLoopLogSourceTag[] | null;
|
||||||
ai_loop_log_source_tagging_contract?: AiLoopLogSourceContract[] | null;
|
ai_loop_log_source_tagging_contract?: AiLoopLogSourceContract[] | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_input_ids?: string[] | null;
|
||||||
|
ai_loop_current_blocker_harbor_recovery_receipt_output_ids?: string[] | null;
|
||||||
} | null;
|
} | null;
|
||||||
}>;
|
}>;
|
||||||
};
|
};
|
||||||
@@ -7784,6 +7790,14 @@ function AiLoopLogSourceTagsPanel({
|
|||||||
const contracts = evidence?.ai_loop_log_source_tagging_contract ?? [];
|
const contracts = evidence?.ai_loop_log_source_tagging_contract ?? [];
|
||||||
const groupingKeys = priority?.summary?.ai_loop_log_source_grouping_keys ?? [];
|
const groupingKeys = priority?.summary?.ai_loop_log_source_grouping_keys ?? [];
|
||||||
const summary = priority?.summary;
|
const summary = priority?.summary;
|
||||||
|
const receiptInputIds =
|
||||||
|
summary?.ai_loop_current_blocker_harbor_recovery_receipt_input_ids ??
|
||||||
|
evidence?.ai_loop_current_blocker_harbor_recovery_receipt_input_ids ??
|
||||||
|
[];
|
||||||
|
const receiptOutputIds =
|
||||||
|
summary?.ai_loop_current_blocker_harbor_recovery_receipt_output_ids ??
|
||||||
|
evidence?.ai_loop_current_blocker_harbor_recovery_receipt_output_ids ??
|
||||||
|
[];
|
||||||
const labelMap: Record<string, string> = {
|
const labelMap: Record<string, string> = {
|
||||||
project_id: t("tagLabels.projectId"),
|
project_id: t("tagLabels.projectId"),
|
||||||
product: t("tagLabels.product"),
|
product: t("tagLabels.product"),
|
||||||
@@ -7816,6 +7830,24 @@ function AiLoopLogSourceTagsPanel({
|
|||||||
value: summary?.ai_loop_log_source_tagging_contract_count ?? contracts.length,
|
value: summary?.ai_loop_log_source_tagging_contract_count ?? contracts.length,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
const receiptMetrics = [
|
||||||
|
{
|
||||||
|
key: "inputs",
|
||||||
|
label: t("receipt.inputs"),
|
||||||
|
value:
|
||||||
|
summary?.ai_loop_current_blocker_harbor_recovery_receipt_input_count ??
|
||||||
|
receiptInputIds.length,
|
||||||
|
ids: receiptInputIds,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "outputs",
|
||||||
|
label: t("receipt.outputs"),
|
||||||
|
value:
|
||||||
|
summary?.ai_loop_current_blocker_harbor_recovery_receipt_output_contract_count ??
|
||||||
|
receiptOutputIds.length,
|
||||||
|
ids: receiptOutputIds,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section
|
<section
|
||||||
@@ -7861,6 +7893,33 @@ function AiLoopLogSourceTagsPanel({
|
|||||||
value: summary?.ai_loop_current_blocker_id ?? "--",
|
value: summary?.ai_loop_current_blocker_id ?? "--",
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
<div className="mt-3 grid gap-2">
|
||||||
|
{receiptMetrics.map((metric) => (
|
||||||
|
<div
|
||||||
|
key={metric.key}
|
||||||
|
className="border border-[#d8d3c7] bg-white px-3 py-2"
|
||||||
|
>
|
||||||
|
<div className="flex items-center justify-between gap-3">
|
||||||
|
<span className="text-[11px] font-semibold text-[#77736a]">
|
||||||
|
{metric.label}
|
||||||
|
</span>
|
||||||
|
<span className="font-mono text-sm font-semibold text-[#141413]">
|
||||||
|
{loading ? "--" : metric.value}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="mt-2 flex flex-wrap gap-1.5">
|
||||||
|
{metric.ids.slice(0, 6).map((id) => (
|
||||||
|
<span
|
||||||
|
key={id}
|
||||||
|
className="border border-[#d8d3c7] bg-[#faf9f3] px-2 py-0.5 font-mono text-[10px] text-[#5f5b52]"
|
||||||
|
>
|
||||||
|
{id}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="bg-white p-4">
|
<div className="bg-white p-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user