Files
Cyrene_v2/frontend/web/src/admin/modules/flow/FlowSessionPicker.tsx
T
AskaEth 8e56163418
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled
feat(admin): Flow 页会话选择器 + 修「泳道 0」文案(纯前端)
- 新增 flow/flowSession.ts(白名单判定与后端 flowSessionAllowed 逐条对齐 + 选项构造 + 选中回落 web + 取数接线 flowPageData)+ FlowSessionPicker.tsx
- Flow.tsx:图不再读兼容字段 s.flowGraph / activeSessionId,改由 flowPageData 从 flowGraphs[选中会话] 取;选择器只在给了 onSelectSession 时渲染(既有调用形态不变)
- 修文案:0 泳道时统计卡显示「—」+「本回合未派发子代理」(原先 0 紧挨「泳道」会被读成「泳道 0」)
- 标签单一出处:FlowSnapshotHint 改用 flowSessionLabel(避免与选择器漂移)
- 测试 33 + 21 checks;变异:取图改回主会话桶 / 选项去掉 sess-backthink / 泳道卡还原 / 放行白名单外会话 ⇒ 全红
- 如实登记覆盖缺口:组件调用点那一行无法自动化(无 jsdom,zustand SSR 快照取不到真实 state)⇒ 有一条变异打不红,靠「取图路径唯一 + 注释」缓解
- ⚠️ 行为变化(任务书要求):默认选中固定为 web,不再随 activeSessionId 漂移(原先跟着激活会话走)——一行可改
2026-10-05 20:00:01 +08:00

50 lines
2.0 KiB
TypeScript

import type { FlowSessionOption } from "./flowSession";
/**
* 会话选择器(切片 FV1;design/19 §2)—— 「看哪个会话的链路图」变成可切的。
* props 驱动(不读 store),因此可被真实渲染测试直接喂输入(同 `FlowTurnPicker`)。
*
* 选项**只含发布会话白名单内**的会话(web / sess-backthink / web: 次级会话)。白名单外的
* 会话(群聊 / 陌生人的 `sess-*`)永远没有链路图,列出来只会让用户点了看到空态 ——
* 假承诺不如不列,诚实说明写在下面那行小字里。
*/
export function FlowSessionPicker({
options,
value,
onSelect,
}: {
options: readonly FlowSessionOption[];
value: string;
onSelect: (sessionId: string) => void;
}): React.ReactNode {
return (
<div className="space-y-1.5">
<div className="flex flex-wrap items-center gap-2 text-xs text-[var(--mu-text-lo)]">
<label htmlFor="flow-session-select" className="font-medium">
会话
</label>
<select
id="flow-session-select"
value={value}
onChange={(e) => onSelect(e.target.value)}
className="rounded-[var(--mu-radius-sm)] border border-[var(--mu-glass-border)] bg-[var(--mu-surface-2)] px-2 py-1 text-xs text-[var(--mu-text-mid)]"
>
{options.map((o) => (
<option key={o.id} value={o.id}>
{o.label}
</option>
))}
</select>
<span className="text-[11px] text-[var(--mu-text-lo)]">
换会话后,本页的图 / 轮次列表都跟着切
</span>
</div>
<p className="text-[11px] text-[var(--mu-text-lo)]">
只列发布会话白名单内的会话(主会话 web / 自主思考 sess-backthink / 你的次级会话
web:*)。白名单之外的会话(群聊 / 陌生人的 sess-*)永远没有链路图,因此不在这个列表里
—— 那不是缺陷。
</p>
</div>
);
}