weaver-work-cli 0.1.26 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/cmd/setup/index.js +1 -1
- package/dist/internal/e10/auth/commands.js +1 -6
- package/dist/internal/e10/auth/messages.js +3 -0
- package/dist/internal/e10/auth/session.js +8 -0
- package/dist/internal/e10/auth-recovery.js +148 -0
- package/dist/internal/e10/client.js +47 -15
- package/dist/internal/e10/context.js +8 -8
- package/dist/internal/e10/index.js +1 -0
- package/dist/internal/e10/request-runtime.js +51 -9
- package/dist/shortcuts/archive/host.js +3 -2
- package/dist/shortcuts/archive/manifest.js +1 -1
- package/dist/shortcuts/archive-oa/host.js +2 -1
- package/dist/shortcuts/archive-oa/manifest.js +1 -1
- package/dist/shortcuts/asset/host.js +7 -6
- package/dist/shortcuts/blog/host.js +4 -3
- package/dist/shortcuts/caizhilian/host.js +3 -2
- package/dist/shortcuts/caizhilian/manifest.js +1 -1
- package/dist/shortcuts/calendar/host.js +2 -1
- package/dist/shortcuts/contract/host.js +34 -59
- package/dist/shortcuts/ehr/host.js +2 -1
- package/dist/shortcuts/esb/host.js +2 -1
- package/dist/shortcuts/fna/host.js +6 -3
- package/dist/shortcuts/fna/manifest.js +10 -5
- package/dist/shortcuts/fna/operations/expense-chart.js +162 -0
- package/dist/shortcuts/fna/operations/registry.js +2 -0
- package/dist/shortcuts/hrm/host.js +2 -1
- package/dist/shortcuts/im/host.js +3 -2
- package/dist/shortcuts/invoice/host.js +7 -6
- package/dist/shortcuts/invoice/manifest.js +21 -141
- package/dist/shortcuts/invoice/operations/issuing-qys.js +134 -167
- package/dist/shortcuts/invoice/operations/registry.js +1 -6
- package/dist/shortcuts/jiuchuanhui/host.js +2 -1
- package/dist/shortcuts/mail/host.js +2 -1
- package/dist/shortcuts/meeting/host.js +2 -1
- package/dist/shortcuts/meeting/operations/eb/conflict.js +78 -12
- package/dist/shortcuts/okr/host.js +2 -1
- package/dist/shortcuts/plan/host.js +2 -1
- package/dist/shortcuts/project/host.js +2 -1
- package/dist/shortcuts/workflow/host.js +3 -5
- package/dist/shortcuts/workflow/index.js +1 -1
- package/dist/shortcuts/workflow/operations/chatscene.js +4 -22
- package/dist/shortcuts/workflow/operations/form.js +281 -166
- package/dist/shortcuts/workflow/operations/read.js +26 -2
- package/dist/shortcuts/workflow/stdout-compact.js +7 -0
- package/docs/SKILL.md +1 -1
- package/docs/_catalog.md +1 -1
- package/docs/agent-invoice.md +1 -1
- package/docs/caizhilian.md +1 -1
- package/docs/e10-auth.md +1 -1
- package/docs/fna.md +7 -3
- package/docs/invoice.md +4 -6
- package/package.json +1 -1
- package/skill-template/business-info.json +4 -1
- package/skill-template/domains/caizhilian.md +2 -1
- package/skill-template/domains/qiyecheng.md +1 -0
- package/skill-template/domains/yepiaotong.md +6 -2
- package/skill-template/skill-template.md +1 -0
- package/skills/weaver-e10-blog/SKILL.md +6 -1
- package/skills/weaver-e10-blog/references/blog-query.md +3 -1
- package/skills/weaver-e10-caizhilian/SKILL.md +18 -9
- package/skills/weaver-e10-caizhilian/references/action-flow.md +70 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +6 -2
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +207 -0
- package/skills/weaver-e10-caizhilian/references/file-collection.md +56 -54
- package/skills/weaver-e10-caizhilian/references/file-upload.md +4 -4
- package/skills/weaver-e10-caizhilian/references/host-executor-prompt.md +32 -0
- package/skills/weaver-e10-caizhilian/references/host-platform-integration.md +46 -0
- package/skills/weaver-e10-caizhilian/references/rule-index.md +56 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +5 -16
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +4 -13
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +6 -15
- package/skills/weaver-e10-caizhilian/references/setting-storage-docs-summary.md +126 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage-field-map.md +57 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +142 -482
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +7 -7
- package/skills/weaver-e10-caizhilian/references/task-workflow.md +87 -0
- package/skills/weaver-e10-caizhilian/references/withheld.md +2 -2
- package/skills/weaver-e10-caizhilian/references/write-protocol.md +7 -0
- package/skills/weaver-e10-calendar/SKILL.md +6 -1
- package/skills/weaver-e10-esb/SKILL.md +8 -0
- package/skills/weaver-e10-esb/references/input-format.md +3 -1
- package/skills/weaver-e10-esb/references/source-manifest.json +5 -5
- package/skills/weaver-e10-hrm/SKILL.md +6 -1
- package/skills/weaver-e10-hrm/references/employee.md +1 -1
- package/skills/weaver-e10-hrm/references/org.md +1 -1
- package/skills/weaver-e10-hrm/references/position.md +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +2 -1
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +1 -1
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/references/hr-contact.md +1 -1
- package/skills/weaver-e10-jucailin/references/salary.md +1 -1
- package/skills/weaver-e10-mail/SKILL.md +6 -1
- package/skills/weaver-e10-meeting/SKILL.md +11 -6
- package/skills/weaver-e10-meeting/references/meeting-eb.md +7 -3
- package/skills/weaver-e10-meeting/references/meeting-queries.md +3 -1
- package/skills/weaver-e10-meeting/references/meeting-verification.md +4 -2
- package/skills/weaver-e10-okr/SKILL.md +6 -1
- package/skills/weaver-e10-okr/references/source-manifest.json +5 -5
- package/skills/weaver-e10-plan/SKILL.md +6 -1
- package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +3 -1
- package/skills/weaver-e10-plan/references/plan-report-query.md +3 -1
- package/skills/weaver-e10-plan/references/source-manifest.json +7 -7
- package/skills/weaver-e10-qiyecheng/SKILL.md +16 -6
- package/skills/weaver-e10-qiyecheng/references/catalog.md +6 -3
- package/skills/weaver-e10-qiyecheng/references/expense-center.md +2 -0
- package/skills/weaver-e10-qiyecheng/references/expense-chart.md +78 -0
- package/skills/weaver-e10-qiyecheng/references/source-manifest.json +87 -33
- package/skills/weaver-e10-shared/SKILL.md +37 -14
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +11 -8
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +4 -4
- package/skills/weaver-e10-shared/references/weaver-e10-installation.md +3 -1
- package/skills/weaver-e10-wenshuding/SKILL.md +6 -1
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
- package/skills/weaver-e10-workflow/references/source-manifest.json +1 -2
- package/skills/weaver-e10-workflow/references/workflow-create.md +30 -55
- package/skills/weaver-e10-yepiaotong/SKILL.md +19 -17
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +72 -78
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +152 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +210 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +7 -7
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +11 -5
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +55 -33
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +102 -23
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +53 -42
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +93 -213
- package/skills/weaver-e10-yimiaoban/SKILL.md +9 -2
- package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/msg-read.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +9 -9
- package/skills/weaver-e10-ziguanjia/SKILL.md +6 -1
- package/dist/shortcuts/invoice/operations/issuing.js +0 -198
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-field-rules.md +0 -161
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +0 -66
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +0 -107
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// 顺序定位约定:查询类 operation 把"序号 → requestId"写入本地检索索引
|
|
8
8
|
// (saveSearchIndex / findIndexedItem,由 CLI 托管,本文件不读写索引文件);
|
|
9
9
|
// 查看/操作类 operation 允许用 requestId 或 group+index 定位(findIndexedItem)。
|
|
10
|
+
import { E10_REAUTH_GUIDANCE } from '../../../internal/e10/auth/messages.js';
|
|
10
11
|
import { workflowSuccess, schemaOf, SCHEMA_REQUEST_ID, SCHEMA_CATEGORY, SCHEMA_INDEX, SCHEMA_PAGE_SIZE, } from './types.js';
|
|
11
12
|
import { asString, asInt, asStringArray, asBool, compact, responseData, detailDataOf, toArray, resolveMemoryAppId, withLeadingMeta, STDOUT_SAFE_BYTES, stdoutBytesOf, parseNameWithId, } from './shared.js';
|
|
12
13
|
import { workflowValidationError, WorkflowCliError, workflowClarificationError, CLARIFICATION_SUBTYPE, } from '../errors.js';
|
|
@@ -4918,7 +4919,7 @@ const workflowMemoryPrompt = {
|
|
|
4918
4919
|
result.oaContext = hasOaContext ? oaContext : null;
|
|
4919
4920
|
result.oaContextMissing = !hasOaContext;
|
|
4920
4921
|
if (!hasOaContext) {
|
|
4921
|
-
result.oaContextMissingReason =
|
|
4922
|
+
result.oaContextMissingReason = `当前 E10 会话中未包含 OA 版本与用户身份信息。请先确认登录态;若会话确已失效,${E10_REAUTH_GUIDANCE}`;
|
|
4922
4923
|
}
|
|
4923
4924
|
// 命令耗时(毫秒):与 createForm / workflow.search 同口径,`data` 顶层。
|
|
4924
4925
|
result.durationMs = Date.now() - startedAt;
|
|
@@ -4964,6 +4965,18 @@ export const workflowReadOperations = [
|
|
|
4964
4965
|
export const HISTORY_REQUEST_LIMIT = 5;
|
|
4965
4966
|
/** 历史参考数据回溯窗口(天):近一年。 */
|
|
4966
4967
|
const HISTORY_LOOKBACK_DAYS = 365;
|
|
4968
|
+
/**
|
|
4969
|
+
* 历史取数列表**只要这两列**(2026-10-26 用户口径)。
|
|
4970
|
+
*
|
|
4971
|
+
* 不带 `customDisplayColumns` 时服务端按"我发起的"默认列集全量解析、格式化、拼装
|
|
4972
|
+
* (响应里 `columns` / `data` / `displayData` 三份都要出一遍),而我们实际只读
|
|
4973
|
+
* `requestId` / `requestnameTitle` / `createdatetime` 三个字段 ⇒ 把列压到两列能直接砍掉
|
|
4974
|
+
* 这部分服务端开销,接口更快返回。
|
|
4975
|
+
*/
|
|
4976
|
+
const HISTORY_LIST_COLUMNS = [
|
|
4977
|
+
{ dataIndex: 'requestname', type: 'text', title: '标题', width: 200, orderKey: 'requestname' },
|
|
4978
|
+
{ dataIndex: 'createdatetime', type: 'date', title: '创建时间', width: 150, orderKey: 'createdatetime' },
|
|
4979
|
+
];
|
|
4967
4980
|
/** 本地日期 → `YYYY-MM-DD`(不用 `toISOString`:那是 UTC,会跨日)。 */
|
|
4968
4981
|
function formatLocalDate(date) {
|
|
4969
4982
|
const pad = (value) => String(value).padStart(2, '0');
|
|
@@ -5154,7 +5167,17 @@ export async function fetchHistoryListSnapshot(env, options = {}) {
|
|
|
5154
5167
|
path: WORKFLOW_ENDPOINTS.MINE_LIST,
|
|
5155
5168
|
operation: 'workflow.createRequest.history',
|
|
5156
5169
|
body: {
|
|
5157
|
-
|
|
5170
|
+
// `needIutData: false`:关掉本次取数用不到的 IUT 附加数据(我们只看标题/创建时间)。
|
|
5171
|
+
params: {
|
|
5172
|
+
tabid: DEFAULT_TABID.mine,
|
|
5173
|
+
dimension: 'mine',
|
|
5174
|
+
flowSpareType: 1,
|
|
5175
|
+
outType: 0,
|
|
5176
|
+
needIutData: false,
|
|
5177
|
+
},
|
|
5178
|
+
// `needParseData: true`:让服务端把日期等字段直接解析成可读文本(`displayData`),
|
|
5179
|
+
// 客户端不再自己转。
|
|
5180
|
+
needParseData: true,
|
|
5158
5181
|
searchParams: {
|
|
5159
5182
|
formDatas: {
|
|
5160
5183
|
// 非草稿 = 「未结束」+「已结束」(选项类系统条件必须是 multiContent,见 flow-status.ts;
|
|
@@ -5176,6 +5199,7 @@ export async function fetchHistoryListSnapshot(env, options = {}) {
|
|
|
5176
5199
|
},
|
|
5177
5200
|
customDisplayPage: { current: 1, size: HISTORY_REQUEST_LIMIT },
|
|
5178
5201
|
sortParams: [{ orderkey: SORT_OPTIONS['发起时间'], sortType: 'desc' }],
|
|
5202
|
+
customDisplayColumns: HISTORY_LIST_COLUMNS,
|
|
5179
5203
|
},
|
|
5180
5204
|
});
|
|
5181
5205
|
const listed = normalizeListResponse(listResponse, 'mine', CATEGORY_NAMES.mine);
|
|
@@ -34,6 +34,13 @@ export const COMPACT_STDOUT_PATHS = {
|
|
|
34
34
|
'data.systemFields',
|
|
35
35
|
'data.data',
|
|
36
36
|
],
|
|
37
|
+
// `createRequestDirect`(2026-10-22 起只取数、不发起):返回面就是「fields + historyRequestData +
|
|
38
|
+
// userMemory」,前两个同样是"逐条长、层级深"的数组 —— 压掉缩进省 24%~31%,直接把大量表单从
|
|
39
|
+
// 触线降到线下。`userMemory` 是单行 Markdown 字符串,本身没有缩进可压,不必登记。
|
|
40
|
+
'workflow.createRequestDirect': [
|
|
41
|
+
'data.fields',
|
|
42
|
+
'data.historyRequestData',
|
|
43
|
+
],
|
|
37
44
|
};
|
|
38
45
|
/** 该 operation 的紧凑路径(不声明 = 维持全量缩进)。导出让用例锁住接线。 */
|
|
39
46
|
export function compactStdoutPaths(operation) {
|
package/docs/SKILL.md
CHANGED
|
@@ -32,7 +32,7 @@ skills/weaver-e10-<name>/
|
|
|
32
32
|
## 已内置业务模块
|
|
33
33
|
|
|
34
34
|
- `invoice`:E10 业票通发票管理。源码说明先读 `docs/invoice.md`;面向 Agent 时先读 `skills/weaver-e10-yepiaotong/SKILL.md`,再按入口路由读取对应 reference。
|
|
35
|
-
- `fna`:E10
|
|
35
|
+
- `fna`:E10 齐业成费控中心(预算查询/费用中心/报销报表 AI 问答/借款管理/发票核销)。源码说明先读 `docs/fna.md`;面向 Agent 时先读 `skills/weaver-e10-qiyecheng/SKILL.md`,再按入口路由读取对应 reference。写操作(提醒还款/催票)走 prepare/apply 确认链。
|
|
36
36
|
- `plan`:E10 计划报告(报告查询/新建/修改/发布/撤回/提交提醒/评论),自动适配标准版与 e10-ebuilder 两套报告接口链路。源码说明先读 `docs/plan.md`;面向 Agent 时先读 `skills/weaver-e10-plan/SKILL.md`,再按入口路由读取对应 reference。写操作走 prepare/apply 确认链。
|
|
37
37
|
- `esb`:E10 ESB 中心自定义触发动作流(入参模板查询 + 触发)。源码说明先读 `docs/esb.md`;面向 Agent 时先读 `skills/weaver-e10-esb/SKILL.md`,再按入口路由读取对应 reference。触发动作流是写操作,走 prepare/apply 确认链。
|
|
38
38
|
- `okr`:E10 OKR 目标管理(目标分页查询/详情、关键成果查询与保存、目标对齐、目标评论、详情页链接),按 `ver_name` 自动适配 e10 标准版与 e10-ebuilder 两套接口链路。源码说明先读 `docs/okr.md`;面向 Agent 时先读 `skills/weaver-e10-okr/SKILL.md`,再按入口路由读取对应 reference。写操作(新建/编辑目标、保存关键成果、添加目标对齐)走 prepare/apply 确认链。
|
package/docs/_catalog.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| 业票通发票管理、报销填单、智能开票、invoice operation、写操作 prepare/apply | `docs/invoice.md` |
|
|
11
11
|
| E10 会议管理(标准版:查询/冲突/预约/回执/签到)、meeting operation、写操作 prepare/apply | `docs/meeting.md` |
|
|
12
12
|
| 聚才林人事云(人事档案/出勤/薪酬)、ehr operation、写操作 prepare/apply | `docs/ehr.md` |
|
|
13
|
-
|
|
|
13
|
+
| 齐业成费控中心(预算/费用中心/报销报表 AI 问答/借款管理/发票核销)、fna operation、提醒还款与催票 prepare/apply | `docs/fna.md` |
|
|
14
14
|
| 文书定档案管理(全宗/检索/借阅车/借阅单/发起借阅/预归档上传)、wenshuding operation | `docs/wenshuding.md` |
|
|
15
15
|
| 计划报告管理(报告查询/新建/修改/发布/撤回/提交提醒/评论)、plan operation、写操作 prepare/apply | `docs/plan.md` |
|
|
16
16
|
| OKR 目标管理(目标查询/详情、关键成果、目标对齐、评论)、okr operation、标准版与 ebuilder 双链路、写操作 prepare/apply | `docs/okr.md` |
|
package/docs/agent-invoice.md
CHANGED
|
@@ -67,7 +67,7 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
|
|
|
67
67
|
|
|
68
68
|
删除、编辑、新增同样必须使用 `prepare -> apply`。出现 `partial/write_uncertain` 时停止,不能自动重试写操作。
|
|
69
69
|
|
|
70
|
-
处理“把发票填进流程表单”的场景,使用 `invoice.browse-field.data` 生成浏览按钮控件所需 JSON。处理“报销发票/自动填单”时,先读取 `invoice-reim.md`,用报销相关只读 operation 获取事前申请、工作流、表单结构、预填信息和人员上级;Agent 组装报销单结构化 JSON 后,必须通过 `invoice.reim.flow.create.prepare/apply` 或 `invoice.reim.flow.update.prepare/apply` 写入,创建报销单的 `work_flow_id/mainFormId/request_name/main_fields/detail_rows` 等字段在 operation 顶层传入,不包通用 `payload
|
|
70
|
+
处理“把发票填进流程表单”的场景,使用 `invoice.browse-field.data` 生成浏览按钮控件所需 JSON。处理“报销发票/自动填单”时,先读取 `invoice-reim.md`,用报销相关只读 operation 获取事前申请、工作流、表单结构、预填信息和人员上级;Agent 组装报销单结构化 JSON 后,必须通过 `invoice.reim.flow.create.prepare/apply` 或 `invoice.reim.flow.update.prepare/apply` 写入,创建报销单的 `work_flow_id/mainFormId/request_name/main_fields/detail_rows` 等字段在 operation 顶层传入,不包通用 `payload`。处理“开票”时默认读取 `invoice-issuing-workflow.md`:用 `invoice.issuing.qys.list` 的 `groups` 按合同号选定一组,确认后调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest`(`action` 固定 `draft`)发起开票流程草稿。只有用户明确要求“直接开票/不走流程/存待开台账”时,才读取 `invoice-issuing-qys-ledger.md`(台账行)或 `invoice-issuing.md` + `invoice-issuing-field-rules.md`(口述字段),走 `invoice.issuing.make.prepare/apply`。当前修正资料包没有客户档案查询或红字发票红冲接口,`invoice.customer.*` 和 `invoice.red.*` 不能调用或绕过。
|
|
71
71
|
|
|
72
72
|
## 暂缓能力
|
|
73
73
|
|
package/docs/caizhilian.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
源码位于 `src/shortcuts/caizhilian`。命令注册、`operation manifest` 和业务执行逻辑分离:`manifest.ts` 汇总对外契约(含 `withheldOperations`),`operations/registry.ts` 由 `operations/specs.ts` 的 60 条操作规格展开成 87 条对外 operation(写操作展开为 `.prepare` / `.apply`),具体执行逻辑在 `src/shortcuts/caizhilian/operations/handlers` 中按业务分组维护(document、folder、collab、search、fileops、system),公共能力在 `operations/api.ts`、`operations/files.ts`、`operations/form.ts`、`operations/shared.ts`。
|
|
6
6
|
|
|
7
|
-
面向 Agent 的说明位于 `skills/weaver-e10-caizhilian`。入口 `SKILL.md`
|
|
7
|
+
面向 Agent 的说明位于 `skills/weaver-e10-caizhilian`。入口 `SKILL.md` 只负责接入前置和 reference 路由;具体细节拆在 `skills/weaver-e10-caizhilian/references/`。
|
|
8
8
|
|
|
9
9
|
## 公共前置
|
|
10
10
|
|
package/docs/e10-auth.md
CHANGED
|
@@ -69,7 +69,7 @@ E10 目标地址按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置
|
|
|
69
69
|
|
|
70
70
|
`auth xiaoe` 会先打印不含凭证的 preflight 摘要,给出 `authMode=xiaoe`、`credentialSourceDetected`、`attempted`、各凭据源检测结果和目标 `baseUrl`。进入脚本分支时会打印 `Trying XiaoE token script credential...`;进入内置 Node 会话分支时会打印 `Trying built-in XiaoE client session credential...`。成功结果和后续 `auth status` 会显示 `credentialSourceStep`、`credentialSourceType`、`credentialSourceLabel`。
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
业务命令不会在缺少本地会话时主动建立 XiaoE 登录态,首次使用仍需显式执行 `auth xiaoe`。已有会话被 E10 接口明确拒绝为失效时,公共请求运行时会静默换票并重放原请求一次;不会打印中间登录步骤,不会自动打开浏览器,也不会对流式请求、网络错误、`partial` / `write_uncertain` 做重放。桌面客户端需要 XiaoE 专属业务行为时,Agent 必须显式传全局参数,例如 `weaver-work-cli --runtime-agent xiaoe workflow ...`;网页端由原有环境变量规则自动识别,不要求补这个参数。`--runtime-agent` 只控制运行时行为,不携带也不选择凭据。WorkBuddy、Codex 及其他智能体使用 `auth login --base-url <url> --agent_type <agent_type>` 的浏览器 OAuth 流程。
|
|
73
73
|
|
|
74
74
|
无法使用浏览器回调时,可以用 `auth set` 直接写入浏览器中复制到的
|
|
75
75
|
`ETEAMSID`。命令会调用 `teamsCheck` 解析当前用户、租户和组织信息,并写入
|
package/docs/fna.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# 齐业成费控中心(FNA)CLI
|
|
2
2
|
|
|
3
|
-
对应 `src/shortcuts/fna`,把泛微齐业成 FNA 费控中心
|
|
3
|
+
对应 `src/shortcuts/fna`,把泛微齐业成 FNA 费控中心 12 个源接口固化为 14 个 operation(预算 2 / 费用中心 3 + 报销报表 AI 问答 1 / 借款管理 4 / 发票核销 4,其中提醒还款与催票为 prepare/apply 写链)。源资料:`/Users/zhufangyuan/Desktop/weaver-e10-qiyecheng`(指纹见 `skills/weaver-e10-qiyecheng/references/source-manifest.json`)。
|
|
4
4
|
|
|
5
5
|
## 公共前置
|
|
6
6
|
|
|
7
|
-
- 认证、profile、HTTP client 由 `src/internal/e10` 托管;业务 host 只适配 `/api/fna/` 与 `/api/
|
|
7
|
+
- 认证、profile、HTTP client 由 `src/internal/e10` 托管;业务 host 只适配 `/api/fna/`、`/api/app/fna/` 与 `/api/secondev/fna/` 路径(`src/shortcuts/fna/host.ts` 的 `assertPath` 白名单)。
|
|
8
8
|
- 成功判定统一走 WeaResult(`success` 或 `status` 布尔 / `code==200`);费用中心 AI 查询用 `success`,预算/借款/核销用 `status`。
|
|
9
9
|
- JSON 输出与错误 envelope、退出码遵循共享规则;写操作不满足确认条件返回 `confirmation.required`(exit 10),请求发出后结果不确定返回 `partial/write_uncertain`(exit 11)。
|
|
10
10
|
|
|
11
11
|
## Agent 入口
|
|
12
12
|
|
|
13
|
-
面向 Agent 时先读 `skills/weaver-e10-qiyecheng/SKILL.md`,再按入口路由读取 `references/`(catalog/budget/expense-center/loan-management/invoice-writeoff)。
|
|
13
|
+
面向 Agent 时先读 `skills/weaver-e10-qiyecheng/SKILL.md`,再按入口路由读取 `references/`(catalog/budget/expense-center/expense-chart/loan-management/invoice-writeoff)。
|
|
14
14
|
|
|
15
15
|
## Operation 目录
|
|
16
16
|
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
| `fna.expense.reimbursed.sum` | read | POST `expense/center/getSumReimbursedAmountByAi`;body 可空 |
|
|
22
22
|
| `fna.expense.loan.sum` | read | POST `expense/center/getSumLoanAmountByAi`;只认数字 ID;空 data 自动重试 2 次;已知仅统计首条记录缺陷 |
|
|
23
23
|
| `fna.expense.prepay.writeoff.sum` | read | POST `expense/center/selectPrepayWriteOffAmountBySkill`;body 可空 |
|
|
24
|
+
| `fna.expense.chart` | read | GET `getExpenseChart`(`/api/secondev/fna/`);`userInput` 必填 ≤500 字;`maxRows` 本地截断 1-5000,默认 200;超时 180s;返回 `kind=rows/empty/clarify/blocked/unexpected` |
|
|
24
25
|
| `fna.loan.main.page` | read | POST `loanManagementMenu/mainPage` |
|
|
25
26
|
| `fna.loan.main.list` | read | POST `loanManagementMenu/mainPageList`;`current`/`pageSize`/`menuCode`/`permissionSetCode` 必填 |
|
|
26
27
|
| `fna.loan.remind.repay.prepare` | write | 校验 displayData 行并预览,不发送 |
|
|
@@ -39,6 +40,7 @@ Windows PowerShell:
|
|
|
39
40
|
```powershell
|
|
40
41
|
weaver-work-cli --json fna run fna.budget.application.detail --input-json '{"requestId":"1001"}'
|
|
41
42
|
weaver-work-cli --json fna run fna.expense.reimbursed.sum --input-json '{"startDate":"2026-01-01","endDate":"2026-08-31"}'
|
|
43
|
+
weaver-work-cli --json fna run fna.expense.chart --input-json '{"userInput":"2026-08 各部门报销金额排名前三"}'
|
|
42
44
|
weaver-work-cli --json fna run fna.loan.main.list --input-json '{"current":1,"pageSize":20,"menuCode":"fesx_fna_borrowingManagement","permissionSetCode":"fesx_fna_borrowingManagement.default"}'
|
|
43
45
|
weaver-work-cli --json fna run fna.invoice.writeoff.list --input-json '{"current":1,"pageSize":20,"invoiceStatus":"unarrivedTicket"}'
|
|
44
46
|
```
|
|
@@ -48,6 +50,7 @@ macOS/Linux(bash/zsh):
|
|
|
48
50
|
```bash
|
|
49
51
|
weaver-work-cli --json fna run fna.budget.application.detail --input-json '{"requestId":"1001"}'
|
|
50
52
|
weaver-work-cli --json fna run fna.expense.reimbursed.sum --input-json '{"startDate":"2026-01-01","endDate":"2026-08-31"}'
|
|
53
|
+
weaver-work-cli --json fna run fna.expense.chart --input-json '{"userInput":"2026-08 各部门报销金额排名前三"}'
|
|
51
54
|
weaver-work-cli --json fna run fna.loan.main.list --input-json '{"current":1,"pageSize":20,"menuCode":"fesx_fna_borrowingManagement","permissionSetCode":"fesx_fna_borrowingManagement.default"}'
|
|
52
55
|
weaver-work-cli --json fna run fna.invoice.writeoff.list --input-json '{"current":1,"pageSize":20,"invoiceStatus":"unarrivedTicket"}'
|
|
53
56
|
```
|
|
@@ -61,6 +64,7 @@ weaver-work-cli --json fna run fna.invoice.writeoff.list --input-json '{"current
|
|
|
61
64
|
- 日期口径:报销按明细费用日期、借款按流程创建时间、预付核销按核销记录创建时间。
|
|
62
65
|
- `menuCode`/`permissionSetCode` 环境相关,示例值需与环境核对。
|
|
63
66
|
- 超 2^53 的 requestId 无法用 JS 数字精确表达,保留字符串并提示人工核验(真实环境 ID 一般在安全整数内,已按数字发送)。
|
|
67
|
+
- `fna.expense.chart`:`code` 恒为 200,必须按 `data` 类型/`kind` 判成败;追问与安全拦截都是字符串 `data`,`meta.messageKindInferred=true` 表示归类为 CLI 推断。实测真实查询 3.3~66.6s,CLI 超时设 180s,禁止自动重试(每次都会消耗模型额度)。不做当前人强制过滤,结果可能是全租户范围;`userInput` 为商品化输入,个人口径必须改用 `fna.expense.reimbursed.sum`。二开包未安装时该 operation 会 404/500,需与其它 `fna.*` 正常但本 operation 失败区分。
|
|
64
68
|
|
|
65
69
|
## 验证
|
|
66
70
|
|
package/docs/invoice.md
CHANGED
|
@@ -77,7 +77,9 @@ weaver-work-cli --json invoice list --fields number,detailUrl
|
|
|
77
77
|
| `invoice.reim.field.search` | 只读 | 搜索表单关联字段值,用于用户修正或出差客户确认 |
|
|
78
78
|
| `invoice.reim.flow.create.prepare/apply` | 高风险写 | continuation 绑定已组装报销单 JSON;`work_flow_id/mainFormId/request_name/main_fields/detail_rows` 等字段在 schema 顶层逐项暴露,确认后调用 `createFlowNew` |
|
|
79
79
|
| `invoice.reim.flow.update.prepare/apply` | 高风险写 | continuation 绑定更新报销单 JSON;确认后调用 `updateFlow` |
|
|
80
|
-
| `invoice.issuing.
|
|
80
|
+
| `invoice.issuing.qys.list` | 只读 | 扫描契约锁合同商品台账,返回可开票行 `items` 与按「合同号 + 购方」汇总的 `groups`(开票金额合计按分累加、`blockedRows` 计不可开票行);AI 开票据此调用 `weaver-e10-workflow` 发起开票流程草稿 |
|
|
81
|
+
|
|
82
|
+
> 直接开票类 operation(`invoice.issuing.make.prepare/apply`、`invoice.issuing.qys.prepare`、`invoice.issuing.result`)已于 0.1.27 移除:开票一律通过「契约锁合同收款发票开具及快递申请」流程草稿完成,不再支持绕过流程直接调用 `makeInvoice`。
|
|
81
83
|
|
|
82
84
|
共享、转让和标签仍暂不暴露给 Agent:新版源资料给出了提交接口,但还缺少稳定的接收人 `appid/cid/uid` 解析来源、标签关系查询和写后回查契约。
|
|
83
85
|
|
|
@@ -107,8 +109,6 @@ weaver-work-cli --json invoice import prepare --input-json '{"file":"./invoice.p
|
|
|
107
109
|
weaver-work-cli --json invoice import apply --input-json '{"file":"./invoice.pdf","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
108
110
|
|
|
109
111
|
weaver-work-cli --json invoice run invoice.reim.flow.create.prepare --input .\reim-create.json
|
|
110
|
-
|
|
111
|
-
weaver-work-cli --json invoice run invoice.issuing.make.prepare --input .\issuing.json
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
macOS/Linux(bash/zsh):
|
|
@@ -121,13 +121,11 @@ weaver-work-cli --json invoice import prepare --input-json '{"file":"./invoice.p
|
|
|
121
121
|
weaver-work-cli --json invoice import apply --input-json '{"file":"./invoice.pdf","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
122
122
|
|
|
123
123
|
weaver-work-cli --json invoice run invoice.reim.flow.create.prepare --input ./reim-create.json
|
|
124
|
-
|
|
125
|
-
weaver-work-cli --json invoice run invoice.issuing.make.prepare --input ./issuing.json
|
|
126
124
|
```
|
|
127
125
|
|
|
128
126
|
导入发票文件或远程 URL 时,面向 Agent 的正常链路是先 `invoice.ocr.preview`,再 `invoice.import.prepare` 使用 `validate=true`、`syncToOa=true`。只有用户明确要求跳过查验或离线导入时才传 `validate=false`;`validate=false` 表示跳过查验,不能描述为“查验通过”。`filedMap`、嵌套字段映射等 JSON 参数在 `--input-json` 中保持对象,CLI 只在 multipart 提交前序列化。
|
|
129
127
|
|
|
130
|
-
|
|
128
|
+
报销单创建只接受 Agent 已组装好的结构化 JSON;开票一律通过 `weaver-e10-workflow` 发起「契约锁合同收款发票开具及快递申请」流程草稿,CLI 不再提供直接开票接口。CLI 不负责猜测事前申请匹配、出差客户或税率;这些规则在 Skill reference 中指导 Agent 组装和展示预览。报销单创建的字段必须在 operation 顶层逐项传入,不再包一层通用 `payload`。当前修正资料包没有客户档案查询或红字发票红冲接口,`invoice.customer.*` 和 `invoice.red.*` 不暴露为 operation,Agent 不能绕过 CLI 调用原始接口。写操作出现网络中断、部分成功、缺少回执 ID 或回查失败时,CLI 返回 `partial/write_uncertain`,Agent 禁止自动重复提交。
|
|
131
129
|
|
|
132
130
|
## 编辑白名单
|
|
133
131
|
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
本业务域用于 E10 采知连(文档中心 / 知识库)。入口 `SKILL.md` 按飞书 `lark-approval` 风格组织:CRITICAL
|
|
1
|
+
本业务域用于 E10 采知连(文档中心 / 知识库)。入口 `SKILL.md` 按飞书 `lark-approval` 风格组织:CRITICAL 接入前置、登录与请求头凭证契约、路由优先级、高优先级语义、逐 operation 命令表、处理链、执行原则、写操作失败决策树和「不在范围」。具体用法拆到 `references/`:
|
|
2
2
|
|
|
3
|
+
- `auth-and-install.md`:CLI 安装与可用性检查(含「命令找不到」时区分未安装与 PATH)、E10 登录与登录失效处置、浏览器登录防挂起、人工保底方式、已有环境切换、`--is-connector` 判据、安全边界与请求头契约、超时与重试预算。
|
|
3
4
|
- `agent-entry.md`:schema / operations 入口、统一 `caizhilian run` 调用方式、`--input-json` 与 `--input <path>` 选择、成功与失败 envelope、完整错误码表。
|
|
4
5
|
- `document.md`:文档检索、文档详情、当前登录人,以及 HTML / Markdown / Office / 批量上传四种建文档方式与四种编辑(基础字段、作者、保存正文、替换正文)。
|
|
5
6
|
- `folder.md`:文件夹创建、虚拟文件夹检索、文件夹默认设置,以及默认共享与八类文档权限(含 `Premisstion` 源拼写与按权限反查)。
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
- `catalog.md`:接口目录与按模块路由(四大模块 11 接口 ↔ 13 operations),通用约定与写操作边界。
|
|
4
4
|
- `budget.md`:预算查询(事前申请单预算详情、预算执行报表),含 `formDatas` 二层嵌套与金额列名口径。
|
|
5
5
|
- `expense-center.md`:费用中心(报销金额 / 借款分段 / 预付核销),含日期口径差异、借款接口缺陷与空响应处理。
|
|
6
|
+
- `expense-chart.md`:报销报表 AI 问答(自然语言出部门/期间/费用类型报表),含 `kind` 五态、模型额度、全租户数据范围与二开接口依赖。
|
|
6
7
|
- `loan-management.md`:借款管理(汇总/列表/提醒还款 prepare→apply 写链),含 menuCode 核对与回查策略。
|
|
7
8
|
- `invoice-writeoff.md`:发票核销(金额 tab/列表/催票 prepare→apply 写链),含 invoiceStatus 枚举与回查策略。
|
|
8
9
|
- `source-manifest.json`:源资料指纹与生成产物基线,供更新检测。
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
- `invoice-update.md`:编辑发票的 `prepare -> apply` 写入协议。
|
|
15
15
|
- `invoice-delete.md`:删除发票的 `prepare -> apply` 写入协议。
|
|
16
16
|
- `invoice-reim.md`:发票报销自动填单的数据准备;报销单创建/修改调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` / `workflow.edit*`。
|
|
17
|
-
- `invoice-issuing.md
|
|
17
|
+
- `invoice-issuing-workflow.md`:AI 开票主链路——从契约锁合同台账按合同号分组,调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` 发起开票流程草稿。
|
|
18
|
+
- `invoice-issuing-form-fill-rules.md`:开票流程填单规则,用户没说的字段按默认值填(如本次开票金额 = 总金额)。
|
|
19
|
+
- `invoice-issuing-qys-ledger.md`:兜底链路,用户明确要求时按台账行直接开票或存待开台账。
|
|
20
|
+
- `invoice-issuing.md`:兜底链路,用户明确要求时按口述字段直接开票或存台账的 payload 确认链。
|
|
18
21
|
- `invoice-disabled-capabilities.md`:共享、转让、标签等暂未暴露能力的处理边界。
|
|
19
22
|
|
|
20
23
|
Agent 调优重点:
|
|
@@ -24,6 +27,7 @@ Agent 调优重点:
|
|
|
24
27
|
- 写操作只接受 CLI 生成的 continuation,不手工构造或复用。
|
|
25
28
|
- `validate=false` 只能说明跳过查验,不能描述为查验通过。
|
|
26
29
|
- 报销单创建、报销单修改、开票和存台账必须先展示摘要并取得明确确认;报销单按 `workflow.createRequest` 的 `{main, details}` 结构组装 `data`。
|
|
27
|
-
-
|
|
30
|
+
- 开票默认按契约锁台账发起开票流程草稿(`action` 固定 `draft`),明细每行只传金额(含税)与台账数量,其余列由合同号联动带出,Agent 不做金额计算;只有用户明确说"直接开票 / 不走流程 / 存待开台账"才调开票接口。
|
|
31
|
+
- 直接开票时从用户输入、附件或对话上下文提取购方字段;当前资料包没有客户档案查询 operation,资料不足时追问用户补齐。
|
|
28
32
|
- 当前资料包没有红字发票红冲接口,`invoice.red.*` 不属于可用 operation。
|
|
29
33
|
- 结果为 `partial/write_uncertain` 时停止,不自动重放写请求。
|
|
@@ -15,6 +15,7 @@ cliHelp: "weaver-work-cli {{command}} --help"
|
|
|
15
15
|
|
|
16
16
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。安装或读取失败时必须停止执行;命令均成功后重新读取共享规则,仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
17
17
|
认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
18
|
+
业务命令返回 `authentication` / `session_expired` 时必须停止并读取共享认证规则:Agent 复用任务开始时的宿主判定且禁止调用任何其他登录 Skill;明确为 XiaoE 时只执行 `weaver-work-cli auth xiaoe`,返回 `xiaoe_credential_unavailable` 时停止且不自动改用浏览器登录;非 XiaoE 时取得用户确认的真实 E10 域名后执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。登录恢复后读操作可重放,写操作必须重新 prepare 和确认,`partial` / `write_uncertain` 必须先只读回查。
|
|
18
19
|
所有命令通过 `weaver-work-cli --json {{command}} run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli {{command}} schema` 是 operation、字段和风险等级的合约来源。
|
|
19
20
|
若 `schema` 或 reference 提供 `inputExamples`,优先复用其中和当前意图最接近的样例并只替换用户明确给出的值;标记为 `synthetic` 的样例需要业务复核,不能当作源资料事实。若 operation 标记了 `missingExamples` 或参数覆盖矩阵中的 `needs-confirmation` 字段,先向用户说明缺少哪些入参事实并索取补充,不要通过反复尝试不同 JSON 格式来猜。
|
|
20
21
|
生成或改写的 docs、reference、提示词和命令示例必须同时兼容 Windows 和 macOS/Linux。凡涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对,必须同时给出 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例;Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 示例不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
|
|
@@ -101,7 +101,12 @@ weaver-work-cli --json blog run blog.query --input-json '{"user_type":"myFollow"
|
|
|
101
101
|
1. `confirmation.required` → 向用户复述 prepare 返回的目标、差异与文案,取得明确确认后带 `confirm=true` 重调 apply;不要伪造 continuation。
|
|
102
102
|
2. `target_changed` / `publish_already_exists` → 重新 prepare,再向用户确认。
|
|
103
103
|
3. `partial/write_uncertain` → 停止,不做任何写重试;用 `blog.query_user` 只读回查后向用户报告。
|
|
104
|
-
4. `authentication/session_expired` →
|
|
104
|
+
4. `authentication/session_expired` → 立即停止当前操作并读取 shared 认证规则。
|
|
105
|
+
- 登录失效的认证方式必须由 Agent 复用本任务开始时的宿主判定,禁止调用任何其他登录 Skill。
|
|
106
|
+
- 明确为 XiaoE 时,只执行 `weaver-work-cli auth xiaoe`,不得改用 `auth login`。
|
|
107
|
+
- 统一登录返回 `authentication/xiaoe_credential_unavailable` 时停止并反馈宿主凭据不可用,不自动回退浏览器登录。
|
|
108
|
+
- 非 XiaoE 时不得执行 `auth xiaoe`;取得用户确认的真实 E10 登录域名后,执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。
|
|
109
|
+
- 登录恢复后读操作可重新执行;写操作不得复用旧 continuation,必须重新 prepare 并重新确认。已返回 `partial/write_uncertain` 时先只读回查,禁止直接重放写入。
|
|
105
110
|
|
|
106
111
|
## 不在范围
|
|
107
112
|
|
|
@@ -45,5 +45,7 @@ weaver-work-cli --json blog run blog.query --input-json '{"user_type":"myFollow"
|
|
|
45
45
|
## 失败处理
|
|
46
46
|
|
|
47
47
|
- `range_too_large`:缩小区间(`start_date` 到 `end_date` 按天计数,**上限 62 天**,与 `blog.query_user` 口径一致)。
|
|
48
|
-
- `session_expired
|
|
48
|
+
- `session_expired`:停止查询并执行入口 `SKILL.md` 的登录失效强制分流。
|
|
49
|
+
- XiaoE 只执行 `weaver-work-cli auth xiaoe`;失败时停止,不回退浏览器登录。
|
|
50
|
+
- 非 XiaoE 在确认真实 E10 域名后执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`;禁止调用其他登录 Skill。
|
|
49
51
|
- 返回 0 条:如实告知该范围无数据,不要自动换 user_type 重试。
|
|
@@ -5,7 +5,7 @@ display_name_en: Weaver E10 Document Management
|
|
|
5
5
|
description: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
|
|
6
6
|
description_zh: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
|
|
7
7
|
description_en: "Weaver E10 document management Skill with multiple functional modules covering document CRUD, attachments, folders, sharing, permissions, file settings, FTP/SFTP collection, and file upload."
|
|
8
|
-
version: 1.1.
|
|
8
|
+
version: 1.1.36
|
|
9
9
|
author: 泛微网络科技股份有限公司
|
|
10
10
|
agent_created: true
|
|
11
11
|
requires:
|
|
@@ -18,15 +18,15 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
18
18
|
用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,
|
|
19
19
|
`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,
|
|
20
20
|
导致本技能依然读不到共享规则。
|
|
21
|
-
|
|
21
|
+
命令均成功后重新读取共享规则;若环境中确实无法补齐共享规则,停止依赖登录态的业务操作,告知用户共享认证规则缺失;不要在业务 Skill 中猜测宿主或写死登录命令。
|
|
22
22
|
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。
|
|
23
23
|
传 `true` 时不要再写 `--profile` / `--base-url`。
|
|
24
|
-
|
|
24
|
+
完整规则见 [`auth-and-install.md`](references/auth-and-install.md)。
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
认证与登录态只能按 [`auth-and-install.md`](references/auth-and-install.md) 的规定通过 `weaver-work-cli auth ...` 判断:本 Skill 不自行发起 HTTP 请求,请求头凭证由 CLI 统一注入,Agent 不手写、不索取、不转存,也不得直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。业务入参里出现认证字段会被 CLI 拒绝或剥离。
|
|
27
27
|
请求头三件套由 CLI 统一注入、缺一不可:Cookie: <完整原始 Cookie 串>(禁止裁剪/去重/改写)、eteamsid: <ETEAMSID>、
|
|
28
28
|
User-Agent: AgentType=<agentType>,IsAgent=true。
|
|
29
|
-
|
|
29
|
+
完整契约见 [`auth-and-install.md`](references/auth-and-install.md) 的「请求头契约」。
|
|
30
30
|
|
|
31
31
|
所有命令通过 `weaver-work-cli --json caizhilian run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。
|
|
32
32
|
**不要写内联脚本包装调用**——自写脚本在中文与 Windows 环境下容易出现编码、转义问题,且脚本报错时无法判断调用是否已生效,
|
|
@@ -63,6 +63,7 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
63
63
|
| 想做什么 | 命令 | 按需读取 reference |
|
|
64
64
|
|---|---|---|
|
|
65
65
|
| 查看可用 operation、字段和风险等级 | `caizhilian schema` / `caizhilian operations` | [`agent-entry.md`](references/agent-entry.md) |
|
|
66
|
+
| 安装检查、登录、登录失效、切换已有环境、超时与重试预算 | `weaver-work-cli --version`、`auth status`、`auth xiaoe`、`auth login`、`auth profile use` | [`auth-and-install.md`](references/auth-and-install.md) |
|
|
66
67
|
| 接口连通性与登录态自检 | `caizhilian health` | [`agent-entry.md`](references/agent-entry.md) |
|
|
67
68
|
| 检索文档 / 查文档详情 / 查当前登录人 | `caizhilian search`、`caizhilian get`、`caizhilian run caizhilian.document.search` / `.get`、`caizhilian.user.current` | [`document.md`](references/document.md) |
|
|
68
69
|
| 创建文档(HTML / Markdown / Office / 批量上传) | `caizhilian run caizhilian.document.create-html|create-markdown|create-office|create-by-upload.prepare/apply` | [`document.md`](references/document.md) |
|
|
@@ -79,8 +80,12 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
79
80
|
| 备份设置(开关、规则 CRUD、启停) | `caizhilian run caizhilian.setting-backup.get` / `.set.prepare` / `.set.apply` / `.rule.*` | [`setting-backup.md`](references/setting-backup.md) |
|
|
80
81
|
| 加解密设置(8 项配置) | `caizhilian run caizhilian.setting-encrypt.get` / `.set.prepare` / `.set.apply` | [`setting-encrypt.md`](references/setting-encrypt.md) |
|
|
81
82
|
| 存储设置(实例与规则管理) | `caizhilian run caizhilian.setting-storage.instance.*` / `.rule.*` | [`setting-storage.md`](references/setting-storage.md) |
|
|
83
|
+
| 存储设置业务概念与字段对照 | 修改存储规则前核对目录归属、存储类型和 DTO 字段 | [`setting-storage-docs-summary.md`](references/setting-storage-docs-summary.md) / [`setting-storage-field-map.md`](references/setting-storage-field-map.md) |
|
|
82
84
|
| 文件采集(FTP/SFTP 任务管理) | `caizhilian run caizhilian.file-collection.task.*` / `.scan.*` / `.run.*` / `.cancel.*` / `.delete.*` | [`file-collection.md`](references/file-collection.md) |
|
|
83
85
|
| 新建采集任务 | `caizhilian run caizhilian.file-collection.task.save.prepare/apply` | [`file-collection.md`](references/file-collection.md) |
|
|
86
|
+
| 文件采集动作流检测、兼容校验、动态创建、启用与换绑 | `caizhilian run caizhilian.file-collection.workflow.*` | [`action-flow.md`](references/action-flow.md) |
|
|
87
|
+
| 文件采集端到端流程与规则索引 | 任务、资源、动作流、扫描、运行和结果判读 | [`task-workflow.md`](references/task-workflow.md) / [`rule-index.md`](references/rule-index.md) |
|
|
88
|
+
| 宿主平台代执行文件采集 | 宿主调用 CLI、消费 JSON,并遵守执行与脱敏纪律 | [`host-executor-prompt.md`](references/host-executor-prompt.md) / [`host-platform-integration.md`](references/host-platform-integration.md) |
|
|
84
89
|
| 文件上传(本地文件上传到文件服务) | `caizhilian run caizhilian.file-upload.contract` / `.prepare` / `.upload.prepare` / `.upload.apply` | [`file-upload.md`](references/file-upload.md) |
|
|
85
90
|
| 任何写操作的确认链、票据报错、写结果不确定 | `<name>.prepare` -> 用户确认 -> `<name>.apply --continuation TOKEN --yes` | [`write-protocol.md`](references/write-protocol.md) |
|
|
86
91
|
| 环境列表 / 配置查看 / 重载配置 / 切换环境等未暴露能力 | 无 caizhilian 命令,改用框架命令 | [`withheld.md`](references/withheld.md) |
|
|
@@ -88,7 +93,7 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
88
93
|
文件上传支持秒传、普通流式上传和分片流式上传;成功必须有非空文件 ID、大小校验与私有回执。
|
|
89
94
|
上传协议的 `lastModified`、`lastModifiedDate` 必须使用相同的整数毫秒值,由 CLI 自动处理;
|
|
90
95
|
小数毫秒可能触发 E10 整数解析错误,详见 [`file-upload.md`](references/file-upload.md) 的时间戳规则与失败处理。
|
|
91
|
-
认证沿用 `
|
|
96
|
+
认证沿用 [`auth-and-install.md`](references/auth-and-install.md) 的登录规则;不执行独立文件上传 Skill 的 bundle 或独立浏览器登录。
|
|
92
97
|
|
|
93
98
|
处理链:
|
|
94
99
|
|
|
@@ -135,9 +140,13 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
135
140
|
- 失败后先看进程退出码、`error.type`、`error.subtype` 和 `error.message`。
|
|
136
141
|
- **除非错误明确提示可恢复或需要补充参数,否则不要重复刷同一个 operation。**
|
|
137
142
|
- 写请求已经发出后遇到结果不确定必须停止;不要把 `.apply` 当成可重试的读操作。
|
|
138
|
-
- **错误为 `authentication` 或 `session_expired` 时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试。**
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
- **错误为 `authentication` 或 `session_expired` 时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试。** 先读取同级 `weaver-e10-shared` 的认证规则。
|
|
144
|
+
- 登录失效的认证方式必须由 Agent 复用本任务开始时的宿主判定,禁止调用任何其他登录 Skill。
|
|
145
|
+
- 明确为 XiaoE 时,只执行 `weaver-work-cli auth xiaoe`,不得改用 `auth login`。
|
|
146
|
+
- 统一登录返回 `authentication/xiaoe_credential_unavailable` 时停止并反馈宿主凭据不可用,不自动回退浏览器登录。
|
|
147
|
+
- 非 XiaoE 时不得执行 `auth xiaoe`;取得用户确认的真实 E10 登录域名后,执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。
|
|
148
|
+
- 登录恢复后读操作可重新执行;写操作不得复用旧 continuation,必须重新 prepare 并重新确认。已返回 `partial/write_uncertain` 时先只读回查,禁止直接重放写入。
|
|
149
|
+
- 共享规则不可用时停止并告知用户,不在业务 Skill 中猜测登录方式。
|
|
141
150
|
- `continuation_*` / `plan_changed` / `file_changed` 一律重新 prepare,不要试图修改票据或只改 apply 入参。
|
|
142
151
|
- **明确的业务错误直接转达,不要深挖**:服务端返回的业务提示(如「该附件不支持转为 PDF」「无该文档的共享权限」)是权威结论,直接转述给用户并给出应对建议;不要翻查源码、写调试脚本或追查原始响应找「为什么」。只有错误提示本身含糊(空 message、`INTERNAL_ERROR`)时才进一步诊断。
|
|
143
152
|
- **不要编造失败原因**:不了解真实原因时,直接说明并请用户联系文档负责人或管理员确认;禁止推测平台行为、杜撰因果关系(如「加了附件后权限会变」),也不要替用户断言其本地环境或文件状态。转达时用用户能理解的自然语言,不要把技术字段名、状态码原样抛给用户。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# 动作流合同(文件采集)
|
|
2
|
+
|
|
3
|
+
文件采集任务必须绑定一个兼容的「动作流」应用。合法来源只有两条:**检测已有**与**动态新建**。禁止上传、迁入或导入固定动作流包,禁止手写设计文件。
|
|
4
|
+
|
|
5
|
+
命令形式:
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
# Windows PowerShell
|
|
9
|
+
weaver-work-cli --json caizhilian run caizhilian.file-collection.<操作> --input-json '<json>'
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# macOS/Linux(bash/zsh)
|
|
14
|
+
weaver-work-cli --json caizhilian run caizhilian.file-collection.<操作> --input-json '<json>'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
写操作(`workflow.create` / `workflow.enable` / `workflow.update-task`)分 `.prepare` / `.apply` 两步,确认协议见 `write-protocol.md`。
|
|
18
|
+
|
|
19
|
+
## 目录结构模式(先定,后传)
|
|
20
|
+
|
|
21
|
+
`retain_dir_struct`(是否维持原目录结构)必须在检测/新建动作流**之前**确定,并在动作流与保存任务时保持同一取值:
|
|
22
|
+
|
|
23
|
+
| 模式 | 动作流要求 | 任务行为 |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| `true`(维持目录) | 触发器额外提供 `folderId` 输入,文档保存节点按 `folderId` 决定落点目录 | 保留 FTP/SFTP 上的目录层级 |
|
|
26
|
+
| `false`(不维持) | 文档保存节点使用固定目标目录 | 文件落到固定目录 |
|
|
27
|
+
|
|
28
|
+
两者不得混用:用 A 模式检测通过的动作流去保存 B 模式任务会被拒绝。
|
|
29
|
+
|
|
30
|
+
## 路径一:选择已有动作流
|
|
31
|
+
|
|
32
|
+
1. 执行 `workflow.search`(可带 `name_contains` 过滤),返回候选列表(`file_collection_action_flow_candidates.v1`):序号、名称、状态、更新时间。
|
|
33
|
+
- 候选**仅供展示**,不是关联凭据。向用户展示序号/名称/状态,等待用户挑一个。
|
|
34
|
+
2. 用户确认后执行 `workflow.inspect`,入参:
|
|
35
|
+
- `application_id`:用户确认的应用 ID;
|
|
36
|
+
- `retain_dir_struct`:与任务保持一致;
|
|
37
|
+
- `archive_required`:归档分支传 `true`。
|
|
38
|
+
3. `workflow.inspect` 读取应用、活动版本和设计并做兼容检测,返回 `validation.compatible` 与 `validation.issues`:
|
|
39
|
+
- `compatible=true`:才允许把该应用 ID 用于保存任务或更新任务动作流;
|
|
40
|
+
- `compatible=false`:把 `issues` 原样反馈给用户(如缺少触发输入、缺少文档保存节点),不得关联。
|
|
41
|
+
- 返回中的场景标识与密钥字段仅内部使用,**不得展示给用户**。
|
|
42
|
+
|
|
43
|
+
兼容条件(任一不满足即拒绝关联):
|
|
44
|
+
|
|
45
|
+
- 应用可正常使用;未启用的先 `workflow.enable` 启用,再重新 `workflow.inspect`。
|
|
46
|
+
- 含自定义触发器,触发输入必须有 `fileId`、`filename`、`employeeId`。
|
|
47
|
+
- 归档分支(`archive_required=true`)额外要求 `fondsId` 输入。
|
|
48
|
+
- 维持目录(`retain_dir_struct=true`)额外要求 `folderId` 输入。
|
|
49
|
+
- 动作链包含「文档保存」与「输出」两类节点。
|
|
50
|
+
|
|
51
|
+
## 路径二:动态新建动作流
|
|
52
|
+
|
|
53
|
+
执行 `workflow.create`(写操作),入参:
|
|
54
|
+
|
|
55
|
+
| 入参 | 说明 |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| `name` | 可选,默认按 UTC+8 生成 `文件采集动作流(yyyyMMdd HHmmss)` |
|
|
58
|
+
| `archive_required` | 归档分支传 `true` |
|
|
59
|
+
| `retain_dir_struct` | 与任务保持一致 |
|
|
60
|
+
|
|
61
|
+
CLI 自动完成:创建应用 → 注册变量(`fileId` / `filename` / `employeeId`,归档加 `fondsId`,维持目录加 `folderId`)→ 生成标准设计并校验、保存 → 启用应用 → 返回应用 ID。调用方**不手写**触发字段或设计文件。
|
|
62
|
+
|
|
63
|
+
标准链路固定为:自定义触发 → 文档保存 → 输出。文档保存的标题取 `filename`、操作者取 `employeeId`,输出的文档 ID 取自文档保存节点的返回值。不插入其他节点。
|
|
64
|
+
|
|
65
|
+
## 维护与关联
|
|
66
|
+
|
|
67
|
+
- 应用存在但未启用:`workflow.enable` 启用后重新 `workflow.inspect`。
|
|
68
|
+
- 任务尚未启动、要换绑定的动作流:`workflow.update-task`(`task_id` + 新 `workflow_id`)。E10 在任务启动后锁定完整配置,改不动时**报告失败并新建任务**,不得谎报更新成功。
|
|
69
|
+
- 普通执行不要走任何「自定义设计」入口;只有用户明确提出高级定制时才考虑,且仍须满足上述兼容条件。
|
|
70
|
+
- 把动作流 ID 用于 `task.save` 之前,确认它来自 `workflow.inspect`(检测通过)或 `workflow.create`(新建返回),两者以外的 ID 一律不接受。
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
- 业务调用统一走 `weaver-work-cli --json caizhilian run <operation>`;高频动作有薄包装:`caizhilian search` / `caizhilian get` / `caizhilian health`。
|
|
13
13
|
- 简单 JSON 优先 `--input-json '<json>'`;多行或含中文引号的复杂 JSON 先写成 UTF-8 文件再 `--input <path>`;只有确认当前 shell 管道稳定时才用 `--input -`。
|
|
14
14
|
- `--input` 与 `--input-json` 不能同时传,否则 `validation/input_conflict`。
|
|
15
|
+
- `--input <path>` 默认只告警但继续执行;运行环境要求严格时可加 `--no-file-input`(或设置 `WEAVER_WORK_CLI_FILE_INPUT=deny`)拒绝文件输入,需要临时放行时加 `--allow-file-input`。`--input -` 与业务附件参数(如附件上传的文件路径)不受该策略限制。
|
|
16
|
+
- **不要用临时文件中转上一步的输出**:同一次任务里需要把上一步结果作为下一步入参时,用 shell 变量保存 stdout 再传入;只有用户自己提供的 JSON 文件、或业务上确实要求文件入参时,才用 `--input <path>`。
|
|
15
17
|
- 字段名必须与 `caizhilian schema` 完全一致:多传字段报 `validation/unknown_field`,入参不是对象报 `validation/input_not_object`,出现 `__proto__` / `constructor` / `prototype` 报 `validation/forbidden_key`。
|
|
16
18
|
- ID 类字段(`doc_id`、`folder_id`、`user_id` 等)统一是纯数字字符串,**一律用字符串传**(如 `"5818986505368959471"`):19 位 ID 写成 JSON 数字会在解析阶段被截断,查不到却看不出原因;超出安全整数范围的数字入参直接报 `validation/number_out_of_range`。
|
|
17
19
|
不是数字报 `validation/id_invalid`。
|
|
@@ -73,11 +75,13 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
73
75
|
}
|
|
74
76
|
```
|
|
75
77
|
|
|
78
|
+
- 成功看退出码 0 且 `ok === true`;失败看非 0 退出码和 `error.type` / `error.subtype` / `error.message`。不要用「退出码等于 0 之外的其他字段」判断成败,成功 envelope 没有顶层 `code` / `msg`。
|
|
79
|
+
- 退出码语义:`0` 成功、`2` 参数或业务输入错误、`3` 认证错误、`4` 网络错误、`10` 需要明确确认、`11` 部分完成或结果不确定。`retryable=true` 只表示读操作或准备阶段可能可以重试;写请求已经发出后遇到结果不确定必须停止。
|
|
76
80
|
- `data` 是业务结果;`meta` 只在有上下文时出现(例如 prepare 的 `status: "PREPARED"`、下载的 `doc_id` / `attachment_id`、`health` 的 `profile` / `tenantKey`)。
|
|
77
81
|
- `caizhilian health`(`caizhilian.system.health`)返回 `{ environment, healthy, base_url, url, status_code, business_code, diagnosis, elapsed_ms, message? }`:
|
|
78
82
|
`healthy=false` 时按 `diagnosis` 定位原因(`network_error` / `http_error` / `http_status_mismatch` / `business_code_mismatch` / `request_failed`,多项用逗号连接),
|
|
79
83
|
`ok` 表示各项正常;
|
|
80
|
-
未登录时改为报 `authentication/session_unavailable
|
|
84
|
+
未登录时改为报 `authentication/session_unavailable`,先按 `auth-and-install.md` 完成登录。
|
|
81
85
|
- `warnings` 是非阻断提醒(共享兜底被覆盖、只读回查发现差异、批量上传部分失败等),必须原样转述给用户,不要静默丢弃。
|
|
82
86
|
- 当前输出层只有完整 JSON,没有 `--jq` / `--format table` / `--page-all`。回复时不要原样贴完整 JSON:先摘要关键字段与条数,列表默认小页(`page_size=10`),需要完整内容时落本地文件再给路径。
|
|
83
87
|
|
|
@@ -101,7 +105,7 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
101
105
|
| `validation/number_out_of_range` | 大整数(ID)用 JSON 数字传入,已超出可精确表示的范围 | 改成字符串传一次;不要原样重试,数字形式已经被截断 |
|
|
102
106
|
| `validation/input_invalid` / `input_conflict` / `input_unreadable` | JSON 入参问题 | 修正文件或改用 `--input-json` |
|
|
103
107
|
| `validation/operation_unknown` | operation 名写错或未暴露 | 用 `caizhilian operations` 校对,withheld 能力按提示改用框架命令 |
|
|
104
|
-
| `authentication/session_unavailable` | 本地无可用登录态 |
|
|
108
|
+
| `authentication/session_unavailable` | 本地无可用登录态 | 按 `auth-and-install.md` 引导用户登录,禁止猜域名或用示例域名 |
|
|
105
109
|
| `authentication/session_expired` | 登录态失效(HTTP 401/302) | 停止重试,引导重新登录后再执行原操作 |
|
|
106
110
|
| `network/*` | 网络或协议错误 | `retryable=true` 时最多重试一次,仍失败即停止 |
|
|
107
111
|
| `api/http_error` | HTTP 非 2xx | 把 `code` 与 message 交给用户,写操作不要重复提交 |
|