--- name: 项目经费进度播报助手 description: "高校项目经费执行监测与播报:按项目台账自动计算实际支出率与序时进度,识别严重滞后/支出异常偏快,生成三段式播报摘要、暂付款冲销与结题报销提醒,支持月度定时播报并输出《经费执行简报》。" version: 1.0.2 author: 深圳匠厂科技有限公司 metadata: openclaw: slug: track-fund-progress-default platform_kit_min_version: "1.2.11" emoji: "📊" category: "财务" brands: - jiangchang - huashang developer_ids: - 79017 # 开发者本人匠厂用户 ID(设置 → 用户信息 → 复制) allowed-tools: - bash --- # 项目经费进度播报助手(track-fund-progress-default) 高校项目经费执行监测与播报:按项目台账(立项/到账/报销/暂付款/执行期)自动计算**实际支出率**与**序时进度**,识别"严重滞后 / 支出异常偏快 / 正常",生成三段式播报摘要与《经费执行简报》(含柱状图);支持暂付款冲销提醒、结题临近提醒与**每月定时播报**。全部数字来自本地确定性计算与规则模板,不编造数据;播报仅作提醒,请以财务系统账面为准。 ## Agent / 宿主编排 - **Agent 是入口与编排者**:理解查询意图(如"查一下我的国自然经费")、定位负责人与项目、触发播报 Action,并用业务语言解读播报结论。 - 台账数据来自本地库(表单录入 / JSON 批量导入 / 数据管理直接编辑);Agent 不得凭空编造项目金额,台账缺失时引导补录。 - 播报文本由技能内核以规则模板生成(确定性、零幻觉);Agent 转述时可口语化,但**不得更改数字与状态判定**。 - 本技能无 RPA、无浏览器自动化;不修改任何外部系统数据。 ## 能力类型与触发 | 你要做什么 | Agent 怎么做 | 进任务中心? | |------------|--------------|--------------| | 查台账 / 查播报历史 / 查阈值 / 统计 | 短 CLI:`list-projects` / `list-reports` / `view-rules` / `stats` | 否 | | 播报全部在研项目或指定项目(同步秒级) | `run_skill_action` → `broadcast-progress`(`input.projectNo/pi/asOf`) | 否 | | 月度定时播报(全部在研项目 + 汇总简报) | `run_skill_action` → `broadcast-monthly` | 是(该 Action 为 async) | | 录入/更新项目台账 | 数据管理表上操作,或 `run_skill_action` → `add-project`;批量走 `import-projects` | 否 | | 重建《经费执行简报》HTML | `run_skill_action` → `render-html` | 否 | | 调整预警阈值 | 数据管理行级按钮 `set-rule`;或短 CLI:`set-rule` | 否 | | 用户只问用法 / 能做什么 | 读根目录 `README.md`;逐步操作再读 `TUTORIAL.md` | — | 进不进任务中心**只**看该 Action 的 `executionProfile`(sync 当场返回 / async 进任务中心),与数据管理、对话、定时等触发入口**无关**;每个 Action 都已显式声明 `executionProfile`。 本技能为"即时计算"型能力:提交即算、当场出结论,不存在「先准备本地数据、再对外产生副作用」的两段式,因此无需按「准备 vs 执行」拆分;月度播报为无人值守只读计算+写本地记录,安全可定时。本技能无网页 RPA,不涉及账号管理;宿主账号/Profile/租约规范见 `development/ACCOUNT_MANAGER.md`。 ## 用户意图路由表 | 用户意图 | Agent 怎么做 | 进任务中心? | |------------------------|--------------|--------------| | "查一下我的国自然经费执行得怎么样" / "播报我的项目进度" | 确定负责人姓名;`run_skill_action` → `broadcast-progress`,`input.pi=负责人`(单项目传 `projectNo`) | 否 | | "月度播报一次全部项目" / 定时到点自动执行 | `run_skill_action` → `broadcast-monthly` | 是(因该 Action 为 async) | | "录入一个新项目 / 把这批项目导进去" | 单条走数据管理表单 `add-project`;批量把 JSON 交给 `import-projects` | 否 | | "我上次播报的结果是什么" | 短 CLI:`list-reports [--status-tag 严重滞后]`;详情 `show-report --id N` | 否 | | "重新生成简报" | `run_skill_action` → `render-html`;结果在数据管理 HTML 报告侧栏 | 否 | | "滞后阈值改成 15%" | `run_skill_action` → `set-rule`(`ruleKey=lag_threshold, value=0.15`)或数据管理行级按钮 | 否 | | "全校经费执行统计" | 短 CLI:`stats` | 否 | **硬规则:** 1. `broadcast-monthly` 是本技能唯一 async Action;禁止用 bash 跑它再轮询等待。 2. 台账金额必须由用户提供或导入,Agent 不得编造、估算金额与日期。 3. 播报结论必须说明"仅作提醒,以财务系统账面为准";不得替 PI 决定如何花钱。 4. 项目台账属敏感经营数据;对话查询应限定负责人本人的项目,滞后 Top 名单面向科研秘书/财务处场景。 5. 一个业务能力一个 Action,用多个 placements 挂入口;底层同一 `scripts/main.py` CLI。 Agent 执行契约细节:`references/CLI.md`、`references/ACTIONS.md`、`references/SCHEMA.md`。 ## 共享 Python(必读) 宿主共享 runtime 在 `{JIANGCHANG_DATA_ROOT}/python-runtime/.venv`,并已前置到 PATH(同时设 `VIRTUAL_ENV`)。短 CLI 一条命令直接跑: ```bash python {baseDir}/scripts/main.py health python {baseDir}/scripts/main.py version python {baseDir}/scripts/main.py init-db python {baseDir}/scripts/main.py broadcast [--pi 负责人] [--project-no X] [--as-of YYYY-MM-DD] ``` - 公共库来自共享 venv 的 `jiangchang-platform-kit>=1.2.11`(包名路径 `jiangchang_skill_core`);不要 vendor。 - **禁止**用 `uv run python` 跑技能脚本(会建临时环境,缺 `jiangchang_skill_core`);**禁止** Agent 自行 `pip install`。 - 根目录 `requirements.txt` 只声明技能特有依赖(本技能当前无)。 - 配置:用户 `.env` 在 `{JIANGCHANG_DATA_ROOT}/{JIANGCHANG_USER_ID}/{slug}/.env`;优先级:进程环境变量 > 用户 `.env` > `.env.example`。 ## 面向用户问答(LLM 规则) - 本文(`SKILL.md`)是 LLM / OpenClaw 平台读取的技能入口,**不是**用户市场说明。 - 当用户询问"这个技能是做什么的 / 怎么用 / 适合什么场景 / 用前准备什么 / 得到什么",**必须优先读取**根目录 `README.md`(能力说明)与 `TUTORIAL.md`(逐步用法),并用业务语言回答。 - **回答「怎么用 / 能做什么」时的要求**:优先读 `TUTORIAL.md`;**禁止**在回答中粘贴 `python …/scripts/main.py …` 或其它命令行(除非用户明确索要命令,或自称技术人员/开发者);**禁止**为答用法去 `dir` / `ls` 列技能目录,或默认打开 `references/`、`development/`。 - **禁止**向普通用户暴露 JSON 字段名、表名、`error_code` 等实现细节(除非用户明确询问技术实现)。 - 市场说明 Tab(`README.md`)不含分步操作;排障步骤在 `TUTORIAL.md`「常见卡住怎么办」。 ## 文档分工 | 文档 | 读者 | 用途 | |------|------|------| | 根目录 `README.md` | 普通用户 | 市场 **说明** Tab(`readme_md`) | | 根目录 `TUTORIAL.md` | 普通用户 | 市场 **教程** Tab(`tutorial_md`) | | 根目录 `DEMO.md` | 普通用户 | 市场 **演示** Tab(`demo_video_url` + `demo_md`) | | 根目录 `CHANGELOG.md` | 普通用户 | 市场 **更新日志** Tab(`changelog`) | | `SKILL.md`(本文) | LLM / OpenClaw 平台 | 技能入口、触发与运行契约摘要 | | `references/` | Agent 编排 / 调用 | CLI、Action、schema 契约(Agent 主读) | | `development/` | 开发者 / AI 编程代理 | 需求、开发教程、测试、深度技术规范 | ## 目录约定 - CLI 入口固定为 `scripts/main.py`;业务逻辑按 `cli / db / service / util` 分层。 - 业务表:`fund_projects`(项目台账)、`progress_reports`(播报记录)、`alert_rules`(预警规则)。 - HTML 简报写入技能数据目录 `html/`(单项目 `report-N.html`、月度汇总 `brief-*.html`),重建走固定 Action id `render-html`。 ## 平台元数据 - `metadata.openclaw.developer_ids`:发布后默认可见的用户 ID 列表;**发布前必须替换为本人的匠厂用户 ID**(设置 → 用户信息 → 复制),否则开发期自己无法在市场安装自测。 - 当 `access_scope = 0`(不公开)时,平台会把 `developer_ids` 中的用户自动补写到 `skill_user_access`。