Skill: xjwang2002/easysoftskill (version 1.0.0)

--- name: easysoftskill description: "易软（EasySoft）数据查询 Skill。当用户询问易软系统内的数据报表时触发。触发关键词：易软、报表、数据查询、收缴率、预收率、清欠率、欠费、应收、实收、月报。" metadata: openclaw: emoji: "📊" compatibility: - qclaw - openclaw - "*" --- # 易软数据查询 Skill > ✅ **跨平台兼容**：基于 OpenClaw Skill 标准开发，可安装运行于 QClaw、OpenClaw 及所有兼容 OpenClaw Skill 协议的小龙虾平台。 --- ## 一、凭证配置说明 > ⚠️ 首次使用前，必须完成凭证初始化。凭证在用户首次查询时引导输入。 ### 需要提供的三项信息 | # | 名称 | 说明 | |---|------|------| | 1 | **物业公司 Key** | 由易软公司分配给每个物业公司的唯一字符串 | | 2 | **易软账号** | 登录易软系统的用户名 | | 3 | **易软密码** | 登录易软系统的密码 | ### 安全说明 - 三项凭证在用户首次查询时引导输入，技能会在本机生成加密配置文件存储 - 加密密钥与本机硬件绑定，拷贝技能包到其他电脑无法使用 --- ## 二、凭证初始化流程 当用户触发任意报表查询，且本机尚无有效凭证时，AI 引导用户分步输入三项凭证（物业公司Key → 易软账号 → 易软密码），验证通过后自动加密存储。 **验证失败处理**：提示错误原因，引导用户重新输入，循环验证直至成功。 --- ## 三、报表查询鉴权流程 每次用户请求报表数据时，按顺序执行以下步骤： 1. **加载凭证**：从本机加密配置读取已存储的凭证 2. **获取接口地址**：根据物业Key获取对应的系统地址 3. **验证登录状态**：确保凭证有效 4. **匹配项目/科目**：（可选）根据用户描述匹配项目和科目 5. **调用报表接口**：执行查询并返回结果 --- ## 四、技能清单 | # | 报表名称 | 触发关键词 | 状态 | |---|---------|-----------|------| | 01 | 收缴率报表 | 收缴率、预收率、清欠率 | 🚧 功能开发中 | | 02 | 欠费报表 | 欠费 | ✅ 已上线 | | 03 | 应收报表 | 应收 | 🚧 功能开发中 | | 04 | 实收报表 | 实收 | 🚧 功能开发中 | | 05 | 月报报表 | 月报 | 🚧 功能开发中 | > ⚠️ 当用户选择了标注为"🚧 功能开发中"的报表时，提示：「该报表功能正在开发中，敬请期待！」 ### 分步引导流程 当用户未提供完整参数时，按以下步骤引导： 1. **列出技能清单**：显示可选报表类型 2. **选择报表类型**：用户选择要查询的报表 3. **显示可选条件**：列出该报表的筛选条件和结果类型 4. **逐步选择参数**：引导用户选择各项参数 5. **确认查询**：确认后执行查询 --- ## 五、欠费报表分步引导（已上线） > **默认值说明**： > - 费用归属时间类型：默认「分摊时间」 > - 截止时间：默认「当前日期」 **第一步：选择项目（可选）** ``` 请选择要查询的项目（可选）： - 可输入项目名称或小区名称 - 不选择则查询全部项目 ``` **第二步：选择收费科目（可选）** ``` 请选择要查询的收费科目（可选）： - 可输入科目名称 - 不选择则查询全部科目 ``` **第三步：选择时间范围（可选）** ``` 请输入费用归属时间范围（可选）： - 例如：2026-01-01 至 2026-03-31 - 或直接描述：2026年3月的物业费 - 不选择则查询全部时间段 ``` **第四步：选择报表结果类型** ``` 请选择查询结果类型： 1. 片区汇总表 2. 项目汇总表（将映射为：小區汇总表） 3. 科目明细表 4. 项目科目明细表（将映射为：小區科目明细表） → 系统会自动将「项目」替换为「小区」后调用接口 ``` **第五步：确认查询** ``` 即将查询欠费报表： - 项目：[全部/项目名] - 科目：[全部/科目名] - 时间范围：[全部/日期范围] - 结果类型：[类型] - 费用归属时间类型：分摊时间（默认） - 截止时间：[当前日期]（默认） 是否确认查询？(是/否) ``` ### 同技能组报表快速切换规则 当用户在同一技能组（如欠费报表）内切换不同报表结果类型时，**无需重新提供参数**： 1. **参数复用**：已查询过的项目、科目、时间范围等参数自动保留 2. **仅修改 PageKey**：只需将 PageKey 参数修改为用户新提供的报表结果类型 3. **自动映射**：用户界面显示的名称会自动映射为接口所需的中文值（如"项目汇总表"→"小区汇总表"） ### 查询结果展示规则 #### 1. 数据展示格式 所有报表查询结果**必须按照 API 接口返回的原始格式展示**： - 保持字段顺序与 API 一致（**除 LAST 等重排序前缀按 API 规则自动调整列位置外**） - 显示原始数值格式（如有负数、零值等） **示例（项目科目明细表）：** ``` | 项目名称 | 高层物业服务费 | 车位服务费 | 公摊照明电费 | 空置物业费 | 居民水费 | 居民电费 | 特约服务费 | 小计 | |----------|----------------|------------|--------------|------------|----------|----------|------------|------| | 红牌楼北街1号 | 4,140.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 4,140.00 | | 学习小区 | 86,546.78 | 800.00 | 0.00 | 0.00 | 330.00 | 200.00 | 380.00 | 88,256.78 | ``` #### 2. 列名映射规则（智能前缀识别） API 字段名可能包含多种前缀格式，需要智能识别并处理： | 前缀类型 | 处理方式 | 示例 | |---------|---------|------| | **MoneySum** | 移除此前缀，保留原始科目名称 | MoneySum居民水费 → 居民水费 | | **Sum** | 移除此前缀 | Sum金额 → 金额 | | **Count** | 移除此前缀 | Count数量 → 数量 | | **INDEX** | 移除前缀，显示为「编号」列，AI 自动为每行填充顺序值（从1开始） | INDEX编号 → 编号（值：1,2,3...） | | **HIDE** | **隐藏该列**，不显示 | - | | **LAST** | 移除此前缀，列移到最后显示 | LAST名称 → 名称（显示在最后） | | **FIXED** | 移除此前缀，列固定不动 | FIXED项目 → 项目（冻结列） | | **MONEY** | 移除此前缀，数值按千分位显示 | MONEY总额 → 总额（格式：10,000） | | **PERCENT** | 移除此前缀，按百分比显示 | PERCENT占比 → 占比（格式：25.00%） | | **NOZERO** | 移除此前缀，小数为0时不显示 | NOZERO完成率 → 完成率（显示「-」） | | **LEFT/RIGHT** | 移除此前缀，确定对齐方式 | LEFT名称 → 名称（右对齐处理） | | **WIDTH[xxx]** | 移除此前缀，设置列宽 | WIDTH[100]金额 → 金额 | | **FONTCOLOR[x]** | 移除此前缀，设置字体颜色 | FONTCOLOR[1]标题 → 标题 | | **COLCOLOR[x]** | 移除此前缀，设置列背景色 | - | | **ROWCOLOR[x]** | 移除此前缀，设置行背景色 | - | **多层级表头示例：** ``` {本月应收}结转往月 → 结转往月 {本月应收}本月新增 → 本月新增 {2009年|上半年|一季度}Sum入库 → 一季度入库 ``` → 处理方式：保留最内层实际名称，移除 Sum/MoneySum 等前缀 > ⚠️ **核心原则**：前缀用于控制显示格式，**显示时全部移除**，只保留实际业务名称。 #### 3. 查询后必做步骤 在显示查询结果后，**必须询问用户**是否需要查看同技能组下的其他报表： ``` 您还可以查看以下其他汇总报表，输入报表编号或报表名称即可查询： | # | 报表类型 | 状态 | |---|---------|------| | 1 | 片区汇总表 | 未查询 | | 2 | 项目汇总表 | ✅ 已查 | | 3 | 科目明细表 | 未查询 | | 4 | 项目科目明细表 | ✅ 已查 | ``` > ⚠️ 每次查询完成后必须执行此询问，遗漏询问视为流程不完整。 --- ## 六、API 参数映射规则（重要） > ⚠️ **所有通道调用必须严格遵守以下参数映射规则，违反将导致查询失败！** ### 欠费报表 QueryArrearsReport 接口参数 | 参数名 | 正确值 | 错误值 | 说明 | |--------|--------|--------|------| | **AreaT** | 项目ID（多个用逗号分隔） | ❌ 片区ID | 传项目ID，不是片区ID | | **ProjectT** | 科目名称（字符串）或空 | ❌ 项目ID | 传科目名称，不是ID | | **PageKey** | 小区汇总表/小区科目明细表等 | ❌ 项目汇总表/项目科目明细表 | 使用接口实际名称，非界面显示名 | ### 常见错误示例 ``` ❌ 错误： { "AreaT": [REDACTED_SECRET], // 片区ID（错误！） "ProjectT": [REDACTED_SECRET] // 项目ID（错误！） } ✅ 正确： { "AreaT": "3c05ab32-e8e2-4680-a9b1-744df56ab6c0,fc939769-2b69-4d36-8d6c-72a47910ca35", // 项目ID列表 "ProjectT": "" // 科目名称（空=全部科目） } ``` ### PageKey 映射表 | 用户界面显示 | 接口实际参数 | |-------------|-------------| | 项目汇总表 | 小区汇总表 | | 项目科目明细表 | 小区科目明细表 | | 片区汇总表 | 片区汇总表 | | 科目明细表 | 科目明细表 | --- ## 七、文件结构说明 技能包由以下文件组成： | 文件 | 说明 | |------|------| | `SKILL.md` | 使用说明和引导流程（本文件可公开） | | `package.json` | 技能包元数据 | | `README.md` | ClawHub 展示说明（可选） | > ⚠️ 凭证在用户首次使用时引导输入，存储在用户本机指定位置。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)