Archived
进度暂存:启动抽屉加固定参数「责任人」(名册下拉、默认当前登录人);接口文档 §5 加 ownerId 固定字段;需求文档记 2026-08-27 两条决策
CI / ci (push) Failing after 10s
CI / ci (push) Failing after 10s
This commit is contained in:
+6
-1
@@ -203,6 +203,7 @@ iframe 带不了 Authorization 头,走票据(`GET /api/auth/ticket`,ADR-012 §6)
|
||||
```json
|
||||
{
|
||||
"idempotencyKey": "01J9…",
|
||||
"ownerId": "8f3c1a2b-6c1e-4b3a-9f0e-2d5c7a1b9e44",
|
||||
"params": {
|
||||
"customer_id": "cust-itelma",
|
||||
"request_description": "车身控制器询价 · 3 项物料,期望 9 月交期",
|
||||
@@ -212,6 +213,9 @@ iframe 带不了 Authorization 头,走票据(`GET /api/auth/ticket`,ADR-012 §6)
|
||||
}
|
||||
```
|
||||
|
||||
**`ownerId`(必填,2026-08-27 用户定)是启动契约的固定字段,不进 §4 参数表** —— 每个活动启动都要指定这次实例的**责任人**:负责人验收、存在性检查派出的数据工单都落到责任人身上。候选名单 = 既有 `GET /api/gov/staff`(前端只列 `state='active'` 的);前端默认填当前登录人,允许改。服务端要验:ownerId 是名册里在职的人(400),不验「是不是启动人自己」(代别人启动是合法场景)。
|
||||
启动成功后,实例视图(§3/§6)里的 `owner` 就是它。
|
||||
|
||||
→ 200 一条实例详情(同 §6)。**同一 `idempotencyKey` 重放返回第一次创建的实例,不起第二个**(前端每开一次抽屉生成一枚;重复点提交、网络重试都靠它挡住)。
|
||||
`params` 的键值形状由 §4 参数表决定:`list` 回字符串数组,其余回字符串;`select` 回 `options` 里某个 `value`;**`combo` 回候选的 `value` 或新增的原样字符串,两种都合法**。
|
||||
412:活动已禁用(先激活再启动)。400:缺必填 / 类型不符 / select 的值不在 options 里(**combo 不适用这条** —— 候选之外的值是合法新增)。
|
||||
@@ -309,7 +313,7 @@ type LaunchParamType = 'text' | 'textarea' | 'select' | 'combo' | 'list';
|
||||
type LaunchParam = { key: string; label: string; type: LaunchParamType; required?: boolean; desc?: string;
|
||||
placeholder?: string; options?: { value: string; label: string }[] /* select / combo 必填 */; default?: string | string[] };
|
||||
type LaunchParams = { activityId: string; version: string; params: LaunchParam[] };
|
||||
type LaunchInput = { idempotencyKey: string; params: Record<string, string | string[]> };
|
||||
type LaunchInput = { idempotencyKey: string; ownerId: string /* 责任人,固定字段,名册 staffId */; params: Record<string, string | string[]> };
|
||||
|
||||
type InstanceFile = { index: number; name: string; contentType: string; size: number };
|
||||
type InstanceReason = { kind: 'rejected' | 'failed' | 'terminated'; text: string };
|
||||
@@ -331,6 +335,7 @@ type InstanceDetail = InstanceSummary & { activityId: string; llm: string; ended
|
||||
| 统计带由前端从全量数组数 | §3 `stats`(服务端给,分页下才数得准) |
|
||||
| `LAUNCH_PARAMS` 占位参数表 | §4;`options` 从纯字符串升级为 `{value,label}` 两段(渲染器小改);控件种类已含 `combo`(选择+新增,前端已实现) |
|
||||
| `onLaunch` 在清单头落假行 | §5;抽屉每开一次生成 `idempotencyKey`,提交走 mutation,成功失效 `['gov']` |
|
||||
| —(新增)责任人固定字段 | §5 `ownerId`;抽屉「固定参数」段已实现(名册下拉、默认当前登录人),接接口后直接随 body 走 |
|
||||
| 禁用/激活/终止就地改 state | §8;mutation 成功后由服务端重投影(广播 → 失效 → 重取) |
|
||||
| `demoSteps` / `terminatedSteps` 五步占位 | §6 `steps`;终止归态以 `reason.kind='terminated'` 为准,前端不再落「失败」占位 |
|
||||
| 沙箱 `src="/sandbox-demo/activity-view.html"` 固定 480 高 | §2 `view.url` + 票据;`view` 为 null 藏起沙箱区;高度 postMessage 随第一版视图定 |
|
||||
|
||||
Reference in New Issue
Block a user