feat(awooop): close autonomous learning loop readback
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m47s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped

This commit is contained in:
Your Name
2026-06-29 16:52:07 +08:00
parent 8397178525
commit 9ca6eec2ee
7 changed files with 479 additions and 5 deletions

View File

@@ -97,6 +97,16 @@ type RuntimeReceiptReadback = {
required_stage_missing_count?: number | null;
} | null;
} | null;
learning_loop?: {
status?: string | null;
missing_required_stage_ids?: string[] | null;
rollups?: {
stage_count?: number | null;
required_stage_present_count?: number | null;
required_stage_missing_count?: number | null;
similar_case_source_total?: number | null;
} | null;
} | null;
work_item_progress?: {
rollups?: {
work_item_count?: number | null;
@@ -228,6 +238,8 @@ export function AutonomousRuntimeReceiptPanel({
const logRollups = logTaxonomy?.rollups ?? {};
const decisionRollups = readback?.agent_decision_wiring?.rollups ?? {};
const decisionMissing = readback?.agent_decision_wiring?.missing_required_stage_ids ?? [];
const learningRollups = readback?.learning_loop?.rollups ?? {};
const learningMissing = readback?.learning_loop?.missing_required_stage_ids ?? [];
const workItemRollups = readback?.work_item_progress?.rollups ?? {};
const latestFlow = readback?.latest_flow_closure;
const rollups = payload?.rollups ?? {};
@@ -306,6 +318,31 @@ export function AutonomousRuntimeReceiptPanel({
),
}),
},
{
key: "learning",
label: t("metrics.learning"),
value: toNumber(
rollups.live_learning_loop_required_present_count
?? learningRollups.required_stage_present_count
),
recent: toNumber(
rollups.live_learning_loop_stage_count
?? learningRollups.stage_count
),
icon: BookOpenCheck,
caption: t("traceCaption", {
count: numberValue(
rollups.live_learning_loop_stage_count
?? learningRollups.stage_count
?? 0
),
missing: numberValue(
rollups.live_learning_loop_required_missing_count
?? learningRollups.required_stage_missing_count
?? learningMissing.length
),
}),
},
{
key: "apply",
label: t("metrics.apply"),
@@ -354,6 +391,10 @@ export function AutonomousRuntimeReceiptPanel({
decisionRollups.required_stage_missing_count,
decisionRollups.required_stage_present_count,
decisionRollups.stage_count,
learningMissing.length,
learningRollups.required_stage_missing_count,
learningRollups.required_stage_present_count,
learningRollups.stage_count,
logRollups.classified_event_total,
missingStages.length,
readback,
@@ -415,7 +456,7 @@ export function AutonomousRuntimeReceiptPanel({
</div>
</div>
<div className="grid grid-cols-2 gap-px bg-[#e0ddd4] md:grid-cols-5 xl:grid-cols-11">
<div className="grid grid-cols-2 gap-px bg-[#e0ddd4] md:grid-cols-5 xl:grid-cols-12">
<div className="bg-white px-4 py-3">
<p className="text-xs font-semibold text-[#77736a]">{t("metrics.loop")}</p>
<div className="mt-2 flex items-center gap-2">