# 泛微E10事井然项目管理 CLI（project）

`weaver-work-cli project` 封装事井然项目管理的项目、任务、字典、人员和字段解析能力。CLI 命令后缀为 `project`，Agent Skill 名称为 `weaver-e10-shijingran`。

## 能力范围

- 查询项目/任务列表和详情，默认第 1 页 10 条；未指定状态时仅返回未开始、进行中。- 查询项目/任务类型、状态、紧急程度字典。
- 按姓名解析员工、部门、分部 ID；按 Ebuilder 表单字段解析关联对象。
- 创建、修改、删除项目和任务，全部使用 `prepare -> apply` 确认链。
- 仅在接口异常或用户主动询问版本时调用 `project.version.check`，最低版本为 `20.6.11`。

## operation

完整 JSON Schema 通过以下命令读取：

```text
weaver-work-cli project schema
```

| 意图 | operation |
| --- | --- |
| 获取应用 ID | `project.app.ids` |
| 获取任务/项目对象 ID | `project.object.id` |
| 获取表单字段定义（支持按字段名/关键字过滤） | `project.form.fields` |
| 获取选择字段选项 | `project.form.options` |
| 关联表单按标题查询 | `project.form.data.page` |
| 应用版本诊断 | `project.version.check` |
| 任务列表/详情 | `project.task.list` / `project.task.detail` |
| 项目列表/详情 | `project.project.list` / `project.project.detail` |
| 任务字典 | `project.dictionary.task-type` / `project.dictionary.task-priority` / `project.dictionary.task-status` |
| 项目字典 | `project.dictionary.project-type` / `project.dictionary.project-priority` / `project.dictionary.project-status` |
| 人员/组织解析 | `project.employee.resolve` / `project.department.resolve` / `project.subcompany.resolve` |
| 任务创建 | `project.task.create.prepare` / `project.task.create.apply` |
| 任务修改 | `project.task.update.prepare` / `project.task.update.apply` |
| 任务删除 | `project.task.delete.prepare` / `project.task.delete.apply` |
| 项目创建 | `project.project.create.prepare` / `project.project.create.apply` |
| 项目修改 | `project.project.update.prepare` / `project.project.update.apply` |
| 项目删除 | `project.project.delete.prepare` / `project.project.delete.apply` |

## 常用命令

Windows PowerShell：

```powershell
weaver-work-cli --json project run project.task.list --input-json '{"pageNo":1,"pageSize":10}'
weaver-work-cli --json project run project.task.create.prepare --input-json '{"records":[{"task_name":"需求评审"}]}'
weaver-work-cli --json project run project.task.create.apply --input-json '{"continuation":"PREPARE_CONTINUATION","confirm":true}'
```

macOS/Linux（bash/zsh）：

```bash
weaver-work-cli --json project run project.task.list --input-json '{"pageNo":1,"pageSize":10}'
weaver-work-cli --json project run project.task.create.prepare --input-json '{"records":[{"task_name":"需求评审"}]}'
weaver-work-cli --json project run project.task.create.apply --input-json '{"continuation":"PREPARE_CONTINUATION","confirm":true}'
```

## 安全边界

- 创建、修改、删除必须先执行 `prepare`，向用户摘要目标、差异和风险；用户明确确认后才能调用 `apply`。
- `apply` 必须 `confirm: true`，并原样传入 `prepare` 返回的 `continuation`。
- 修改/删除在 `apply` 前会再次回查并校验目标指纹；目标变化时必须重新 `prepare`。
- 写入结果不确定时返回 `partial/write_uncertain`，禁止自动重试写入，只能先做只读回查。
- 涉及附件字段时，CLI 只接受已上传文件 ID；上传/解析文件前必须先取得用户对文件内容进入外部服务和大模型上下文的确认。
- 禁止绕过 CLI 直接 `curl`/`fetch` E10 接口，禁止读取或转述认证 Cookie、ETEAMSID 或 Token。
- 任务/项目列表和详情默认为有记录 ID 的业务数据补充 `detail_url`；传 `withDetailUrl:false`，或 `fields` 不包含 `detail_url` 时跳过对象 ID 解析。
- 用户要求查询全部状态时，列表可传 `allStatuses:true`；此时不传系统状态和业务状态。
- 人员过滤字段支持 `@me`，CLI 自动替换为当前登录用户 ID，减少一次 `auth status`。
- 列表、详情和字典查询支持 `fields` 裁剪输出；列表/详情始终保留 `id` 和记录名称字段；`fields` 包含 `detail_url` 时才生成详情链接。
