# 2026-05-21 工作记录 ## 企微 IT 服务台架构咨询 用户背景:6000 人上市公司,已有企微 + 千问 + RAGFlow + Dify 的 AI IT 助手,痛点在于员工绕过 AI 直接转人工、转人工后需开新窗口、无法跨主体企业共享。 ### 三方案可行性分析 - **方案一**(企微员工服务 + 自建应用):不可行,企微员工服务 API 独立,无法与自建应用消息流打通,痛点解决率 1/3 - **方案二**(自建应用消息 + 自研坐席后台):推荐,完整解决三个痛点,需自研坐席后台,开发量中等 - **方案三**(企微 WebView + 开源客服如 Chatwoot):可行,速度快但灵活度受限,跨企业共享有配置复杂度 ### 零基础开发能力评估 - 方案三:零基础 + AI 辅助,约 3 个月可上线(推荐入手点) - 方案二:需 4-6 个月,学习曲线更陡 - 核心学习路径:Python → HTTP/企微 API → Docker 部署 → Flask 消息网关 → AI 集成 ### 硬件资源需求 - 方案三:单台 8 核 8GB 内存 100GB SSD 服务器(约 2-4 万元) - 方案二:2 台服务器,合计 8-16 核 16GB 内存 300GB SSD - AI 推理(千问):已有设施则不需额外采购;如新采购建议 Qwen2.5-14B + A30/双 RTX 4090 ### 用户修正的三步演进路径 - 第一步:测试环境完成企微消息接管 + 极简坐席,先不接入AI,验证消息回调链路 - 第二步:将千问+Dify+RAGFlow机器人消息接入极简坐席 - 第三步:会话日志人工+AI混合标注与校正,迭代优化AI知识库 ### 并行协作模式设计 - 用户核心创新:AI和人工并行而非串行,所有会话消息AI全程可见 - 会话标记系统:VIP图标、举手标记(关键词"转人工")、情绪识别(关键词规则优先)、紧急度评分(综合公式)、置顶/代办 - 坐席看板分区:AI自主处理区(折叠)、举手等待区(核心关注)、人工处理区、已结单区 ### 双面板AI助手设计(用户已确认) - 用户端AI助手面板(最右侧,H5双栏方式B):相似问题、审批流程链接、软件下载快捷入口、知识库搜索 - 坐席端AI助手面板(最右侧):AI建议回复(采纳/编辑/忽略)、快速回复模板、问题解决操作步骤、风险提示、用户特点和其他注意事项 - 后端同一AI引擎,按角色路由不同数据schema输出 ### 原型优化确认(6/2) - 用户信息去重:左栏去掉办公地点,中栏去掉部门/岗位/用户等级 - 新增"需介入"标签:同一问题追问次数多或AI判断需要人工时自动触发 - 用户端选方式B(H5双栏),功能未实现前预留占位符+"即将上线"提示 - 原型美化:添加emoji图标和颜色区分 ### 第一步逐天开发清单(6/2更新) - 6周30天计划:第1周基础+企微对接 → 第2周消息路由+标记系统 → 第3周坐席工作台 → 第4周AI助手面板(坐席端) → 第5周用户端H5双栏 → 第6周联调测试 - 新增功能:举手/需介入/情绪/VIP标记、彩色标签会话列表、AI助手坐席端5模块、H5双栏+OAuth - 新增「摇人」按钮(6/2):用户端输入框左侧的转人工快捷键,橙色渐变铃铛+红点+摇晃动画,一键呼叫IT坐席 - 摇人趣味话术体系(6/2):点击→"大哥,俺这就去摇人,稍等...";排队→"人还在路上,别急别急~";接入→"人摇来了!IT坐席为您服务";关键词→"收到!这就帮您摇位大神来";超时→"坐席都在忙,不过AI还在呢";话术存配置表支持后台动态修改 ### 开发团队SOP执行(6/2) - 团队:software-it-service-desk,主理人齐活林 + 产品经理许清楚 + 架构师高见远 + 工程师寇豆码 + QA严过关 - PRD完成:`C:\Users\simon\wecom_it_smart_desk\PRD.md`,含31项需求(P0/P1/P2)、7个用户故事、完整数据模型 - 架构设计完成:`ARCHITECTURE.md`,9张表DDL + 7组API + 4张时序图 + 5个任务分解 - T01基础设施完成:57个文件(Docker/模型/Schema/前后端脚手架) - T02后端核心完成:16个文件(企微加解密/消息路由/评分/摇人话术/7组API) - T03坐席前端完成:20个文件(三栏布局/会话列表/对话区/AI助手5模块/登录页) - T04 H5用户端完成:12个文件(双栏布局/摇人按钮/审批链接/软件下载/占位符/OAuth2) - QA测试完成:93个测试用例(7个模块),Bug1(await缺失)已修复 - 已知问题:PostgreSQL特有类型(JSONB/gen_random_uuid)与SQLite测试环境不兼容,需适配 - 用户确认:坐席用户名密码登录、支持文本+图片+文件消息、企微应用已创建有凭证 ### 兼容性修复 & database.py 重构(6/3) - 9个模型文件全部兼容SQLite:UUID→String(36)+default=lambda:str(uuid.uuid4()),JSONB→JSON,移除server_default/postgresql_using/postgresql_where - database.py重构为懒加载:_get_engine()和_get_session_factory()延迟创建引擎,避免测试导入时触发asyncpg连接 - main.py和wecom_callback.py已同步更新引用(async_session_factory→_get_session_factory()) - pytest无法在sandbox中运行(子进程输出/文件写入均被拦截),需用户本地终端手动运行验证 - 第一步全部代码完成:110+文件,待本地pytest验证 ### 测试验证通过(6/3) - **116/116 pytest 全部通过**(1.71秒),测试过程中发现并修复7个Bug: 1. message_router.py 缺少 await 2. main.py 中文引号导致 SyntaxError 3. wecom_callback.py WecomCrypto 模块级初始化失败 → 懒加载 4. conftest.py Redis mock 路径错误 5. conftest.py create_test_conversation 缺少参数 6. session_service.py UUID/String(36) 类型不匹配 7. scoring_service.py 关键词大小写不敏感 + VIP短路缺失 - **第一步开发完整交付**,可进入部署阶段