{zh ? "团队成果" : "Team results"}
@@ -91,6 +103,7 @@ export function GoalTeamResults({sessionId, zh, refreshKey}: {sessionId: string;
{page.has_more && page.next_cursor ? : null}
: null}
{selection ?
+ {adoptionSummary}
void read(operationId)}/>
{selection.result.artifacts && selection.result.artifacts.length > 1 ? : null}
- {zh ? "验收与采用关系" : "Acceptance and adoption"}
void read(operationId)}/>
: null}
;
diff --git a/examples/personal-workspace-browser/team-evidence.mjs b/examples/personal-workspace-browser/team-evidence.mjs
index 8010ea3bb..1a27cfd80 100644
--- a/examples/personal-workspace-browser/team-evidence.mjs
+++ b/examples/personal-workspace-browser/team-evidence.mjs
@@ -22,6 +22,7 @@ export const teamEvidenceScenario = {
const results = page.getByRole("region", {name: "团队成果", exact: true});
// Accepted report opens in the original conversation without an extra click.
await results.getByRole("table").waitFor();
+ await results.getByText("尚无采用记录 · 查看验收与版本依据", {exact: true}).waitFor();
assert.equal(await results.getByLabel("当前报告").evaluate(el => el === document.activeElement), false, "Automatic readback must not steal focus");
const reads = api.loopxModeRequests.filter(row => row.operation === "read").length;
await results.getByRole("button", {name: "刷新成果", exact: true}).click();
@@ -66,6 +67,21 @@ export const teamEvidenceScenario = {
assert.equal(await results.getByRole("table").count(), 0);
assert.equal(await results.getByText("newer unverified report").count(), 0);
await page.unroute("**/api/chat/sessions/*/loopx", changedReport);
+ mode.fixtureAdoptionState = "current";
+ await results.getByRole("button", {name: "刷新成果", exact: true}).click();
+ await results.getByText("已记录采用 · 查看后续结果", {exact: true}).waitFor();
+ await page.screenshot({path: resolve(outputDir, "team-adoption-source.png"), animations: "disabled"});
+ await results.getByText("已记录采用 · 查看后续结果", {exact: true}).click();
+ await results.getByRole("button", {name: "查看后续结果", exact: true}).click();
+ await results.getByText("Reviewed cash allocation").waitFor();
+ await results.getByText("此结果关联来源版本 · 查看依据", {exact: true}).waitFor();
+ await page.screenshot({path: resolve(outputDir, "team-adoption-return.png"), animations: "disabled"});
+ assert.equal(api.turnRequests.length, 0, "Following adopted results must not start a model");
+ await results.getByRole("button", {name: /local-analyst · report.md/}).click();
+ mode.fixtureAdoptionState = "unavailable";
+ await results.getByRole("button", {name: "刷新成果", exact: true}).click();
+ await results.getByText("采用证据无法核验 · 查看版本依据", {exact: true}).waitFor();
+ delete mode.fixtureAdoptionState;
await page.getByRole("button", {name: "团队执行情况", exact: true}).click();
const dialog = page.getByRole("dialog", {name: "团队执行情况"});
const openEvidence = dialog.getByRole("button", {name: "查看证据与反馈", exact: true});
diff --git a/loopx/web/chat/asset-retention.json b/loopx/web/chat/asset-retention.json
index 43ca88ff5..c743e582d 100644
--- a/loopx/web/chat/asset-retention.json
+++ b/loopx/web/chat/asset-retention.json
@@ -13,8 +13,8 @@
"assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2",
"assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
"assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
- "assets/index-BGlmetKk.js",
- "assets/index-C_Imc7ZG.css"
+ "assets/index-Bm8PVjll.js",
+ "assets/index-DTJTDfC1.css"
],
[
"assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2",
@@ -28,7 +28,7 @@
"assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2",
"assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
"assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
- "assets/index-CFEaAATG.js",
+ "assets/index-BGlmetKk.js",
"assets/index-C_Imc7ZG.css"
]
]
diff --git a/loopx/web/chat/assets/index-CFEaAATG.js b/loopx/web/chat/assets/index-Bm8PVjll.js
similarity index 83%
rename from loopx/web/chat/assets/index-CFEaAATG.js
rename to loopx/web/chat/assets/index-Bm8PVjll.js
index 14b088ac0..744b7dbc8 100644
--- a/loopx/web/chat/assets/index-CFEaAATG.js
+++ b/loopx/web/chat/assets/index-Bm8PVjll.js
@@ -127,10 +127,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
`),r=[],i=[],a=()=>{i.length>0&&(r.push({type:`paragraph`,lines:i}),i=[])},o=0;for(;o