Files

78 lines
5.8 KiB
Markdown
Raw Permalink Normal View History

# 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个模型文件全部兼容SQLiteUUID→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短路缺失
- **第一步开发完整交付**,可进入部署阶段