Archived
Feat/activity l3 detail #1
@@ -332,7 +332,7 @@ function Detail({ route, nav }: { route: Route; nav: Nav }) {
|
||||
case 'actd':
|
||||
return <ActvPage id={route.id} nav={nav} />;
|
||||
case 'acti':
|
||||
return <ActiPage id={route.id} nav={nav} />;
|
||||
return <ActiPage id={route.id} />;
|
||||
case 'tool':
|
||||
return <ToolPage id={route.id} />;
|
||||
case 'obj':
|
||||
|
||||
@@ -724,10 +724,11 @@ const STEP_RES_TONE: Readonly<Record<DemoStep['res'], string>> = {
|
||||
/**
|
||||
* L3 · 实例详情 —— 一次运行的完整视图(2026-08-26 规划,用户确认后落地):
|
||||
* 主从 2:1(DESIGN-SPEC §9)—— 左「动作过程记录」是主角(追溯与验收的落点),
|
||||
* 右栏输入/输出是辅助;编辑与删除收在这一层(功能 5/6),不污染清单。
|
||||
* 右栏输入/输出是辅助。实例不可删除、不可编辑(2026-08-26 用户定)——
|
||||
* 编辑/删除入口撤掉,唯一的动作是进行中的「终止活动」。
|
||||
* 数据为静态占位,结构按将来接口的形状铺。
|
||||
*/
|
||||
export function ActiPage({ id, nav }: { id: string; nav: Nav }) {
|
||||
export function ActiPage({ id }: { id: string }) {
|
||||
const [aid, iid] = id.split(':');
|
||||
const a = DEMO_ACTIVITIES.find((x) => x.id === aid);
|
||||
const inst = a !== undefined ? demoInstances(a.owner).find((x) => x.id === iid) : undefined;
|
||||
@@ -735,7 +736,7 @@ export function ActiPage({ id, nav }: { id: string; nav: Nav }) {
|
||||
term 记下终止时刻 —— 终止的过程面与「自己跑挂」不同(当前步记「已终止」,不是「附件缺失」那种失败原因) */
|
||||
const [term, setTerm] = useState<string | undefined>(undefined);
|
||||
if (a === undefined || inst === undefined) {
|
||||
return <Note tone="warn">实例不存在 —— 它可能已被删除,从面包屑返回活动详情看看。</Note>;
|
||||
return <Note tone="warn">实例不存在 —— 它不在该活动的清单里,从面包屑返回活动详情看看。</Note>;
|
||||
}
|
||||
const state: InstanceState = term !== undefined ? '失败' : inst.state;
|
||||
const steps = term !== undefined ? terminatedSteps(inst.startedAt) : demoSteps(state, inst.startedAt);
|
||||
@@ -771,9 +772,9 @@ export function ActiPage({ id, nav }: { id: string; nav: Nav }) {
|
||||
<Chip ico="cpu">{a.llm}</Chip>
|
||||
</>
|
||||
}
|
||||
desc="一次运行的完整视图:输入 / 过程 / 输出 / 状态。编辑与删除收在这一层,清单页不受打扰。"
|
||||
desc="一次运行的完整视图:输入 / 过程 / 输出 / 状态 —— 实例不可编辑、不可删除,进行中的运行可终止。"
|
||||
acts={[
|
||||
/* 头部动作(2026-08-26 规划):进行中可终止(二次确认);编辑本期只留入口(编什么待定);删除二次确认(用户标注存疑,先按规划做) */
|
||||
/* 唯一动作(2026-08-26 用户定:实例不许删、不许编):进行中可终止,二次确认 */
|
||||
...(state === '进行中'
|
||||
? [
|
||||
{
|
||||
@@ -790,19 +791,6 @@ export function ActiPage({ id, nav }: { id: string; nav: Nav }) {
|
||||
} satisfies ActSpec,
|
||||
]
|
||||
: []),
|
||||
{ label: '编辑实例', ico: 'pencil-line', disabled: true },
|
||||
{
|
||||
label: '删除实例',
|
||||
ico: 'trash-2',
|
||||
danger: true,
|
||||
ask: {
|
||||
title: `确认删除实例 ${inst.id}?`,
|
||||
note: '删除后,这次运行的输入 / 过程 / 输出记录一并移除,清单里也不再出现。',
|
||||
impact: { who: '该实例及其全部运行记录', undo: '不可撤销 —— 删除即清空', when: '确认后立即生效(本期前端演示,接口对接后落库)' },
|
||||
okLabel: '确认删除',
|
||||
onOk: () => nav.push({ k: 'actd', id: a.id }),
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
{reason !== undefined && <Note tone="warn">{reason}</Note>}
|
||||
|
||||
@@ -89,7 +89,8 @@ L1(模块首页 · 活动清单)需要一个**标签页**切换,因为活
|
||||
- 2026-08-25 · **文案口径(用户定)**:创建实例 → **启动活动**;实例清单 → **历史活动**;停止 → **终止活动**。
|
||||
- 2026-08-26 · **L2 历史活动改列表(用户定)**:卡片式清单撤掉,改表格列(实例 / 负责人 / 输入 / 输出 / 启动时间 / 状态 / 操作,操作栏带标题),隔行浅斑马 + 悬停亮行,行内操作(终止活动 / 查看详情)常驻;分页单页 8 条不变。
|
||||
- 2026-08-26 · **L2 历史活动加检索(用户定)**:列表上方检索条 —— 条件下拉四选(实例 / 负责人 / 状态 / 启动时间),控件随条件换:实例=按实例号模糊输入、负责人=人员下拉(候选取自现有实例,接接口后换人员接口)、状态=五态下拉、启动时间=日期段(含两端整日);筛中显示「筛出 X / 共 Y」并可一键清空;分页按筛出的集合走。
|
||||
- 2026-08-26 · **L3 实例详情已落地(静态占位版,用户确认规划后实施)**:路由 `acti`(id = `活动id:实例号`),L2 行内「查看详情」接入。布局 = 主从 2:1(DESIGN-SPEC §9):左侧「动作过程记录」竖时间线是主角(五步节点流:输入接收 → 要素结构化 → 定价测算 → **负责人验收** → 输出归档 —— 验收永远留给人,对应人机分工),当前步呼吸高亮、未到达空心灰显、连接线成不间断竖轨;右栏输入(键值)/ 输出(文件行,下载随接口开放)。头部 = 状态丸 + 负责人/启动/结束·耗时/专属 LLM;驳回/失败出原因说明块;头部动作三个:终止活动(进行中才有,二次确认)、编辑实例(disabled 占位)、删除实例(二次确认 —— 删除存疑仍悬着,先按规划做进 UI)。终止后的过程面与「自己跑挂」区分:当前步记「已终止」而非失败原因。数据仍是静态假数据。
|
||||
- 2026-08-26 · **L3 实例详情已落地(静态占位版,用户确认规划后实施)**:路由 `acti`(id = `活动id:实例号`),L2 行内「查看详情」接入。布局 = 主从 2:1(DESIGN-SPEC §9):左侧「动作过程记录」竖时间线是主角(五步节点流:输入接收 → 要素结构化 → 定价测算 → **负责人验收** → 输出归档 —— 验收永远留给人,对应人机分工),当前步呼吸高亮、未到达空心灰显、连接线成不间断竖轨;右栏输入(键值)/ 输出(文件行,下载随接口开放)。头部 = 状态丸 + 负责人/启动/结束·耗时/专属 LLM;驳回/失败出原因说明块;终止后的过程面与「自己跑挂」区分:当前步记「已终止」而非失败原因。数据仍是静态假数据。
|
||||
- 2026-08-26 · **实例不可删除、不可编辑(用户定,推翻 L3 原规划)**:L3 的编辑/删除入口撤掉,唯一动作是进行中的「终止活动」(二次确认);六功能里实例的「编辑/删除」两项就此划掉,待确认问题里的两条(编辑指什么 / 删除是否放开)同时关闭。
|
||||
|
||||
## 三、功能表(整理稿)
|
||||
|
||||
@@ -100,6 +101,6 @@ L1(模块首页 · 活动清单)需要一个**标签页**切换,因为活
|
||||
- ~~活动模块里的「设计」与设计中心「活动库」是什么关系?~~ **已答(2026-08-25)**:不再有「设计中心 vs 运营中心」的分工 —— 设计并入运营,活动模块自带设计能力;设计中心各区后续按同思路并入运营中心重做。
|
||||
- ~~「设计」在活动模块里做到什么程度?~~ **已答(2026-08-25)**:六功能已界定 —— 活动(定义)的创建与展示 + 实例的创建/展示/编辑/删除;定义只许创建不许编删,创建要过审核。
|
||||
- 活动创建的**审核**:谁来审、在模块内审还是别处、审什么(输入输出契约的合理性?)?(待用户展开)
|
||||
- 实例的**编辑**具体指编辑什么:实例的输入数据?进行中的干预(暂停/叫停)?还是产出修正?(待用户展开)
|
||||
- 实例删除是否真放开 —— 用户已标注存疑,先规划,后续按需求调。(悬着,不阻塞)
|
||||
- 实例的**编辑**~~具体指编辑什么~~:**已答(2026-08-26):实例不可编辑**,入口不做。
|
||||
- 实例删除~~是否真放开~~:**已答(2026-08-26):实例不可删除**,入口不做;六功能只剩实例的创建/展示。
|
||||
- 「运营」侧还要不要监控/验收类功能(此前提过负责人验收规划与统计产出)—— 六功能里未直接出现,是否归在「实例的展示/编辑」里,还是另有入口?(待用户展开)
|
||||
|
||||
Reference in New Issue
Block a user