360 Secure SkillHub
360 安全技能中心

enterprise-service-assistant

面向园区企业服务人员的运营助手,按今日工作、服务企业、事项跟进组织流程:优先查询本地SQLite或缓存,必要时经腾讯文档MCP同步数据,生成费用催缴、合同续租预警、报修工单分派与SLA监控、库存水位提醒、C+增值服务推荐、走访计划及认股权到期提醒,并按需通过企微 webhook 推送,配置与数据存放于宿主专属目录。

perrykono-debug
perrykono-debug
热度 58.95
最近更新 2026-09-05 12:07:34
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API / MCP 服务应用场景:任务管理 / CRM / 工作流 / 自动化脚本 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add enterprise-service-assistant
Metadata
name
enterprise-service-assistant
description
园区企业服务智能助手。覆盖今日工作、服务企业、事项跟进三大板块,优先查询本地SQLite数据库(<0.1秒,零token消耗),支持定时同步腾讯文档数据。当用户需要管理园区企业服务事务时使用此skill。
version
3.6.0

企服助手 (Enterprise Service Assistant)

📋 概述

企服助手是面向园区运营管理的智能助手,基于《C+基础保障服务手册》设计,按照企服人员的日常工作组织:

每日常工作只有四个步骤:今日工作(看什么)→ 企业情况(为什么)→ 办理业务(怎么做)→ 处理完成(自动归档)

三板块

板块 职责 数据源
今日工作 筛选今天需要处理的工作项,按紧急度排序 全部表
服务企业 管家直接执行:查询企业、催缴费用、沟通续租、处理投诉、协调退租、C+增值服务、客户微信工单 👨客户管理👨、👨💼费用收缴👨💼、💡能耗汇总💡、C+服务记录(含政策日历、认股权台账)、投诉记录、退租汇总、📋客户工单台账、⚙️处理人员配置
事项跟进 管家推进别人做:跟进报修、督办整改、提醒保养、协调库存/资产/工程、跟进能耗、客户工单SLA监控 🛠️报修情况汇总、安全巡检计划、设备保养台账、📦库存管理📦秩序环境、秩序环境入库/出库、库存-工程、库存-固定资产、📋客户工单台账、⚙️处理人员配置

管家不做报修、巡检、保养、库存这些事,但负责推进——AI帮盯时限、防遗漏。政策日历、认股权台账均属于C+增值服务,不独立成模块。


🛡️ 自由度—可控性声明(出厂标配)

依据 writing-for-agents v1.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外的地址发消息;不替代人工审批/签收

⚠️ AI执行原则(重要)

本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配置

表格 缓存TTL 说明
客户管理 60分钟 客户信息变化频率低
费用收缴 30分钟 缴费状态变化较频繁
能耗汇总 30分钟 能耗欠费变化频繁
报修情况汇总 15分钟 工单状态变化频繁
📋客户工单台账 5分钟 微信工单实时性要求高
⚙️处理人员配置 1440分钟(24h) 人员配置几乎不变
库存管理 60分钟 库存变化频率低
C+服务记录 30分钟 走访记录变化频率中等
认股权台账 60分钟 行权状态变化频率低
安全巡检计划 60分钟 巡检记录变化频率低
设备保养台账 60分钟 保养记录变化频率低

快速模式(用户主动触发)

触发词(任选一):

  • 「快速查询 XX」
  • 「用缓存,别调MCP」
  • 「本地数据有吗?先看本地的」

AI 行为:

  • 只读取 ~/.workbuddy/workspace/enterprise-service-assistant/cache/ 中的 JSON 文件
  • 完全不调用 MCP
  • 响应时间:<0.1秒

缓存刷新(用户主动触发)

触发词(任选一):

  • 「刷新」
  • 「重新读取」
  • 「调MCP」
  • 「更新缓存」

AI 行为:

  • 删除对应的缓存文件
  • 重新调用 MCP 读取最新数据
  • 写入新缓存

🗄️ 本地数据库模式 (SQLite) — 推荐

核心优势:

  • 查询速度:<0.1秒(直接读本地DB,无需API调用)
  • Token消耗:0(查询时不调用任何MCP工具)
  • 支持复杂查询:SQL联表、聚合、筛选

数据库路径

~/.workbuddy/workspace/enterprise-service-assistant/local_db.sqlite

AI执行优先级(必须遵循)

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("✅ 同步完成")

查询逻辑

触发词(任选一):

  • 普通查询(如「查询客户 T1-601」)
  • 「快速查询」(明确指定读DB)

AI行为:

  1. 检查DB是否存在且新鲜(<24小时)
  2. 若新鲜 → 直接查SQLite
  3. 若否则过期 → 先同步,再查询

示例代码(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 参数:

  • scheduleType: "recurring"
  • rrule: "FREQ=DAILY;BYHOUR=8;BYMINUTE=0"
  • prompt: "同步企服助手所有表数据到本地SQLite数据库,使用mcp__tencent-docs__smartsheet.list_records读取数据,写入~/.workbuddy/workspace/enterprise-service-assistant/local_db.sqlite"
  • status: "ACTIVE"

原有执行规则(仍然有效)

  • ✅ 使用 mcp__tencent-docs__smartsheet.list_records 等MCP工具读取数据(仅在同步时)
  • ✅ 所有计算逻辑由AI阅读本文档后执行
  • ✅ 所有推送模板在本文档中定义
  • ❌ 禁止:直接读取Excel文件(应使用MCP工具或SQLite)

⚙️ 知识库配置

数据通过知识库模块读取,支持三种数据源:

⚠️ 重要:配置文件在技能目录外

配置文件路径:~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json

这样做的好处:

  • ✅ 打包分享时不会泄露您的知识库配置
  • ✅ 每个用户需要自己配置数据源
  • ✅ 配置文件与技能分离,更安全

1. 创建配置文件

第一步:创建配置目录

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

# 或手动编辑,填入实际配置

2. 数据源类型

类型 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连接

3. 配置示例

本地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"
  }
}

4. AI自动加载配置

配置完成后,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 查询时检查缓存的逻辑:

  1. 检查 {table_name}.json 是否存在
  2. 检查 updated_at 距离现在是否超过 ttl_minutes
  3. 若未过期 → 直接读取 JSON,不调 MCP(<0.1秒)
  4. 若已过期或不存在 → 调 MCP,更新缓存

⚙️ 腾讯文档配置

本Skill通过腾讯文档MCP工具直接读取数据。

⚡ 性能说明:

  • 首次查询(缓存未命中):2-3秒(调MCP API)
  • 缓存命中后查询:<0.1秒(读本地JSON缓存)
  • 推荐:首次查询后,使用「快速查询」触发词,体验秒回

💡 更快的方式(推荐): 使用本地文件模式(见「知识库配置」章节),直接读取本地Excel/CSV文件,无需API调用,查询速度 <0.05秒。

配置步骤

第1步:在腾讯文档创建智能表格,包含以下工作表:

  • 👨客户管理👨
  • 👨💼费用收缴👨💼
  • 💡能耗汇总💡
  • C+服务记录(含政策日历、认股权台账)
  • 投诉记录
  • 退租汇总
  • 🛠️报修情况汇总🛠️
  • 安全巡检计划
  • 设备保养台账
  • 📦库存管理📦秩序环境
  • 秩序环境入库
  • 秩序环境出库
  • 库存-工程
  • 库存-固定资产
  • 📋客户工单台账
  • ⚙️处理人员配置

第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。



📦 模块一:服务企业 (Enterprise Service)

功能

  1. 查询客户档案 — 按单元号/租户名/合同号查询
  2. 构建客户画像 — 聚合费用、服务、报修、能耗记录
  3. 计算风险标记 — 欠费风险、流失风险、高频报修、低满意度
  4. 生成客户时间线 — 按时间倒序排列所有事件

客户管理表字段映射(👨客户管理👨)

列号 字段名 说明
1 项目 [项目名称]
2 单元类型 办公
3 建筑面积 ㎡
4 计租面积 ㎡
5 单元号 主键(如T1-601)
6 租户名 企业名称
7 合同编号 如ZJML-2024-12260010
8 招商 招商人员
11 开始日期 合同起始
12 截至日期 合同截止(续租预警用)
13 状态 签约/退租/毛坯
15 租户联系人 姓名
16 电话 联系电话
18 等级 A/B/C
19 企业类型 餐饮配套/制造业/商务配套等
22 经营范围 具体业务

核心逻辑

1. 查询客户档案

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. 按费用类型分组统计
  2. 本金 + 滞纳金(如有)
  3. 生成合并通知一次性发送

触发场景

  • 每天10:00定时任务自动检查
  • @企服助手 催缴检查
  • 企微群 @催缴

输出模板

【催缴通知】{租户名}:

您有以下费用待缴纳:
1. {月份}{费项项目}:¥{欠收金额}(逾期{overdue_days}天)
2. ...

总金额:¥{total_amount}

请尽快安排缴纳,避免产生更多滞纳金。
缴费账户:XXX银行 XXX账户

📦 模块二:沟通续租 (Contract Renewal)

功能

  1. 三级续租预警 — 90天/60天/30天提前标记
  2. 企业画像分析 — 缴费准时率、满意度、成交率
  3. 续租方案生成 — 根据企业价值评估生成差异化方案
  4. 稳租策略 — A/B/C级客户差异化稳租方案

续租预警三级体系

级别 剩余天数 推送对象 操作
🚨 红色预警 ≤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级客户(全方位稳租):

  • 提高服务标准:走访频率月度→双周,专属管家
  • 关怀活动:生日礼物、节日慰问、企业周年庆贺
  • 服务赠送:免费会议室8小时/月、免费停车券2张/月

B级客户(中度稳租):

  • 提高服务标准:走访频率季度→月度
  • 关怀活动:节日慰问
  • 服务赠送:免费会议室4小时/月

C级客户(基础稳租):

  • 基础服务标准
  • 市场化租金定价

触发场景

  • 每天09:00定时任务自动检查
  • @企服助手 续租检查
  • @企服助手 生成续租方案 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}

🚨 请 @招商人员 @管家 立即跟进!
━━━━━━━━━━━━━━━

📦 模块三:跟进报修 (Workorder Follow-up)

功能

  1. 自动分派 — 根据报修描述判断专业领域,分配维修人员
  2. SLA超时监控 — 紧急工单>1小时/普通工单>24小时触发升级
  3. 工单状态更新 — 待处理→处理中→已完成
  4. 维修评价系统 — 客户对维修服务评分

报修情况汇总表字段映射(🛠️报修情况汇总🛠️)

列号 字段名 说明
1 楼层/单元 如T1-601
2 紧急程度 紧急!急需处理!/紧急!一周内处理!/不紧急
3 报修细节描述 故障详情
5 报修时间 报修日期
7 维修人员 分派人员
8 维修跟进状态 待处理/处理中/已完成
9 跟进状态及结果描述 处理说明
10 维修费用 金额
11 维修完成时间 日期
12 维修用时天数 天数

维修人员分派规则

分派逻辑优先顺序:

  1. 优先查 ⚙️处理人员配置 表,按「工单类型 + 子类关键词」匹配
  2. 若配置表无匹配,回退到以下硬编码规则

硬编码回退规则:

专业领域 关键词 维修人员
电工 电、跳闸、开关 蔡其恩
水工 水、漏水、水管 杨杉
万能工 其他 蔡其恩、杨杉(轮询)

SLA超时标准

紧急程度 SLA时限 升级动作
紧急!急需处理! 1小时 @all升级通知
紧急!一周内处理! 24小时 提醒维修主管
不紧急!一月内处理! 720小时 定期提醒

触发场景

  • 每小时定时任务检查SLA状态
  • @企服助手 创建工单 T1-9F女厕 女厕门打不开
  • @企服助手 检查工单状态

输出模板

━━━━━━━━━━━━━━━
【紧急工单分派】

📍 位置:{unit_no}
🚨 紧急程度:{urgency}
📝 报修描述:{description}
👤 报修人:{reporter}
⏰ 报修时间:{report_time}

👷 维修人员:{assignee}
⚡ 请立即处理!
━━━━━━━━━━━━━━━

📦 模块四:事项跟进 · 协调库存 / 资产 / 工程 (Inventory & Asset Coordination)

功能

  1. 库存水位计算 — 可用月数 = 现库存 / 月使用量
  2. 四级库存分级 — 缺货/预警/关注/正常
  3. 补货提醒生成 — 按级别生成采购建议
  4. 出入库记录更新 — 支持入库/出库操作

库存管理表字段映射(📦库存管理📦秩序环境)

列号 字段名 说明
1 名称 物资名称
2 规格/单位 规格
9 现库存 当前库存数量
10 月使用量 月均消耗量

四级库存分级体系

级别 可用月数 处理方式 建议采购量
🚨 缺货 ≤0 紧急采购 3个月用量
⚠️ 预警 ≤2 高优先级采购 2个月用量
📢 关注 ≤3 中优先级采购 1个月用量
✅ 正常 >3 无需操作 无

核心逻辑

available_months = 现库存 / 月使用量 if 月使用量 > 0 else 999

触发场景

  • 每天09:00定时任务自动检查
  • @企服助手 库存检查
  • @企服助手 入库 洗手液 5
  • @企服助手 出库 洗手液 2

输出模板

━━━━━━━━━━━━━━━
【库存监控日报】{today}

━━━ 🚨 缺货物资 ━━━
{缺货清单 或 "无"}

━━━ ⚠️ 预警物资 ━━━
1. {名称} | 规格:{规格} | 现库存:{现库存}
   月使用量:{月使用量} | 可用月数:{available_months:.1f}
   建议采购量:{purchase_qty}

━━━ 📢 关注物资 ━━━
{关注清单 或 "无"}

━━━ 统计 ━━━
物资总数:{total}个
缺货:{out}个 | 预警:{warn}个 | 关注:{关注}个 | 正常:{normal}个
━━━━━━━━━━━━━━━

📦 模块五:C+增值服务 (C+ Value-Added Service)

功能

  1. 需求挖掘 — 从走访记录详情中提取企业需求(NLP关键词匹配)
  2. 企业画像获取 — 读取客户管理表获取企业类型、等级
  3. 服务推荐算法 — 根据企业类型和需求匹配服务规则库
  4. 跟进闭环 — 跟踪推荐服务的跟进状态,提醒逾期未完成

C+服务记录表字段映射

列号 字段名 说明
1 租户名 关联客户管理表
2 走访时间 日期
3 走访管家 姓名
4 客户情绪 满意/一般/不满意
5 成交情况 是/否
6 服务类别 保洁需求/商务接待/室内维修等
7 成交金额 金额
8 详情记录 企业需求描述

需求挖掘关键词库

需求类型 关键词
保洁需求 清洁、卫生、保洁、打扫
商务接待 接待、会议室、访客、客人
室内维修 维修、修理、更换、安装
环境优化 空气、绿植、噪音、光线
能源管理 电费、水费、节能、空调
证照服务 许可证、执照、审批、证照
企业服务 注册、变更、年检、税务

服务匹配规则库

企业类型 优先推荐服务 优惠政策
餐饮配套 卫生许可证提醒、固废清运、室内保洁、能源管理 首月9折
制造业 固废清运、环境检测、安全生产培训 包年8折
商务配套 商务接待、会议室预定、室内保洁、绿植租赁 首次免费体验
科技企业 企业注册变更、知识产权服务、政策申报 代办服务9折

触发场景

  • 每天10:00定时任务分析昨日走访记录
  • @企服助手 服务匹配 上海铭尤力
  • @企服助手 分析服务需求

输出模板

━━━━━━━━━━━━━━━
【C+服务推荐】{tenant_name}

━━━ 企业画像 ━━━
类型:{enterprise_type} | 等级:{level}
经营范围:{business_scope}

━━━ 走访需求 ━━━
{needs}

━━━ 推荐服务 ━━━
1. {服务名称}({优先级}优先级)
   理由:{reason}
   优惠:{discount}

⚡ 操作链接:[腾讯文档-C+服务]
━━━━━━━━━━━━━━━

📦 模块六:客户微信工单处理 (Customer WeChat Workorder)

功能

  1. 客户消息接收 — 通过企微MCP(或管家转发)接收客户微信消息
  2. 意图识别与分类 — AI自动判断工单类型(报修/投诉/咨询/催缴/续租/其他)+ 子类(如"水管漏水")
  3. 自动分派 — 查 ⚙️处理人员配置 表匹配处理人
  4. 工单创建 — 写入 📋客户工单台账,生成完整记录
  5. 进度跟踪与闭环 — 状态更新、SLA监控、完成推送

工作流程

客户通过企微客服号私聊发消息
    ↓
[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上限(小时)

自动分派逻辑(AI执行)

# 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 请主管介入!
━━━━━━━━━━━━━━━

功能

  1. 走访质量评分 — 基于客户情绪、成交情况、服务类别、详情记录完整性计算(满分100)
  2. 走访闭环追踪 — 检查走访中提出的问题是否有后续跟进记录
  3. 智能排程 — 根据企业等级、续租预警、欠费风险自动生成走访计划
  4. 管家分配 — 根据单元号楼层自动分配管家

走访质量评分算法(满分100)

评分维度 权重 评分标准
客户情绪 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及以上

触发场景

  • 每周一09:00定时任务生成本周走访计划
  • @企服助手 走访管理
  • @企服助手 生成本周走访计划

输出模板

━━━━━━━━━━━━━━━
【本周走访计划】{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}个

⚡ 操作链接:[腾讯文档-走访计划]
━━━━━━━━━━━━━━━

📊 认股权管理 (Equity Warrant Management)

功能

  1. 认股权台账 — 记录每笔认股权的企业、金额、比例、估值上限、到期日
  2. 到期提醒 — 认股权到期前90天提醒企服人员跟进
  3. 行权条件监控 — 监控企业是否完成合格融资(工商变更/增资协议)
  4. 转让退出管理 — 记录认股权转让给第三方投资机构的价格、税费
  5. 回购义务追踪 — 企业未融资时,追踪创始股东回购履约情况

腾讯文档数据结构(建议新增工作表:认股权台账)

列名 字段名 说明 示例
企业名称 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 融资进展、回购谈判等 正在对接启明创投

核心逻辑

1. 认股权台账管理

新增认股权(调用 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,
      "融资进展": "未启动",
      "备注": ""
    }
  }]

2. 到期提醒(定时任务)

检查逻辑(每日执行):

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"  ✅ 融资已完成,可行权")

3. 行权条件监控

触发条件:

  • 企业完成合格融资(工商变更/增资协议)
  • 融资估值 ≥ 估值上限 × 行权折扣

行权方式(三选一):

  1. 行权获股权 — 按约定比例获得企业股权
  2. 转让获利 — 将认股权转让给第三方投资机构
  3. 放弃行权 — 认股权失效

操作流程:

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%"
               }
             }]
         )

4. 回购义务追踪

触发条件:

  • 认股权到期(到期日期 < 今天)
  • 且企业未完成合格融资

操作流程:

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 工具配置以下定时任务:

1. 每日风险客户提醒(09:00)

创建方式:在 WorkBuddy 中执行:

@WorkBuddy 创建一个定时任务,名称"风险客户提醒日报",每天09:00执行,提示词:"扫描所有客户风险(欠费、续租预警、高频报修、低满意度),生成风险提醒日报并推送企微群"

automation_update 参数参考:

  • scheduleType: "recurring"
  • rrule: "FREQ=DAILY;BYHOUR=9;BYMINUTE=0"
  • prompt: "扫描所有客户风险(欠费、续租预警、高频报修、低满意度),生成风险提醒日报并推送企微群"
  • status: "ACTIVE"

2. 合同续租预警(09:00)

创建方式:

@WorkBuddy 创建一个定时任务,名称"合同续租预警",每天09:00执行,提示词:"检查合同到期日期,提前3个月标记续租预警,提前2个月生成续租方案"

3. 费用催缴检查(10:00)

创建方式:

@WorkBuddy 创建一个定时任务,名称"费用催缴检查",每天10:00执行,提示词:"检查费用收缴状态,按三级分级体系(1-7天静默/8-30天提醒/31天+升级)生成催缴报告"

4. C+服务需求分析(10:00)

创建方式:

@WorkBuddy 创建一个定时任务,名称"C+服务需求分析",每天10:00执行,提示词:"分析昨日C+服务走访记录,从详情记录中提取企业需求,根据企业类型匹配服务资源,生成推荐方案"

5. 库存监控检查(09:00)

创建方式:

@WorkBuddy 创建一个定时任务,名称"库存监控检查",每天09:00执行,提示词:"检查所有物资的库存水位(可用月数=现库存/月使用量),生成补货提醒(缺货/预警/关注三级)并推送"

6. 工单SLA监控(每小时)

创建方式:

@WorkBuddy 创建一个定时任务,名称"工单SLA监控",每小时执行,提示词:"同时检查「🛠️报修情况汇总」和「📋客户工单台账」两张表中待处理工单的SLA状态,紧急工单超过1小时或普通工单超过24小时立即升级推送"

automation_update 参数参考:

  • scheduleType: "recurring"
  • rrule: "FREQ=HOURLY"
  • prompt: "检查「报修情况汇总」和「客户工单台账」中待处理工单的SLA状态,紧急工单超过1小时或普通工单超过24小时立即升级推送"
  • status: "ACTIVE"

7. 每周走访计划生成(周一09:00)

创建方式:

@WorkBuddy 创建一个定时任务,名称"走访计划生成",每周一09:00执行,提示词:"生成本周走访计划,根据企业等级(A级每月/B级每季度)、续租预警(剩余≤60天)、欠费风险智能规划走访任务,分配高/中/低优先级"

💬 企微推送配置

Webhook 地址(外部配置,不写入包)

🔒 安全修复(2026-08-17):webhook key 不再硬编码在 SKILL.md 内(防止 skill 分享时密钥泄露)。改为从外部配置读取,配置路径与 knowledge_base_config.json 同级,不进包、不随分享泄露。

配置步骤:

  1. 创建配置目录与文件:
mkdir -p ~/.workbuddy/config/enterprise-service-assistant
cp wecom_webhook.example.json ~/.workbuddy/config/enterprise-service-assistant/wecom_webhook.json
  1. 编辑 ~/.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;
  • 文件不存在或 key 为占位符 → 提示用户先配置,不静默失败、不内置兜底 key;
  • 推送内容必须已过脱敏闸门(企业名 / 金额 / 单元号 XX 化,见下方「数据隐私(铁律)」)。

推送格式规范

  • 使用Markdown格式
  • 标题使用 ━━━━━━━━━━━━━━━ 分隔线
  • 紧急通知使用 @all 或 @具体人员
  • 操作链接指向腾讯文档对应表格

📝 使用示例

示例1:查询客户档案

用户输入:@企服助手 查询客户 T1-601

执行逻辑:

  1. AI自动从 ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json 加载配置
  2. 调用 mcp__tencent-docs__smartsheet.list_records(doc_id, table_id='👨客户管理👨') 读取客户数据
  3. 筛选 单元号 = "T1-601" 的行
  4. 格式化输出客户档案

示例2:检查费用催缴

用户输入:@企服助手 催缴检查

执行逻辑:

  1. AI自动加载配置并初始化知识库
  2. 调用 mcp__tencent-docs__smartsheet.list_records(doc_id, table_id='👨💼费用收缴👨💼') 读取费用数据
  3. 计算每条记录的逾期天数
  4. 按三级分级体系分类
  5. 生成催缴报告并推送企微

示例3:生成续租方案

用户输入:@企服助手 生成续租方案 T1-601

执行逻辑:

  1. 通过知识库查询客户档案获取企业类型和等级
  2. 通过知识库读取历史费用记录计算缴费准时率
  3. 通过知识库读取C+服务记录计算满意度和成交率
  4. 客户价值评估(5个维度,满分100)
  5. 根据决策矩阵生成续租方案
  6. 根据价值等级生成稳租策略

🔧 快速开始

1. 创建配置目录

mkdir -p ~/.workbuddy/config/enterprise-service-assistant

2. 复制示例配置

cp knowledge_base_config.example.json ~/.workbuddy/config/enterprise-service-assistant/knowledge_base_config.json

3. 编辑配置文件

# 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"
#   }
# }

4. 测试配置

# 不需要传config,自动从外部路径加载
# 测试读取
data = kb.get_all()
print(f"✅ 成功读取 {len(data)} 条数据")

5. 使用企服助手

配置完成后,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 中间层
  • ✅ 所有数据读取现在直接调用 MCP 工具(仅在缓存未命中时)
  • ✅ 支持腾讯文档/IMA知识库/本地文件(通过MCP工具)
  • ✅ 新增本地缓存机制(v2.3.0)——首次查询后缓存30分钟内复用,响应<0.1秒
  • ✅ 新增快速模式——用户说「快速查询」即只读缓存,完全不调MCP

AI可以直接调用这些脚本,也可以根据本文档描述的逻辑直接用Python代码执行。


⚠️ 注意事项

  1. Excel日期格式 — 需兼容多种格式:2025年3月1日、2025-03-01、datetime对象

  2. 🔴 数据隐私(铁律) — 任何时候不得在用户可看到的输出或文件中暴露以下数据:

    • 具体项目名称(如"美兰中心""美慧城")
    • 具体企业名称或租户名
    • 具体数据量(如"149家""1,244条")
    • doc_id、文件路径等配置信息
    • 具体的缴费金额或逾期天数

    输出指南文件、使用指引、演示文案时一律使用泛化示例:

    • ✅ 「XX科技公司」「X栋X单元」「¥XX」
    • ✅ 「XX制造业」「XX实业」「XXX㎡」
    • ❌ 「上海洁韵信息科技」「T1-1103.05」「¥166,928」
  3. 🛡️ 落库脱敏策略(v3.6.0 新增) — 本地 SQLite / 缓存 JSON 存储强 PII 时执行:

    • 存储级脱敏字段:电话 / 手机 → 落库即存 138****1234 形式;联系人姓名 → 存姓 + 首字(如 张*);证件号 → 不落库
    • 原文保留字段:企业名 / 租户名、单元号、金额、日期(本地库不外发,输出过脱敏闸门即可)
    • 需要完整号码时:从腾讯文档源实时读取(只读同步,不写回),不依赖本地脱敏值
    • 同步时执行:腾讯文档 → SQLite 写入前,对电话 / 联系人字段做脱敏转换再落库
    • 现有存量库:下次同步时自动按此规则重建(全量覆盖前先过校验,失败不覆盖)
  4. 关联字段一致性 — 单元号、租户名在各工作表中的格式必须一致

  5. SLA超时升级 — 紧急工单超时必须立即@all通知

  6. 库存月使用量为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


⚡ 性能优化建议(v2.3.0新增)

为什么之前慢?

原因 说明 影响
无缓存机制 每次查询都调腾讯文档MCP API(网络延迟 2-3秒) 所有查询都慢
大表全量拉取 费用收缴表1244条记录一次性拉取 首次查询特别慢
无快速模式 无法跳过MCP调用 重复查询也慢

现在快了多少?

场景 优化前 优化后
首次查询(缓存未命中) 2-3秒 2-3秒(不可避免)
缓存命中查询 2-3秒 <0.1秒
快速模式查询 不支持 <0.1秒
本地文件模式 不支持 <0.05秒

推荐使用方式

最佳体验(推荐):

  1. 首次查询某张表 → 自动建立缓存(2-3秒)
  2. 之后说「快速查询 XXX」 → 读缓存(<0.1秒)
  3. 数据更新后说「刷新」 → 重新调MCP更新缓存

最快方式(适合高频查询):

  1. 配置本地文件模式(source_type: "local")
  2. 直接读取本地Excel/CSV文件(无需API调用)
  3. 查询速度:<0.05秒

当前状态:v3.4 三大板块架构,覆盖16张腾讯文档工作表,支持本地缓存加速。可直接发布到ClawHub供其他用户使用。


📋 v3.1 输出规范

今日工作输出(按新格式)

今日工作({n})

━━━━━━━━━━━━━━━
● {企业名} — {事项类型}
  原因:{原因简述}
  建议:{建议动作}
━━━━━━━━━━━━━━━

排序规则:按工作紧急度排序。每次输出不超过10条。

企业情况输出(查询某家企业时统一使用)

━━━━━━━━━━━━━━━
企业情况 | {租户名}

━━━ 当前状态 ━━━
{状态简述}

━━━ 当前风险 ━━━
{风险清单 或 "无风险"}

━━━ 待办事项 ━━━
{待办清单 或 "无"}

━━━ 服务建议 ━━━
{建议清单 或 "无"}

━━━ 最近动态 ━━━
{按时间倒序的事件列表}

⚡ 操作链接:[腾讯文档]
━━━━━━━━━━━━━━━

企业情况不是企业所有资料,而是AI判断「办这件事需要知道什么」。五个元素顺序固定不可调换。

🔄 处理完成闭环(Completion Closure)

这是一个行为模块,不是一个独立页面。 你说「办完了」,我自动记录+刷新+更新。

触发词

你说 我理解
「办完了」「处理完成」「搞定了」 自动判断上下文,处理四种事件之一
「洁韵催缴完成了,付了¥50,000首款」 催缴完成 + 提取金额信息
「T1-9F女厕修好了」 工单确认
「下午去走访了铭尤力,谈得不错」 走访完成
「投诉处理完了」 投诉关闭

六种事件类型

事件 触发场景 自动执行动作
🏆 走访完成 「走访完了」「去聊过了」 ①写入走访记录 ②刷新企业情况 ③更新今日工作
💰 催缴完成 「催缴收到钱了」「付了¥X」 ①更新费用状态 ②从今日工作移除 ③刷新企业情况
🔧 工单确认 「修好了」「门修好了」 ①关闭工单 ②刷新事项跟进 ③更新今日工作
🚫 投诉关闭 「投诉处理完了」 ①关闭投诉 ②刷新企业风险 ③更新今日工作
📝 续租签约 「续租签了」「合同续了」 ①写入续租记录 ②移除预警 ③刷新企业情况
📦 库存补货 「补货到了」「洗手液到了」 ①更新库存 ②解除预警 ③刷新库存状态

AI执行流程

用户说「办完了」或「处理完成」

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-..."
    }
  }
}

刷新逻辑(AI执行)

当 completion_log.json 中有新完成记录时,AI在生成今日工作和企业情况时自动过滤已闭环项:

今日工作刷新规则:

今日工作输出前:
  读取 completion_log.json → 获取 active_tasks_buffer
  用 completed 项过滤今日工作列表
  输出剩余未完成项(最多10条)

企业情况刷新规则:

企业情况输出时:
  读取 completion_log.json → 获取该企业完成记录
  追加到「最近动态」列表(按时间倒序,带 ✅ 标记)
  刷新「当前风险」和「待办事项」

与MCP的配合(未来完善)

目前写入腾讯文档需要 sheet_id,当前实现:

  • ✅ 本地记录 + 状态刷新(已就绪)
  • 🔄 写入腾讯文档(需配置sheet_id后可启用)
  • 🔄 企微推送通知(需配置webhook后可启用)

使用示例

用户:洁韵催缴搞定了,今天付了¥50,000首期款
  ↓
AI:✅ 催缴完成 · 上海洁韵信息科技有限公司 已处理完成
    📝 分期首款¥50,000已到账,剩余¥113,916分3期
    🔄 已自动执行:
      ✅ 更新费用状态
      ✅ 从今日工作移除
      ✅ 刷新企业情况
    
    现在今日工作剩余:8项(已移除洁韵的催缴任务)
    需要查看刷新后的今日工作吗?