# 2026-07-31 工作记录

## 签章管理需求（流程管理 + 契约锁对接）

海哥要在流程管理里设计"签章管理"需求，对接契约锁，支持静默签+手动签署两种方式。今天是实战设计，昨天已学过流程管理能力（4个tab：设置审批人/节点权限/节点事件/表单权限设置）。

### 已确认的设计决策（不要再问，直接按这个执行）

1. **签章挂载点**：挂在审批节点上，作为第5个Tab「签章设置」，与现有4个tab并列（方案A，海哥已选定）。
2. **签署方式**：两方都有——我方（发起方）静默签 + 对方（如高校）手动签。
3. **签章方式选项**（截图确认）：仅盖章（静默签）/ 仅签名（手动签）/ 签名与盖章同时使用。
4. **印章来源**：流程设计人员只选"签章类型"（如公章/合同章），不手选具体印章ID。运行时系统根据当前用户身份+签章类型自动匹配印章ID传给契约锁，印章权限由契约锁那边管理。
5. **双方签章配置方式**：各自单独配置一套定位参数（盖章定位参数 + 签名定位参数，两组互相独立），不是共用一套。
6. **定位参数字段**（按截图还原）：
   - 盖章：签章类型（下拉，来源契约锁印章类型枚举）、签署页码、定位方式（关键字定位/坐标定位二选一）→ 关键字定位：定位关键字+第几个关键字；坐标定位：X坐标+Y坐标
   - 签名：签署页码、定位方式（同上逻辑）
7. **静默签触发时机**：审批人点"通过"时触发（不是驳回，驳回不触发任何签章动作）。这个逻辑在流程管理里配置。
8. **手动签署交互方式**：iframe嵌入契约锁签署页面，用户在流程办理页面内完成签署，不跳转外部页面。签署完成的监听方式是**我方前端监听**（不是契约锁webhook推送）。
9. **流程类型前置分类**：新增流程时要选"流程类型"：普通流程 / 签章流程（契约锁）。只有选了"签章流程"，进入流程设计器后审批节点才会出现"签章设置"tab。普通流程不受影响。
10. **合同文档创建时机**：发起时创建合同（用户提交申请时，系统自动调契约锁创建合同文档），不是流程流转到签章节点时才创建。

### 契约锁接口文档关键信息（已读取，来源202.206.65.55:9181私有云API文档，2022-05-22发布，4.3.0版本）

- 核心流程：①创建合同文档 `/v2/document/createbyfile`（拿documentId）→ ②创建合同 `/contract/createbycategory`（绑定文档、签署方、签署动作、签署位置）→ ③发起签署（send:true直接发起，或草稿后再发）
- 签署动作类型（Action.type）：CORPORATE(企业签章)、PERSONAL(个人签字)、LP(法定代表人签字)、AUDIT(审批)、COUNTERSIGN(会签)
- 静默签 = `autoSign: true`；手动签 = `autoSign: false`或不传
- 签署位置两种定位方式：关键字定位(keyword+keywordIndex+offsetX/Y偏移) 或 坐标定位(page+offsetX+offsetY绝对坐标)，与截图的定位方式完全对应
- 印章指定：sealId/sealIds/sealNames/sealCategoryName，我方按用户身份+签章类型匹配后传sealId或sealCategoryName

### 已完成的原型工作

- 原型文件：`/home/ubuntu/.openclaw/workspace/prototype_sign.html`（HTML版，本地http服务托管在 http://43.155.204.203:18080/prototype_sign.html）
- 已按海哥要求重做过一次：从"只有配置面板"升级为"完整还原流程设计器布局"——左侧真实画布（发起人→审批节点→结束的流程图，节点悬浮箭头连接，橙色边框=签章节点带"签章"角标，蓝色边框=普通节点），右侧点击节点弹出配置面板，签章设置tab在右侧面板里。
- UI风格已实地登录系统截图核对：深色左侧导航`#1a1a2e`宽160px，点状网格背景`#f0f2f5`，蓝色`#1677ff`/橙色`#fa8c16`节点配色，右侧抽屉式配置面板从右滑出。
- 已安装 axure-prototype-generator skill（clawhub install），但该skill核心功能付费且本质仍需Axure RP软件配合内联框架使用，不适合"直接生成可分享文件"的诉求。
- 已生成 Axure 内联框架格式文件：`/home/ubuntu/.openclaw/workspace/prototype_sign_axure.js`（javascript:前缀+document.writeln格式，海哥要求直接复制到Axure内联框架里用）。这个文件是手工把HTML内容包装成Axure格式，不是用付费skill生成的。

### 当前进行中、尚未完成的事项（下次会话接续点）

1. **海哥要求"把需求描述也放进原型页面里"**——已经在scene-tabs里加了一个`📋 需求说明`的tab按钮（id="tab-s0"，onclick="switchScene(0)"），但**对应的scene0内容面板还没写**，`switchScene()`函数里也**还没加n===0的分支处理**。这是下次要接着做的：
   - 补一个`<div class="scene-panel" id="scene0">`，内容是完整的需求逻辑说明（整体流程时序、签章节点数据结构、契约锁接口调用时序、iframe监听机制、流程类型前置分类逻辑、合同创建时机等，已经在对话里跟海哥讲过一轮，可以直接复用整理成页面内文档）
   - 补 `switchScene(n)` 函数对 n===0 的 tab/panel active 切换逻辑
   - 改完后要**重新生成一次 axure_sign.js**（因为海哥要用js文件，不是html），并同步更新本地http服务的html文件
2. 改完后需要**再发一次完整的 prototype_sign_axure.js 文件内容给海哥**（他要直接复制到Axure内联框架里）。
3. 期间write工具反复报错「content: must have required properties content」——是我这边工具调用没有正确传content参数导致的重复失败，不是工具本身故障，下次写文件时要确保content参数完整给出。

### 待办杂项

- 曾经answered「openclaw.json的models provider加input:["text","image"]支持看图」——已经加到 custom_haoshuang provider 的 claude-sonnet-4-6 model 上，已重启gateway生效。
- 曾经报过model idle timeout错误，海哥要求把timeoutSeconds改成600——已经在models.providers.custom_haoshuang里加了timeoutSeconds:600（具体加在provider级别，因为agents.defaults.timeoutSeconds已经是172800）。
