Install
openclaw skills install @perrykono-debug/enterprise-service-assistant园区企业服务智能助手。覆盖今日工作、服务企业、事项跟进三大板块,优先查询本地SQLite数据库(<0.1秒,零token消耗),支持定时同步腾讯文档数据。当用户需要管理园区企业服务事务时使用此skill。
openclaw skills install @perrykono-debug/enterprise-service-assistant企服助手是面向园区运营管理的智能助手,基于《C+基础保障服务手册》设计,按照企服人员的日常工作组织:
每日常工作只有四个步骤:今日工作(看什么)→ 企业情况(为什么)→ 办理业务(怎么做)→ 处理完成(自动归档)
| 板块 | 职责 | 数据源 |
|---|---|---|
| 今日工作 | 筛选今天需要处理的工作项,按紧急度排序 | 全部表 |
| 服务企业 | 管家直接执行:查询企业、催缴费用、沟通续租、处理投诉、协调退租、C+增值服务、客户微信工单 | 👨客户管理👨、👨💼费用收缴👨💼、💡能耗汇总💡、C+服务记录(含政策日历、认股权台账)、投诉记录、退租汇总、📋客户工单台账、⚙️处理人员配置 |
| 事项跟进 | 管家推进别人做:跟进报修、督办整改、提醒保养、协调库存/资产/工程、跟进能耗、客户工单SLA监控 | 🛠️报修情况汇总、安全巡检计划、设备保养台账、📦库存管理📦秩序环境、秩序环境入库/出库、库存-工程、库存-固定资产、📋客户工单台账、⚙️处理人员配置 |
管家不做报修、巡检、保养、库存这些事,但负责推进——AI帮盯时限、防遗漏。政策日历、认股权台账均属于C+增值服务,不独立成模块。
依据
writing-for-agentsv1.2.0 第 8 项自检:每个 skill 必须显式声明其「自由度—可控性」位置。高自由度 ≠ 拥有控制权。
| 维度 | 本 Skill 声明 |
|---|---|
| 自由度 | 中—高(高自主执行辅助,不获决策权)。主动同步、本地落盘、定时推送均为既定设计 |
| 执行权 | 用户确认后执行:对客财务/法律动作(费用催缴、分派通知、涉及客户告知的敏感外部推送);限自主执行:数据同步(腾讯文档→SQLite)、写本地DB/缓存/JSON、内部提醒推送(每日日报/风险提醒/工单SLA升级) |
| 人在环 | 必须 confirm:催缴、分派、任何对客户有财务/法律影响的对外消息;已授权自动化:每日定时推送(用户首次配置即授权)、工单SLA超时@all升级 |
| Memory | agent-writable:可写 SQLite(tracking/completion_log/sync_log)、本地缓存JSON、本地JSON;不可写 腾讯文档源数据(只读同步不写回)、IMA知识库(只读源)、已确认工单结论、外发未授权第三方 |
| 外部行动 | 允许触达:腾讯文档MCP(读/拉取同步)、本地SQLite写、本地缓存写、本地JSON写、企微webhook推送(已配置key)、Python(sqlite3);禁止触达:邮件/短信/未授权第三方、写回腾讯文档源、外部API(除已配置企微webhook)、暴露隐私数据(铁律) |
| 不可越界 | 不替客户/管家做法律·财务决定(减免/赔付);不修改腾讯文档源数据;不向未配置webhook外的地址发消息;不替代人工审批/签收 |
本skill通过腾讯文档MCP工具读取数据,支持本地缓存加速,所有逻辑由AI直接执行。
每次查询前,AI 必须按以下顺序执行:
Step 0 → 检查本地缓存(最快,<0.001秒)
cache_file = ~/.workbuddy/workspace/enterprise-service-assistant/cache/{table_name}.json
检查 cache_file 是否存在 且 修改时间 <30分钟前
→ 若存在且未过期 → 直接使用,跳过 Step 1
Step 1 → 缓存未命中,调用腾讯文档MCP工具读取数据
方式A(推荐,无需sheet_id):mcp__tencent-docs__get_content(file_id)
方式B(需sheet_id):mcp__tencent-docs__smartsheet.list_records(file_id, sheet_id)
方式C:mcp__tencent-docs__smartsheet.get_cell_data(doc_id, table_id, record_id, field_id)
💡 get_content 不需要sheet_id,一次调用返回所有子表markdown数据,优先使用
Step 2 → 将数据写入本地缓存
cache_file = ~/.workbuddy/workspace/enterprise-service-assistant/cache/{table_name}.json
写入格式:{"updated_at": "ISO时间戳", "data": [...]}
Step 3 → 按本文档中的逻辑处理数据
- 计算、判断、分级
Step 4 → 格式化输出(使用本文档中的模板)
Step 5 → 推送企微(如需要,使用本文档中的webhook配置)
| 表格 | 缓存TTL | 说明 |
|---|---|---|
| 客户管理 | 60分钟 | 客户信息变化频率低 |
| 费用收缴 | 30分钟 | 缴费状态变化较频繁 |
| 能耗汇总 | 30分钟 | 能耗欠费变化频繁 |
| 报修情况汇总 | 15分钟 | 工单状态变化频繁 |
| 📋客户工单台账 | 5分钟 | 微信工单实时性要求高 |
| ⚙️处理人员配置 | 1440分钟(24h) | 人员配置几乎不变 |
| 库存管理 | 60分钟 | 库存变化频率低 |
| C+服务记录 | 30分钟 | 走访记录变化频率中等 |
| 认股权台账 | 60分钟 | 行权状态变化频率低 |
| 安全巡检计划 | 60分钟 | 巡检记录变化频率低 |
| 设备保养台账 | 60分钟 | 保养记录变化频率低 |
触发词(任选一):
AI 行为:
~/.workbuddy/workspace/enterprise-service-assistant/cache/ 中的 JSON 文件触发词(任选一):
AI 行为:
核心优势:
~/.workbuddy/workspace/enterprise-service-assistant/local_db.sqlite
Step -1 → 读取配置 force_local / mcp_available(来自 knowledge_base_config.json)
if config.get("force_local") is True or config.get("mcp_available") is False:
→ 跳过所有 MCP 调用,直接查本地 SQLite(Step 3)
→ 适用场景:腾讯文档 MCP 未连接 / 单机演示 / 弱网环境
→ 这是最快路径,响应 <5ms,零网络等待
Step 0 → 检查本地数据库是否存在且新鲜(<24小时)
Step 0 → 检查本地数据库是否存在且新鲜(<24小时) DB_PATH = ~/.workbuddy/workspace/enterprise-service-assistant/local_db.sqlite → 若存在且新鲜 → 直接查SQLite(Step 3) → 若否则过期 → 先同步(Step 1),再查询(Step 3)
Step 1 → 同步腾讯文档数据到SQLite(仅在DB不存在/过期时) 调用 mcp__tencent-docs__smartsheet.list_records 读取数据 写入SQLite(见"同步逻辑"章节)
Step 2 → 标记同步完成 更新 sync_log 表
Step 3 → 查询SQLite(超快,零token) 使用 Python + sqlite3 模块查询 格式化输出
### 同步逻辑
**触发词:**
- 「同步数据库」
- 「刷新数据库」
- 「更新本地数据」
**AI行为:**
1. 调用 `mcp__tencent-docs__get_content(file_id)` 读取所有工作表数据(不需要sheet_id)
2. 用Python解析返回的markdown表格数据
3. **同步校验(data-security-verifier 能力③,铁律)**:覆盖前对比 源表行数 vs 目标表行数、主键去重、必填字段非空率(单元号/企业名/金额)
- 校验通过 → 才执行覆盖写入
- **校验失败 → 不覆盖**:保留旧库,`sync_log.status='failed'`,输出差异明细,等人工确认
4. 更新 `sync_log` 表记录同步时间(含 `data_as_of` 时间戳,供时效分级使用)
**💡 为什么用 get_content 不用 list_records:**
- `get_content` 只需要 `file_id`,不需要 `sheet_id`
- 一次调用返回所有子表数据(客户管理、费用收缴、报修情况汇总、库存管理、C+服务记录、能耗汇总、投诉记录、退租汇总等)
- 没有分页问题,没有权限门槛
- 解析markdown表格比调多个MCP更简单可靠
**AI同步流程(AI执行):**
```python
import sqlite3
from pathlib import Path
DB_PATH = Path.home() / ".workbuddy" / "workspace" / "enterprise-service-assistant" / "local_db.sqlite"
# 连接数据库
conn = sqlite3.connect(str(DB_PATH))
cursor = conn.cursor()
# 通过get_content读取所有数据(不需要sheet_id)
content_result = mcp__tencent-docs__get_content(file_id="YOUR_DOC_ID")
# content_result 包含所有子表的markdown表格
# 解析markdown表格(按子表标题分割)
tables = parse_markdown_tables(content_result.get('content', ''))
# 写入各表
for table_name, data in tables.items():
# 清空并写入
cursor.execute(f"DELETE FROM {table_name}")
for row in data:
# 根据表名映射字段,insert into
pass
# 记录同步日志
cursor.execute("""
INSERT INTO sync_log (table_name, sync_time, record_count, status)
VALUES (?, ?, ?, ?)
""", (table_name, datetime.now().isoformat(), len(data), 'success'))
conn.commit()
conn.close()
print("✅ 同步完成")
触发词(任选一):
AI行为:
示例代码(AI执行):
import sqlite3
from pathlib import Path
from datetime import datetime, timedelta
DB_PATH = Path.home() / ".workbuddy" / "workspace" / "enterprise-service-assistant" / "local_db.sqlite"
# 检查DB是否新鲜
def is_db_fresh():
if not DB_PATH.exists():
return False
try:
conn = sqlite3.connect(str(DB_PATH))
cursor = conn.cursor()
cursor.execute("SELECT MAX(sync_time) FROM sync_log WHERE status = 'success'")
result = cursor.fetchone()
conn.close()
except sqlite3.OperationalError:
# sync_log 表缺失或损坏:降级为「本地可用」,不抛异常、不触发 MCP
return False
if not result or not result[0]:
return False
last_sync = datetime.fromisoformat(result[0])
return datetime.now() - last_sync < timedelta(hours=24)
# 查询客户
def query_customer(unit_no):
conn = sqlite3.connect(str(DB_PATH))
cursor = conn.cursor()
cursor.execute("SELECT * FROM customers WHERE unit_no = ?", (unit_no,))
result = cursor.fetchone()
conn.close()
return result
# 主逻辑
if not is_db_fresh():
print("⚠️ 数据库已过期,正在同步...")
# 调用同步逻辑(见上)
result = query_customer("T1-601")
print(result)
| 表名 | 说明 | 主要字段 |
|---|---|---|
customers | 客户管理 | unit_no (UNIQUE), tenant_name, level, end_date, phone**(脱敏存储 138****1234), contact(姓+首字)** |
fees | 费用收缴 | unit_no, fee_type, receivable_amount, status |
repair_orders | 报修情况汇总 | unit_no, urgency, status, report_time |
work_orders | 📋客户工单台账 | work_order_id (UNIQUE), unit_no, type, status, handler |
staff_assignment | ⚙️处理人员配置 | work_type, keywords, default_handler, sla_urgent_hours |
inventory | 库存管理 | name (UNIQUE), current_stock, monthly_usage |
cservice_records | C+服务记录 | tenant_name, visit_time, service_type, detail |
equity_warrants | 认股权台账 | company_name, unit_no, expiry_date, status |
sync_log | 同步日志 | table_name, sync_time, status, data_as_of |
🛡️ 脱敏字段说明:
customers.phone/contact落库即脱敏(见「注意事项 3 落库脱敏策略」);完整号码需用时从腾讯文档源实时读取。
创建每日同步任务:
@WorkBuddy 创建一个定时任务,名称"企服数据同步",每天08:00执行,提示词:"同步企服助手所有表数据(客户管理、费用收缴、报修情况、库存管理、C+服务记录、认股权台账)到本地SQLite数据库"
automation_update 参数:
mcp__tencent-docs__smartsheet.list_records 等MCP工具读取数据(仅在同步时)数据通过知识库模块读取,支持三种数据源:
配置文件路径:~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json
这样做的好处:
第一步:创建配置目录
mkdir -p ~/.workbuddy/config/enterprise-service-assistant
第二步:复制示例配置
cp knowledge_base_config.example.json ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json
第三步:编辑配置文件
# macOS
open ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json
# 或手动编辑,填入实际配置
| 类型 | source_type | source_config | 说明 |
|---|---|---|---|
| 本地文件 | local | {"file_path": "path/to/file.xlsx"} | 支持.xlsx/.csv |
| IMA知识库 | ima | {"kb_id": "xxx"} | 需要IMA MCP连接 |
| 腾讯文档 | tencent_docs | {"doc_id": "xxx"} | 需要腾讯文档MCP连接 |
本地Excel文件:
{
"source_type": "local",
"source_config": {
"file_path": "path/to/园区数据.xlsx"
}
}
腾讯文档:
{
"source_type": "tencent_docs",
"source_config": {
"doc_id": "YOUR_DOC_ID"
},
"force_local": false,
"mcp_available": true
}
⚡ 离线/弱网加速开关(新增):当腾讯文档 MCP 未连接、或希望完全本地化运行时,设
"force_local": true且"mcp_available": false。此时 AI 跳过所有 MCP 调用,直接读本地 SQLite,响应 <5ms,零网络等待。恢复联网同步后改回false即可。
IMA知识库:
{
"source_type": "ima",
"source_config": {
"kb_id": "your-ima-kb-id"
}
}
配置完成后,AI会自动从外部路径加载配置:
# 不需要传入config,自动从 ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json 加载
# 或使用自定义配置(可选)
custom_config = {...}
AI 首次执行查询时,自动创建缓存目录:
mkdir -p ~/.workbuddy/workspace/enterprise-service-assistant/cache/
缓存文件命名规则:
~/.workbuddy/workspace/enterprise-service-assistant/cache/
├── 客户管理.json
├── 费用收缴.json
├── 报修情况汇总.json
├── 📋客户工单台账.json
├── ⚙️处理人员配置.json
├── 库存管理.json
├── C+服务记录.json
└── 认股权台账.json
缓存文件格式:
{
"updated_at": "2026-06-13T13:00:00",
"ttl_minutes": 30,
"data": [...]
}
AI 查询时检查缓存的逻辑:
{table_name}.json 是否存在updated_at 距离现在是否超过 ttl_minutes本Skill通过腾讯文档MCP工具直接读取数据。
⚡ 性能说明:
- 首次查询(缓存未命中):2-3秒(调MCP API)
- 缓存命中后查询:<0.1秒(读本地JSON缓存)
- 推荐:首次查询后,使用「快速查询」触发词,体验秒回
💡 更快的方式(推荐): 使用本地文件模式(见「知识库配置」章节),直接读取本地Excel/CSV文件,无需API调用,查询速度 <0.05秒。
第1步:在腾讯文档创建智能表格,包含以下工作表:
第2步:复制文档ID(URL中 /s/ 后面的部分)
第3步:在以下代码示例中,将 YOUR_DOC_ID 替换为实际的文档ID:
# 示例:读取客户管理表
mcp__tencent-docs__smartsheet.list_records(
file_id="YOUR_DOC_ID",
sheet_id="m3LDSO" # 👨客户管理👨 的 sheet_id
)
💡 提示:首次使用时,AI会自动帮你获取各个工作表的
sheet_id,你只需要提供file_id。
| 列号 | 字段名 | 说明 |
|---|---|---|
| 1 | 项目 | [项目名称] |
| 2 | 单元类型 | 办公 |
| 3 | 建筑面积 | ㎡ |
| 4 | 计租面积 | ㎡ |
| 5 | 单元号 | 主键(如T1-601) |
| 6 | 租户名 | 企业名称 |
| 7 | 合同编号 | 如ZJML-2024-12260010 |
| 8 | 招商 | 招商人员 |
| 11 | 开始日期 | 合同起始 |
| 12 | 截至日期 | 合同截止(续租预警用) |
| 13 | 状态 | 签约/退租/毛坯 |
| 15 | 租户联系人 | 姓名 |
| 16 | 电话 | 联系电话 |
| 18 | 等级 | A/B/C |
| 19 | 企业类型 | 餐饮配套/制造业/商务配套等 |
| 22 | 经营范围 | 具体业务 |
import json
def parse_excel_date(val):
if isinstance(val, datetime): return val.date()
if isinstance(val, str): return datetime.strptime(val, "%Y年%m月%d日").date()
return None
# 从知识库读取费用数据
fee_data = mcp__tencent-docs__smartsheet.list_records(doc_id, table_id='👨💼费用收缴👨💼')
today = datetime.now().date()
for row in fee_data:
overdue_days = (today - parse_excel_date(row.get('应收到期日'))).days
# 后续处理...
同一单元号的所有欠费记录合并:
@企服助手 催缴检查@催缴【催缴通知】{租户名}:
您有以下费用待缴纳:
1. {月份}{费项项目}:¥{欠收金额}(逾期{overdue_days}天)
2. ...
总金额:¥{total_amount}
请尽快安排缴纳,避免产生更多滞纳金。
缴费账户:XXX银行 XXX账户
| 级别 | 剩余天数 | 推送对象 | 操作 |
|---|---|---|---|
| 🚨 红色预警 | ≤30天 | @招商人员 @管家 | 立即跟进 |
| ⚠️ 黄色预警 | 31-60天 | @招商人员 | 准备续租方案 |
| 📢 绿色提醒 | 61-90天 | 管家 | 关注动向 |
| 维度 | 权重 | 评分标准 |
|---|---|---|
| 租金贡献 | 30% | ≥50万/年=30分,≥20万=20分,≥10万=15分,<10万=10分 |
| 企业资质 | 25% | 高新/上市=25分,科技/研发=20分,贸易/服务=15分,其他=10分 |
| 缴费准时率 | 20% | ≥95%=20分,≥90%=15分,≥80%=10分,<80%=5分 |
| 服务满意度 | 15% | ≥80%=15分,≥60%=10分,≥40%=5分,<40%=0分 |
| 成交贡献 | 10% | ≥30%=10分,≥20%=7分,≥10%=5分,<10%=0分 |
总分 ≥80 = A级,≥60 = B级,<60 = C级
| 条件 | 方案类型 | 租金策略 | 优惠 |
|---|---|---|---|
| 价值等级A 或 (缴费率≥95% 且 满意度≥80%) | A:原条件续租 | 维持原价 | 续租3年享95折 |
| 价值等级B 或 成交率≥30% 或 缴费率≥90% | B:优惠续租 | 上涨3-5% | 续租2年享98折 |
| 其他 | C:市场化续租 | 市场价 | 无 |
A级客户(全方位稳租):
B级客户(中度稳租):
C级客户(基础稳租):
@企服助手 续租检查@企服助手 生成续租方案 T1-601━━━━━━━━━━━━━━━
【续租{red}预警】
🏢 企业:{tenant_name}
📍 单元:{unit_no}
📅 合同到期:{lease_end}
⏰ 剩余天数:{days_remaining}天
━━━ 企业画像 ━━━
等级:{level} | 企业类型:{enterprise_type}
缴费准时率:{payment_rate*100:.1f}%
服务满意度:{satisfaction*100:.1f}%
━━━ 续租方案 ━━━
方案类型:{plan_type}
建议租金:¥{proposed_rent}/㎡/月
优惠折扣:{discount_rate*100:.0f}折
优惠政策:{incentive_policy}
🚨 请 @招商人员 @管家 立即跟进!
━━━━━━━━━━━━━━━
| 列号 | 字段名 | 说明 |
|---|---|---|
| 1 | 楼层/单元 | 如T1-601 |
| 2 | 紧急程度 | 紧急!急需处理!/紧急!一周内处理!/不紧急 |
| 3 | 报修细节描述 | 故障详情 |
| 5 | 报修时间 | 报修日期 |
| 7 | 维修人员 | 分派人员 |
| 8 | 维修跟进状态 | 待处理/处理中/已完成 |
| 9 | 跟进状态及结果描述 | 处理说明 |
| 10 | 维修费用 | 金额 |
| 11 | 维修完成时间 | 日期 |
| 12 | 维修用时天数 | 天数 |
分派逻辑优先顺序:
⚙️处理人员配置 表,按「工单类型 + 子类关键词」匹配硬编码回退规则:
| 专业领域 | 关键词 | 维修人员 |
|---|---|---|
| 电工 | 电、跳闸、开关 | 蔡其恩 |
| 水工 | 水、漏水、水管 | 杨杉 |
| 万能工 | 其他 | 蔡其恩、杨杉(轮询) |
| 紧急程度 | SLA时限 | 升级动作 |
|---|---|---|
| 紧急!急需处理! | 1小时 | @all升级通知 |
| 紧急!一周内处理! | 24小时 | 提醒维修主管 |
| 不紧急!一月内处理! | 720小时 | 定期提醒 |
@企服助手 创建工单 T1-9F女厕 女厕门打不开@企服助手 检查工单状态━━━━━━━━━━━━━━━
【紧急工单分派】
📍 位置:{unit_no}
🚨 紧急程度:{urgency}
📝 报修描述:{description}
👤 报修人:{reporter}
⏰ 报修时间:{report_time}
👷 维修人员:{assignee}
⚡ 请立即处理!
━━━━━━━━━━━━━━━
| 列号 | 字段名 | 说明 |
|---|---|---|
| 1 | 名称 | 物资名称 |
| 2 | 规格/单位 | 规格 |
| 9 | 现库存 | 当前库存数量 |
| 10 | 月使用量 | 月均消耗量 |
| 级别 | 可用月数 | 处理方式 | 建议采购量 |
|---|---|---|---|
| 🚨 缺货 | ≤0 | 紧急采购 | 3个月用量 |
| ⚠️ 预警 | ≤2 | 高优先级采购 | 2个月用量 |
| 📢 关注 | ≤3 | 中优先级采购 | 1个月用量 |
| ✅ 正常 | >3 | 无需操作 | 无 |
available_months = 现库存 / 月使用量 if 月使用量 > 0 else 999
@企服助手 库存检查@企服助手 入库 洗手液 5@企服助手 出库 洗手液 2━━━━━━━━━━━━━━━
【库存监控日报】{today}
━━━ 🚨 缺货物资 ━━━
{缺货清单 或 "无"}
━━━ ⚠️ 预警物资 ━━━
1. {名称} | 规格:{规格} | 现库存:{现库存}
月使用量:{月使用量} | 可用月数:{available_months:.1f}
建议采购量:{purchase_qty}
━━━ 📢 关注物资 ━━━
{关注清单 或 "无"}
━━━ 统计 ━━━
物资总数:{total}个
缺货:{out}个 | 预警:{warn}个 | 关注:{关注}个 | 正常:{normal}个
━━━━━━━━━━━━━━━
| 列号 | 字段名 | 说明 |
|---|---|---|
| 1 | 租户名 | 关联客户管理表 |
| 2 | 走访时间 | 日期 |
| 3 | 走访管家 | 姓名 |
| 4 | 客户情绪 | 满意/一般/不满意 |
| 5 | 成交情况 | 是/否 |
| 6 | 服务类别 | 保洁需求/商务接待/室内维修等 |
| 7 | 成交金额 | 金额 |
| 8 | 详情记录 | 企业需求描述 |
| 需求类型 | 关键词 |
|---|---|
| 保洁需求 | 清洁、卫生、保洁、打扫 |
| 商务接待 | 接待、会议室、访客、客人 |
| 室内维修 | 维修、修理、更换、安装 |
| 环境优化 | 空气、绿植、噪音、光线 |
| 能源管理 | 电费、水费、节能、空调 |
| 证照服务 | 许可证、执照、审批、证照 |
| 企业服务 | 注册、变更、年检、税务 |
| 企业类型 | 优先推荐服务 | 优惠政策 |
|---|---|---|
| 餐饮配套 | 卫生许可证提醒、固废清运、室内保洁、能源管理 | 首月9折 |
| 制造业 | 固废清运、环境检测、安全生产培训 | 包年8折 |
| 商务配套 | 商务接待、会议室预定、室内保洁、绿植租赁 | 首次免费体验 |
| 科技企业 | 企业注册变更、知识产权服务、政策申报 | 代办服务9折 |
@企服助手 服务匹配 上海铭尤力@企服助手 分析服务需求━━━━━━━━━━━━━━━
【C+服务推荐】{tenant_name}
━━━ 企业画像 ━━━
类型:{enterprise_type} | 等级:{level}
经营范围:{business_scope}
━━━ 走访需求 ━━━
{needs}
━━━ 推荐服务 ━━━
1. {服务名称}({优先级}优先级)
理由:{reason}
优惠:{discount}
⚡ 操作链接:[腾讯文档-C+服务]
━━━━━━━━━━━━━━━
⚙️处理人员配置 表匹配处理人📋客户工单台账,生成完整记录客户通过企微客服号私聊发消息
↓
[1] 企服助手接收消息(企微MCP回调或管家粘贴转发)
↓
[2] AI意图识别
- 类型:报修/投诉/咨询/催缴/续租/其他
- 子类:AI从消息中提取关键词判断
- 紧急程度:含"爆""漏""着火"等→紧急
- 位置提取:T1-601 等
↓
[3] 查询分派规则
调用:mcp__tencent-docs__smartsheet.list_records(
file_id="DOC_ID",
sheet_id="⚙️处理人员配置的sheet_id"
)
匹配规则:工单类型 + 子类关键词包含
↓
[4] 创建工单
写入:mcp__tencent-docs__smartsheet.add_records(
file_id="DOC_ID",
sheet_id="📋客户工单台账的sheet_id",
records=[{...}]
)
同时写入本地 tracking/completion_log.json
↓
[5] 推送通知
- @处理人:新工单信息
- 回执客户:已登记+预计处理时间
↓
[6] 状态更新(后续)
客户或管家说「WO-001 处理完了」
→ 更新台账状态为"已完成"
→ 推送客户告知完成
| 字段名 | 字段类型 | 填入逻辑 |
|---|---|---|
| 工单编号 | 自动编号 | 系统自增(对外展示用 WO-{日期}-{序号} ) |
| 工单来源 | 单选 | 微信反馈(默认)/电话/现场/巡检 |
| 客户名称 | 文本 | 企微客户昵称 或 管家输入 |
| 单元号 | 文本 | AI从消息中提取(如T1-601) |
| 工单类型 | 单选 | AI分类结果 |
| 子类 | 文本 | AI关键词匹配结果 |
| 紧急程度 | 单选 | AI判断(紧急/普通/不紧急) |
| 问题描述 | 文本 | 客户原始消息原文 |
| 处理人 | 文本 | 查配置表匹配后填入 |
| 工单状态 | 单选 | 创建时="待处理" |
| 创建时间 | 日期时间 | 自动填入(当前时间) |
| SLA截止时间 | 日期时间 | 创建时间+SLA时效(查配置表) |
| 处理开始时间 | 日期时间 | 处理人接单后更新 |
| 完成时间 | 日期时间 | 处理完后更新 |
| 处理时长(小时) | 数字 | 自动计算(完成时间-创建时间) |
| 处理结果 | 文本 | 处理人填写 |
| 客户满意度 | 单选 | 完成后客户评价 |
| 备注 | 文本 | 特殊情况 |
| 字段名 | 字段类型 | 说明 |
|---|---|---|
| 工单类型 | 单选 | 分派匹配用 |
| 子类关键词 | 文本 | 逗号分隔,AI用于文本匹配 |
| 默认处理人 | 文本 | 优先分派给此人 |
| 备用处理人 | 文本 | 默认处理人不在时 |
| SLA紧急_小时 | 数字 | 紧急工单SLA上限(小时) |
| SLA普通_小时 | 数字 | 普通工单SLA上限(小时) |
# Step 1: 从配置表读取分派规则
def get_assignment_rules():
response = mcp__tencent-docs__smartsheet.list_records(
file_id="DOC_ID",
sheet_id="⚙️处理人员配置的sheet_id"
)
return response # 返回所有行
# Step 2: 匹配规则(按行号顺序优先匹配)
def match_rule(rules, work_type, description):
"""
匹配规则:先匹配工单类型,再匹配子类关键词
例:type="报修-水电", keywords="水,漏水,水管"
若 description 包含任一关键词 → 匹配成功
"""
for rule in rules:
if rule.get('工单类型') != work_type:
continue
keywords = rule.get('子类关键词', '').split(',')
for kw in keywords:
kw = kw.strip()
if kw and kw in description:
return rule
return None
# Step 3: 根据配置表中的SLA计算截止时间
def calc_sla_deadline(rule, urgency):
if urgency == '紧急':
hours = rule.get('SLA紧急_小时', 1)
else:
hours = rule.get('SLA普通_小时', 24)
from datetime import datetime, timedelta
return (datetime.now() + timedelta(hours=hours)).isoformat()
企服助手在接到客户消息后,按以下流程进行意图识别:
Step 1 → 类型判断(关键词优先,AI兜底)
| 类型 | 触发关键词 |
|---|---|
| 报修 | 坏、坏掉、漏水、爆、跳闸、不亮、不制冷、坏了、修、维修、修一下 |
| 投诉 | 投诉、态度差、服务差、吵、噪音、脏、投诉、不满 |
| 咨询 | 问一下、咨询、请问、费用、租金、多少钱、了解 |
| 催缴 | 交费、已转账、已打款、没有这个费用、收据、发票 |
| 续租 | 续租、合同到期、续签、继续租、扩租 |
| 其他 | (兜底) |
Step 2 → 子类提取:从消息中提取具体内容,填入「子类」字段
Step 3 → 位置提取:正则匹配 T\d+-\d+、X栋X单元 等模式
| 触发方式 | 说明 |
|---|---|
| 管家转发 | 管家收到客户微信消息,复制粘贴给企服助手:「创工单 T1-601 空调坏了」 |
| 企微MCP回调 | 企微MCP连接后,客户消息自动进入(需连接企微MCP) |
| 「查工单 WO-001」 | 查询工单状态 |
| 「WO-001 处理完了」 | 更新工单状态为已完成 |
| 每小时定时 | SLA超时监控 |
━━━━━━━━━━━━━━━
【新工单已创建】
📋 工单编号:{work_order_id}
📍 单元:{unit_no}
📝 类型:{work_type} - {sub_type}
🚨 紧急程度:{urgency}
📄 问题描述:{description}
👤 客户:{customer_name}
👷 已分派:{handler}
⏰ SLA截止:{sla_deadline}
🔄 当前状态:{status}
━━━━━━━━━━━━━━━
客户回执模板:
✅ 收到!已为您登记工单,编号:{work_order_id}
👷 已安排{handler}师傅处理
⏰ 预计{estimated_time}内到场处理
📌 后续可发送「查工单 {work_order_id}」查询进度
分派通知模板(推送给处理人):
【新工单】{work_order_id} · {work_type}
📍 {unit_no} | 🚨 {urgency}
📝 {description}
⏰ SLA截止:{sla_deadline}
⚠️ 请及时处理!
SLA超时升级模板:
🚨【SLA超时】工单 {work_order_id}
📍 {unit_no} | 类型:{work_type}
👷 处理人:{handler}
⏰ 已超时 {overdue_minutes} 分钟
📝 问题描述:{description}
⚠️ @all 请主管介入!
━━━━━━━━━━━━━━━
| 评分维度 | 权重 | 评分标准 |
|---|---|---|
| 客户情绪 | 40% | 满意=40分,一般=25分,不满意=10分 |
| 成交情况 | 30% | 成交=30分,成交金额>5000额外+10分 |
| 服务类别完整性 | 20% | 有服务类别=20分,无=0分 |
| 详情记录完整性 | 10% | ≥20字=10分,10-19字=5分,<10字=0分 |
| 优先级 | 触发条件 |
|---|---|
| 高优先级(必访) | A级企业且上次走访>30天 / 续租剩余≤60天 / 有欠费风险标记 |
| 中优先级(应访) | B级企业且上次走访>90天 |
| 低优先级(可访) | C级企业 |
| 管家 | 负责楼层 |
|---|---|
| 戚亮先 | T1-6F、T1-7F、T1-8F |
| 刘瑞 | T1-9F、T1-10F、T1-11F |
| (可配置) | T1-12F及以上 |
@企服助手 走访管理@企服助手 生成本周走访计划━━━━━━━━━━━━━━━
【本周走访计划】{week_start} ~ {week_end}
━━━ 🔴 高优先级(必访)━━━
共{N}个企业待走访
1. {unit_no} {tenant_name}
等级:{level} | 上次走访:{last_visit}
原因:{reason}
管家:{visitor}
历史质量评分:{avg_quality:.1f} | 闭环状态:{followup_status}
━━━ 🟡 中优先级(应访)━━━
共{M}个企业待走访
━━━ 🟢 低优先级(可访)━━━
共{K}个企业待走访
━━━ 统计 ━━━
本周走访总数:{total}个
高优先级:{N}个 | 中优先级:{M}个 | 低优先级:{K}个
⚡ 操作链接:[腾讯文档-走访计划]
━━━━━━━━━━━━━━━
| 列名 | 字段名 | 说明 | 示例 |
|---|---|---|---|
| 企业名称 | company_name | 关联客户管理表 | 上海景峰制药有限公司 |
| 单元号 | unit_no | 关联客户管理表 | T1-603.05 |
| 认股权比例 | warrant_ratio | 2-8% | 5% |
| 估值上限 | valuation_cap | 如1亿元 | 100000000 |
| 行权折扣 | discount | 如70% | 70 |
| 授予日期 | grant_date | 协议签署日 | 2026-06-11 |
| 到期日期 | expiry_date | 通常3年 | 2029-06-11 |
| 状态 | status | 待触发/已行权/已转让/已回购/已失效 | 待触发 |
| 让利金额 | concession_amount | 免租/降租总额 | 3000000 |
| 融资进展 | financing_progress | 未启动/对接中/TS阶段/DD阶段/已交割 | 未启动 |
| 备注 | remarks | 融资进展、回购谈判等 | 正在对接启明创投 |
新增认股权(调用 mcp__tencent-docs__smartsheet.add_records):
调用 mcp__tencent-docs__smartsheet.add_records
file_id: "YOUR_DOC_ID"
sheet_id: "认股权台账的sheet_id"
records: [{
"fields": {
"企业名称": "上海景峰制药有限公司",
"单元号": "T1-603.05",
"认股权比例": 5,
"估值上限": 100000000,
"行权折扣": 70,
"授予日期": "2026-06-11",
"到期日期": "2029-06-11",
"状态": "待触发",
"让利金额": 3000000,
"融资进展": "未启动",
"备注": ""
}
}]
检查逻辑(每日执行):
from datetime import datetime, timedelta
# 读取认股权台账
warrant_data = mcp__tencent-docs__smartsheet.list_records(
file_id="YOUR_DOC_ID",
sheet_id="认股权台账的sheet_id"
)
today = datetime.now().date()
for record in warrant_data:
expiry_date = datetime.strptime(record['到期日期'], '%Y-%m-%d').date()
days_left = (expiry_date - today).days
if 0 <= days_left <= 90:
# 到期前90天内,提醒跟进
print(f"⚠️ 认股权即将到期:{record['企业名称']}({days_left}天)")
# 检查融资进展
if record['融资进展'] == '未启动':
print(f" ⚠️ 融资进展:未启动,建议立即对接投资机构")
elif record['融资进展'] in ['对接中', 'TS阶段', 'DD阶段']:
print(f" ✅ 融资进展:{record['融资进展']},继续跟进")
elif record['融资进展'] == '已交割':
print(f" ✅ 融资已完成,可行权")
触发条件:
行权方式(三选一):
操作流程:
Step 1 → 监控企业融资进展(从C+服务记录中获取)
mcp__tencent-docs__smartsheet.list_records(
file_id="YOUR_DOC_ID",
sheet_id="C+服务记录"
)
筛选:服务类别 = "融资对接" AND 企业名称 = "XX公司"
Step 2 → 确认合格融资(工商变更完成 + 融资额 ≥ 最低要求)
若合格 → 更新认股权台账,状态改为"可行权"
Step 3 → 与企业协商行权方式
- 若行权获股权 → 签署股权转让协议,完成工商变更
- 若转让获利 → 寻找第三方投资机构,签署转让协议
- 若放弃行权 → 认股权失效,更新台账
Step 4 → 更新认股权台账
mcp__tencent-docs__smartsheet.update_records(
file_id="YOUR_DOC_ID",
sheet_id="认股权台账的sheet_id",
records=[{
"record_id": "xxx",
"fields": {
"状态": "已行权", # 或"已转让"/"已失效"
"备注": "2026-12-01 行权获股权5%"
}
}]
)
触发条件:
操作流程:
Step 1 → 检查到期未行权的认股权
筛选:状态 = "待触发" AND 到期日期 < 今天
Step 2 → 联系企业创始股东,触发回购义务
回购金额 = 让利金额 + 利息(如年化5%)
Step 3 → 追踪回购履约情况
- 若已支付 → 更新台账,状态改为"已回购"
- 若未支付 → 发送律师函,准备诉讼
| 企业类型 | 认股权比例 | 筛选标准 |
|---|---|---|
| A类企业 | 5-8% | 高新技术/专精特新、营收增长≥30%、有核心技术、融资意向明确 |
| B类企业 | 3-5% | 核心技术企业(营收增长10-30%)、稳定增长企业 |
| C类企业 | 暂不推荐 | 传统低附加值行业、营收下滑、无核心技术壁垒 |
从C+服务记录中读取以下字段,用于筛选A/B/C类企业:
| 字段名 | 字段类型 | 说明 | 筛选用途 |
|---|---|---|---|
营收增长% | percentage | 近2年营收增速(如35.5表示35.5%) | A类≥30%,B类10-30%,C类<10%或下滑 |
融资意向 | singleSelect | 无/有/强烈 | A类需"有"或"强烈",B/C类不要求 |
读取方式(AI自动执行):
Step 1 → 读取C+服务记录
mcp__tencent-docs__smartsheet.list_records(
file_id="YOUR_DOC_ID",
sheet_id="iSs70V" # C+服务记录 的 sheet_id
)
Step 2 → 提取最新一条记录的"营收增长%"和"融资意向"字段
# 按"服务日期"排序,取最新一条
latest_record = max(records, key=lambda x: x['服务日期'])
Step 3 → 根据筛选标准分类
if latest_record['营收增长%'] >= 30 and latest_record['融资意向'] in ['有', '强烈']:
category = "A类"
elif 10 <= latest_record['营收增长%'] < 30:
category = "B类"
else:
category = "C类"
💡 提示:若C+服务记录中无"营收增长%"或"融资意向"数据,AI应主动询问用户,或建议企服人员在下次走访时补充。
| 风险类型 | 风险等级 | 应对措施 |
|---|---|---|
| 企业未融资导致认股权失效 | 🟡 中 | 设置创始股东回购义务(让利金额+利息) |
| 估值偏差导致权益不对等 | 🟡 中 | 采用"估值上限+下一轮折扣"双轨制 |
| 国资流失认定风险 | 🔴 高 | 严格履行"三重一大"决策程序,让利金额量化可追溯 |
| 企业拒绝配合行权 | 🟡 中 | 协议明确"完成合格融资"为触发条件,约定违约责任 |
| 认股权转让流动性不足 | 🟢 低 | 优先选择广东股权交易中心登记,依托平台转让 |
| 用户说了什么 | 执行动作 |
|---|---|
| 「查一下认股权台账」 | 读取认股权台账,列出所有认股权记录 |
| 「XX公司认股权快到期了」 | 检查到期日,提醒跟进融资进展 |
| 「XX公司完成融资了」 | 更新融资进展,标记"可行权" |
| 「我们要行权」 | 启动行权流程,协商行权方式 |
| 「XX公司没融到资」 | 触发回购义务,联系创始股东 |
| 每天10:00定时任务 | 自动检查到期提醒,推送企微 |
在 WorkBuddy 中使用 automation_update 工具配置以下定时任务:
创建方式:在 WorkBuddy 中执行:
@WorkBuddy 创建一个定时任务,名称"风险客户提醒日报",每天09:00执行,提示词:"扫描所有客户风险(欠费、续租预警、高频报修、低满意度),生成风险提醒日报并推送企微群"
automation_update 参数参考:
创建方式:
@WorkBuddy 创建一个定时任务,名称"合同续租预警",每天09:00执行,提示词:"检查合同到期日期,提前3个月标记续租预警,提前2个月生成续租方案"
创建方式:
@WorkBuddy 创建一个定时任务,名称"费用催缴检查",每天10:00执行,提示词:"检查费用收缴状态,按三级分级体系(1-7天静默/8-30天提醒/31天+升级)生成催缴报告"
创建方式:
@WorkBuddy 创建一个定时任务,名称"C+服务需求分析",每天10:00执行,提示词:"分析昨日C+服务走访记录,从详情记录中提取企业需求,根据企业类型匹配服务资源,生成推荐方案"
创建方式:
@WorkBuddy 创建一个定时任务,名称"库存监控检查",每天09:00执行,提示词:"检查所有物资的库存水位(可用月数=现库存/月使用量),生成补货提醒(缺货/预警/关注三级)并推送"
创建方式:
@WorkBuddy 创建一个定时任务,名称"工单SLA监控",每小时执行,提示词:"同时检查「🛠️报修情况汇总」和「📋客户工单台账」两张表中待处理工单的SLA状态,紧急工单超过1小时或普通工单超过24小时立即升级推送"
automation_update 参数参考:
创建方式:
@WorkBuddy 创建一个定时任务,名称"走访计划生成",每周一09:00执行,提示词:"生成本周走访计划,根据企业等级(A级每月/B级每季度)、续租预警(剩余≤60天)、欠费风险智能规划走访任务,分配高/中/低优先级"
🔒 安全修复(2026-08-17):webhook key 不再硬编码在 SKILL.md 内(防止 skill 分享时密钥泄露)。改为从外部配置读取,配置路径与 knowledge_base_config.json 同级,不进包、不随分享泄露。
配置步骤:
mkdir -p ~/.workbuddy/config/enterprise-service-assistant
cp wecom_webhook.example.json ~/.workbuddy/config/enterprise-service-assistant/wecom_webhook.json
~/.workbuddy/config/enterprise-service-assistant/wecom_webhook.json,填入真实 webhook:{
"webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WEBHOOK_KEY"
}
推送前读取规则:
webhook_url;━━━━━━━━━━━━━━━ 分隔线用户输入:@企服助手 查询客户 T1-601
执行逻辑:
~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json 加载配置mcp__tencent-docs__smartsheet.list_records(doc_id, table_id='👨客户管理👨') 读取客户数据单元号 = "T1-601" 的行用户输入:@企服助手 催缴检查
执行逻辑:
mcp__tencent-docs__smartsheet.list_records(doc_id, table_id='👨💼费用收缴👨💼') 读取费用数据用户输入:@企服助手 生成续租方案 T1-601
执行逻辑:
mkdir -p ~/.workbuddy/config/enterprise-service-assistant
cp knowledge_base_config.example.json ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json
# macOS
open ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json
# 填入实际配置,例如:
# 本地文件:
# {
# "source_type": "local",
# "source_config": {
# "file_path": "/path/to/your/园区数据.xlsx"
# }
# }
#
# 腾讯文档:
# {
# "source_type": "tencent_docs",
# "source_config": {
# "doc_id": "your-doc-id"
# }
# }
# 不需要传config,自动从外部路径加载
# 测试读取
data = kb.get_all()
print(f"✅ 成功读取 {len(data)} 条数据")
配置完成后,AI会自动使用知识库模块读取数据。
所有Python脚本已内置在 scripts/ 目录:
| 脚本名 | 用途 | 所属原模块 |
|---|---|---|
data_manager.py | 数据读取管理 | 费用催缴 |
fee_calculator.py | 逾期费用计算 | 费用催缴 |
reminder_generator.py | 催缴话术生成 | 费用催缴 |
wecom_sender.py | 企微推送 | 费用催缴 |
contract_renewal.py | 续租预警核心逻辑 | 合同续租 |
visit_manager.py | 走访计划管理 | 走访管理 |
visit_scoring.py | 走访质量评分 | 走访管理 |
daily_check_simple.py | 每日检查入口 | 主技能 |
completion_tracker.py | 处理完成闭环追踪器 | 新模块 |
重要变更:
knowledge_base.py 中间层AI可以直接调用这些脚本,也可以根据本文档描述的逻辑直接用Python代码执行。
Excel日期格式 — 需兼容多种格式:2025年3月1日、2025-03-01、datetime对象
🔴 数据隐私(铁律) — 任何时候不得在用户可看到的输出或文件中暴露以下数据:
输出指南文件、使用指引、演示文案时一律使用泛化示例:
🛡️ 落库脱敏策略(v3.6.0 新增) — 本地 SQLite / 缓存 JSON 存储强 PII 时执行:
138****1234 形式;联系人姓名 → 存姓 + 首字(如 张*);证件号 → 不落库关联字段一致性 — 单元号、租户名在各工作表中的格式必须一致
SLA超时升级 — 紧急工单超时必须立即@all通知
库存月使用量为0 — 可用月数视为999(无限)
| 版本 | 日期 | 变更内容 |
|---|---|---|
| v3.6 | 2026-08-17 | 落库脱敏策略:customers 表电话/联系人存储级脱敏(138\*\*\*\*1234 / 姓+首字),证件号不落库;需要完整号码时从腾讯文档源实时读取;存量库下次同步自动重建(先校验后覆盖,失败不覆盖) |
| v3.5 | 2026-08-17 | 安全与验证增强:① webhook key 从 SKILL.md 硬编码迁移至外部配置 ~/.workbuddy/config/enterprise-service-assistant/wecom_webhook.json(防分享泄露,推送前读取、未配置不静默失败);② 同步逻辑接入 data-security-verifier 能力③:覆盖前行数/主键/非空率校验,失败不覆盖保留旧库;③ sync_log 增加 data_as_of 时间戳,催缴/续租/预警触发前做时效分级检查(🟢 才触发) |
| v3.4 | 2026-08-12 | 新增「自由度—可控性声明」章节(writing-for-agents v1.2.0 第8项自检):6维度声明 + Memory=agent-writable(限本地写)+ 外部行动(腾讯文档读/企微推送)+ 不可越界;frontmatter 补 version 字段;修正正文"当前状态"版本号滞后(v3.1→v3.4) |
| v3.2 | 2026-07-01 | 新增客户微信工单处理模块:新增📋客户工单台账和⚙️处理人员配置两张表,支持客户微信反馈→AI识别→自动分派→工单台账→闭环全流程;报修分派规则改为优先查配置表 |
| v3.3 | 2026-07-08 | 性能修复:补建缺失的 sync_log 表(修复 is_db_fresh() 误判过期导致每次调用腾讯文档 MCP);新增 force_local/mcp_available 离线开关,MCP 不可用时直接读本地 SQLite(<5ms);is_db_fresh() 加异常保护降级 |
| v3.1 | 2026-06-28 | 架构重构:从8大模块重构为三大板块(今日工作、服务企业、事项跟进);新增企业情况五段式输出;数据源补齐至16张表;闭环记录降级为系统自动行为;命名对齐业务语言(催缴费用、沟通续租、跟进报修、协调库存、C+增值服务);政策日历/认股权台账归入C+增值服务 |
| v2.3.0 | 2026-06-13 | 新增本地缓存机制,首次查询后30分钟内复用,响应<0.1秒;新增快速模式(「快速查询」触发词);更新knowledge_base_config.example.json加入缓存配置 |
| v2.2.0 | 2026-06-11 | 新增认股权管理模块(台账·到期提醒·行权监控·转让退出·回购追踪) |
| v2.1.0 | 2026-06-11 | 去掉 knowledge_base.py 中间层,改为直接调MCP工具,提升运行效率 |
| v2.0.0 | 2026-06-08 | 完全自包含版本,合并所有7个子技能,移除所有call_skill依赖 |
| v1.5.0 | 2026-06-07 | 修复依赖断裂,更新skills列表 |
| v1.4.0 | 2026-06-07 | 初始发布到ClawHub |
| 原因 | 说明 | 影响 |
|---|---|---|
| 无缓存机制 | 每次查询都调腾讯文档MCP API(网络延迟 2-3秒) | 所有查询都慢 |
| 大表全量拉取 | 费用收缴表1244条记录一次性拉取 | 首次查询特别慢 |
| 无快速模式 | 无法跳过MCP调用 | 重复查询也慢 |
| 场景 | 优化前 | 优化后 |
|---|---|---|
| 首次查询(缓存未命中) | 2-3秒 | 2-3秒(不可避免) |
| 缓存命中查询 | 2-3秒 | <0.1秒 |
| 快速模式查询 | 不支持 | <0.1秒 |
| 本地文件模式 | 不支持 | <0.05秒 |
最佳体验(推荐):
最快方式(适合高频查询):
source_type: "local")当前状态:v3.4 三大板块架构,覆盖16张腾讯文档工作表,支持本地缓存加速。可直接发布到ClawHub供其他用户使用。
今日工作({n})
━━━━━━━━━━━━━━━
● {企业名} — {事项类型}
原因:{原因简述}
建议:{建议动作}
━━━━━━━━━━━━━━━
排序规则:按工作紧急度排序。每次输出不超过10条。
━━━━━━━━━━━━━━━
企业情况 | {租户名}
━━━ 当前状态 ━━━
{状态简述}
━━━ 当前风险 ━━━
{风险清单 或 "无风险"}
━━━ 待办事项 ━━━
{待办清单 或 "无"}
━━━ 服务建议 ━━━
{建议清单 或 "无"}
━━━ 最近动态 ━━━
{按时间倒序的事件列表}
⚡ 操作链接:[腾讯文档]
━━━━━━━━━━━━━━━
企业情况不是企业所有资料,而是AI判断「办这件事需要知道什么」。五个元素顺序固定不可调换。
这是一个行为模块,不是一个独立页面。 你说「办完了」,我自动记录+刷新+更新。
| 你说 | 我理解 |
|---|---|
| 「办完了」「处理完成」「搞定了」 | 自动判断上下文,处理四种事件之一 |
| 「洁韵催缴完成了,付了¥50,000首款」 | 催缴完成 + 提取金额信息 |
| 「T1-9F女厕修好了」 | 工单确认 |
| 「下午去走访了铭尤力,谈得不错」 | 走访完成 |
| 「投诉处理完了」 | 投诉关闭 |
| 事件 | 触发场景 | 自动执行动作 |
|---|---|---|
| 🏆 走访完成 | 「走访完了」「去聊过了」 | ①写入走访记录 ②刷新企业情况 ③更新今日工作 |
| 💰 催缴完成 | 「催缴收到钱了」「付了¥X」 | ①更新费用状态 ②从今日工作移除 ③刷新企业情况 |
| 🔧 工单确认 | 「修好了」「门修好了」 | ①关闭工单 ②刷新事项跟进 ③更新今日工作 |
| 🚫 投诉关闭 | 「投诉处理完了」 | ①关闭投诉 ②刷新企业风险 ③更新今日工作 |
| 📝 续租签约 | 「续租签了」「合同续了」 | ①写入续租记录 ②移除预警 ③刷新企业情况 |
| 📦 库存补货 | 「补货到了」「洗手液到了」 | ①更新库存 ②解除预警 ③刷新库存状态 |
用户说「办完了」或「处理完成」
Step 1 ── 解析上下文,判断事件类型
↓
Step 2 ── 调用 completion_tracker.py 处理
↓
Step 3 ── 写入本地 tracking/completion_log.json
↓
Step 4 ── 刷新三块状态:
· 今日工作(移除已完成项,重新排序)
· 企业情况(追加最近动态)
· 事项跟进(更新对应状态)
↓
Step 5 ── 输出闭环反馈:
✅ {事件类型} · {企业名} 已处理完成
📝 {详情}
🔄 已自动执行:{动作列表}
~/.workbuddy/workspace/enterprise-service-assistant/tracking/
├── completion_log.json ← 所有完成记录 + 活跃任务缓冲区
completion_log.json 结构:
{
"version": "1.0",
"updated_at": "ISO时间戳",
"completions": [
{
"id": "comp-2026062823-001",
"type": "催缴完成",
"unit_no": "T1-1103.05",
"tenant_name": "上海洁韵信息科技有限公司",
"details": "分期首款¥50,000已到账",
"amount": 50000.0,
"completed_at": "2026-06-28T23:10:00",
"status": "completed",
"actions_taken": ["update_fee_status", "remove_from_today", "refresh_enterprise"]
}
],
"active_tasks_buffer": {
"催缴完成|T1-1103.05": {
"status": "completed",
"completed_at": "...",
"completion_id": "comp-..."
}
}
}
当 completion_log.json 中有新完成记录时,AI在生成今日工作和企业情况时自动过滤已闭环项:
今日工作刷新规则:
今日工作输出前:
读取 completion_log.json → 获取 active_tasks_buffer
用 completed 项过滤今日工作列表
输出剩余未完成项(最多10条)
企业情况刷新规则:
企业情况输出时:
读取 completion_log.json → 获取该企业完成记录
追加到「最近动态」列表(按时间倒序,带 ✅ 标记)
刷新「当前风险」和「待办事项」
目前写入腾讯文档需要 sheet_id,当前实现:
用户:洁韵催缴搞定了,今天付了¥50,000首期款
↓
AI:✅ 催缴完成 · 上海洁韵信息科技有限公司 已处理完成
📝 分期首款¥50,000已到账,剩余¥113,916分3期
🔄 已自动执行:
✅ 更新费用状态
✅ 从今日工作移除
✅ 刷新企业情况
现在今日工作剩余:8项(已移除洁韵的催缴任务)
需要查看刷新后的今日工作吗?