feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
This commit is contained in:
+60
-106
@@ -1,123 +1,77 @@
|
||||
# IT智能服务台 - 项目记忆
|
||||
|
||||
## 锁定的设计决策
|
||||
- **AI交互原则**:小段多回合交互,禁止一次性大段回复
|
||||
- **文档管理**:统一保存 `docs/` 目录,按类型分子目录
|
||||
- **资源申请流程**:所有资源申请→`docs/资源申请清单.md`
|
||||
- **原型已锁定**:坐席v5.3 + H5 v1.1
|
||||
- **UI偏好**:企微浅色扁平风格,accent=#07C160
|
||||
- **术语统一**:"人工"=用户呼叫坐席;"摇人"=坐席呼叫坐席
|
||||
- **双企微应用**:正式(itsupport.servyou.com.cn) + 测试(已下线)
|
||||
- **统一入口架构**:`/itportal/` 角色选择 → user/agent/admin
|
||||
- **OTP双因素认证**:admin角色访问时验证
|
||||
## 设计决策(锁定)
|
||||
- AI交互:小段多回合;术语:"人工"=用户呼叫坐席,"摇人"=坐席呼叫坐席
|
||||
- 原型:坐席v5.3 + H5 v1.1;UI:企微浅色扁平,accent=#07C160
|
||||
- 统一入口 `/itportal/` → user/agent/admin;admin需OTP
|
||||
|
||||
## 技术架构
|
||||
- **前端**:坐席(Vue3+Element Plus) / H5(Vue3+Vant4) / 管理后台(Vue3+Element+Tailwind)
|
||||
- **后端**:FastAPI + SQLAlchemy + PostgreSQL + Redis
|
||||
- **本地开发**:Python 3.12 venv + SQLite
|
||||
- **字段映射**:后端`id`/`sender_type` → H5前端`message_id`/`message_type`,映射层在 `frontend-h5/src/api/conversation.ts` 的 `mapMessage()`
|
||||
- **WS广播**:H5发消息后通过 `ws_manager.broadcast()` 实时推送给坐席
|
||||
- **API超时**:默认20s,消息发送30s,文件上传60s
|
||||
- 前端:坐席(Vue3+Element Plus) / H5(Vue3+Vant4) / 管理后台(Vue3+Element+Tailwind)
|
||||
- 后端:FastAPI + SQLAlchemy + PostgreSQL + Redis(代码在 `app/`)
|
||||
- 字段映射:后端`id`/`sender_type` → 前端`message_id`/`message_type`(`conversation.ts` 的 `mapMessage()`)
|
||||
- WS双连接池:`active_connections`(agent) + `employee_connections`(H5)
|
||||
|
||||
## 部署
|
||||
- **NAS测试**:~~itdesk.amanzac.com~~ (已下线)
|
||||
- **正式服务器**:itsupport.servyou.com.cn (10.90.5.110)
|
||||
- **堡垒机**:sxn@10.212.189.210:2222 (OTP)
|
||||
- **文件上传**:只能通过堡垒机手动上传到 `/tmp/`
|
||||
- 正式服务器:itsupport.servyou.com.cn (10.90.5.110),出口IP `218.75.34.87`
|
||||
- 堡垒机:sxn@10.212.189.210:2222 (OTP),脚本 `C:\Users\simon\.workbuddy\skills\jumpserver-ops\scripts\jms_ops.py`
|
||||
- 后端卷挂载:`./app:/app/app`,`.py`变更→`docker compose restart backend`;env变更→`up -d backend`
|
||||
- 前端:rm旧→tar解压dist/→`restart nginx`;Nginx: H5→`/html/h5` / Agent→`/html/itagent` / Admin→`/html/itadmin`
|
||||
- Docker bind mount铁律:rm后重建必须重启容器
|
||||
- 部署工具:`jms_ops.py pack-upload <local_dir> <remote_dir>`(≥100KB用此)
|
||||
- httpx.Timeout须含default:`httpx.Timeout(timeout=30.0, connect=10.0, read=30.0)`
|
||||
|
||||
## 外部系统集成
|
||||
- **火绒企业版**:HMAC-SHA1认证,核心接口 `_leak`(高危漏洞) / `_virus_events`(病毒事件)
|
||||
- **联软LV7000**:三层认证,核心价值 `strusername` 字段=员工→终端映射
|
||||
- **Dify**:生产 `http://yw-dify.dc.servyou-it.com/dify2openai/`
|
||||
- **RAGFlow**:生产 `http://10.80.0.85:8080/` / API `:9380`
|
||||
- **aTrust**:HMAC-SHA256,待获取API密钥
|
||||
- **映射策略**:联软(主) > aTrust(VPN辅) > eHR(静态)
|
||||
## 外部集成
|
||||
- 企微通讯录:Secret `BM6iosc3gKnPqkEXmsQN3ErJUpfO-whfMUN646eezB8`,Redis key=`wecom:contact_access_token`
|
||||
- Dify:`http://yw-dify.dc.servyou-it.com/v1/chat-messages`;审批意图Key `app-7jkRkAzvX4QM9v9SM3P8mMEO`
|
||||
- RAGFlow:生产 `http://10.80.0.85:8080/` / API `:9380`
|
||||
- 映射策略:联软(主) > aTrust(VPN) > eHR(静态)
|
||||
|
||||
## 管理后台
|
||||
- 路由前缀 `/api/admin/`;权限 require_admin
|
||||
- 已实现:仪表盘/功能开关/坐席管理/分配模式/快速回复审核/集成配置/会话监控/会话审计/坐席绩效/系统日志/角色管理
|
||||
- 集成三种配置模式:url_key / access_key / account_password
|
||||
## 群聊系统
|
||||
- 摇人(`collaborating_agent_ids`) / 邀请(`participants`);四角色权限
|
||||
- 参与者展开/缩略双模式;头像代理 `/api/avatar/proxy` 解决 COEP/CSP
|
||||
|
||||
## H5端消息推送
|
||||
- 双通道:企微消息(必达) + WebSocket(即时)
|
||||
- WS端点:`/ws/h5/{employee_id}?token=xxx`
|
||||
- 降级策略:WS断连→3秒轮询
|
||||
- **本地消息缓存 (v0.7.4+)**:
|
||||
- 登录后优先加载本地缓存消息,立即显示历史记录
|
||||
- 同时异步从后端获取最新消息,合并去重后更新缓存
|
||||
- 缓存key:`h5_messages_cache`,有效期7天,最多100条/会话
|
||||
- 发送消息和轮询时自动更新缓存
|
||||
- 登出时清除缓存
|
||||
## 审批流程系统(2026-07-10上线)
|
||||
- 12种审批类型 / 18个流程;意图识别三级链路:关键词→Dify→降级
|
||||
- 卡片导航用 `window.location.href`(同窗口)
|
||||
|
||||
## 近期问题修复 (2026-07)
|
||||
- **OAuth重定向计数残留**:页面刷新后`oauth_redirect_count`未重置,导致误报"登录状态异常" → 在`employee.ts` store初始化时检测有效token后自动清除计数
|
||||
- **API响应解析错误**:Axios拦截器返回`{code:0, data:{}, message}`包装格式,但部分API直接访问`response.xxx`而非`response.data.xxx` → 修正`conversation.ts`中`sendMessage`函数的响应映射
|
||||
- **数据库缺失列**:`messages`表缺少`is_recalled`列 → `ALTER TABLE messages ADD COLUMN IF NOT EXISTS is_recalled BOOLEAN DEFAULT FALSE;`
|
||||
- **数据库列类型错误**:`messages.id`列为uuid类型但代码传入varchar → `ALTER TABLE messages ALTER COLUMN id TYPE character varying(36);`
|
||||
- **Nginx部署目录**:构建产物上传到`/opt/wecom-it-desk/frontend-h5/`但nginx挂载在`/opt/wecom-it-desk/html/itdesk/` → 部署时需复制文件到正确目录
|
||||
## 代办事项真实数据源集成(2026-07-11部署+修复完成)
|
||||
- **PRD**:`docs/02-产品需求/prd_todo_integration.md`
|
||||
- **后端**:`todo_source_service.py` / `itsm_service.py` / `todo_aggregator_service.py`(Redis缓存45s)
|
||||
- **前端**:`TodoPanel.vue` / `todo.ts`(API+Store)
|
||||
- **企微审批API**:`getapprovalinfo`(旧`getapprovaldata`已废弃404)→ Semaphore(10)并发`getapprovaldetail` → 代码层过滤template_id
|
||||
- **Token方案**:统一用 `TokenManager`(IT支持应用Secret,IP已在白名单)
|
||||
- **缓存策略**:初始+60s自动=用缓存(无_force) / 手动🔄=跳过缓存(_force=1) / TTL=45s
|
||||
- **8个Bug修复链**:env未注入→Redis密码→bind mount丢失→API废弃→token decode→IP白名单60020→filter参数301025→**_extract_current_approver字段名全错**
|
||||
- **企微API实际字段名**(dump确认):`sp_record[].sp_status`(非status)/ `details[].approver.userid`(非approver[].userid)
|
||||
- **验证**:sxn名下2条审批单正确返回(IT资产外修申请)
|
||||
- **ITSM**:工单详情API已实现,代办列表API待抓包;签名 app_id+app_secret+SHA1
|
||||
- **测试**:40/40通过
|
||||
|
||||
## 五阶段演进
|
||||
1. MVP:转人工+H5+坐席+邀请+管理后台
|
||||
2. 完整流程:WS+排队+满意度+OAuth2
|
||||
3. AI Wingman+排查流程图
|
||||
4. 知识库+数据看板
|
||||
5. 自动化闭环
|
||||
## IT资产升级审批推送(待部署)
|
||||
- 模板ID:`Bs7ucTGsPuFhxfk8pn8EydxrWxkVetB4JR8Pb6PHS`
|
||||
- 新建 `asset_service.py`;修改 `approval.py`(+urge端点) / `config.py`(+asset_excel_path)
|
||||
- 资产Excel:12月度sheet,编码列(2)匹配,日期列(41)算年限
|
||||
|
||||
## 堡垒机运维 (jumpserver-ops)
|
||||
## 语音识别转文字(2026-07-11部署)
|
||||
- 手机企微=JS-SDK / PC企微=百度ASR(AppID=123947532) / Mac=隐藏
|
||||
- H5内联录音:🎤→⏹→⏳(disabled)
|
||||
|
||||
**脚本位置**:`C:\Users\simon\.workbuddy\skills\jumpserver-ops\scripts\jms_ops.py`
|
||||
## 坐席端截图+拍照(2026-07-11部署)
|
||||
- 截图编辑器(马赛克/文字/箭头/矩形/撤销);拍照(getUserMedia→兜底input capture)
|
||||
- 铁律:`.selection-box`必须`pointer-events:none`;文字工具CSS类切换非v-if;`getDisplayMedia()`必须同步调用
|
||||
|
||||
### ⚠️ 服务器操作规则(重要)
|
||||
## 复杂场景重构(2026-07-11部署)
|
||||
- P0~P3:任务中断恢复/信息更正/上下文压缩/多轮纠错
|
||||
- 路由前缀`/itportal/automation/`;迁移链修复041→028_merge_heads
|
||||
|
||||
**在对服务器进行任何操作时,优先使用 jumpserver-ops 自动完成,而非让用户手动操作。**
|
||||
## 知识库迭代(待确认)
|
||||
- 技术方案:`docs/03-技术架构/增量设计-知识库迭代与痛点缓解-20260711.md`
|
||||
- 原型图:`docs/01-产品设计/知识库迭代-未实现功能原型设计-20260711.md`
|
||||
|
||||
| 操作类型 | 自动执行方式 |
|
||||
|----------|-------------|
|
||||
| 远程命令 | `python jms_ops.py exec -c "命令"` |
|
||||
| 文件上传 | `python jms_ops.py upload 本地文件 /tmp/远程路径` |
|
||||
| 文件下载 | `python jms_ops.py download /tmp/远程文件 ./本地路径` |
|
||||
## 近期修复 (2026-07)
|
||||
- H5非企微环境→扫码登录页;Vue版本不一致白屏→重装+`ElMessage._context`
|
||||
- 消息重复/头像COEP/OAuth残留→已修
|
||||
|
||||
### 使用方式
|
||||
|
||||
```bash
|
||||
# 第一次执行(自动登录并缓存会话)
|
||||
python jms_ops.py exec -c "hostname"
|
||||
|
||||
# 连续测试:使用 --reuse 复用会话(30分钟内有效,2-3秒执行)
|
||||
python jms_ops.py exec -c "uptime" --reuse
|
||||
python jms_ops.py exec -c "docker ps" -c "curl -s http://localhost/api/health" --reuse
|
||||
|
||||
# 文件上传(自动根据大小选择方式)
|
||||
# - ≤10MB: base64 编码传输(快速)
|
||||
# - >10MB: elFinder Web UI(浏览器自动化)
|
||||
python jms_ops.py upload local_file.txt /tmp/remote_file.txt
|
||||
|
||||
# 文件下载
|
||||
python jms_ops.py download /tmp/remote_file.txt local_file.txt
|
||||
|
||||
# 批量命令
|
||||
python jms_ops.py batch -f commands.txt
|
||||
|
||||
# 文件传输
|
||||
python jms_ops.py upload local.conf /tmp/remote.conf
|
||||
python jms_ops.py download /remote/path ./local.conf
|
||||
```
|
||||
|
||||
### 性能
|
||||
|
||||
| 场景 | 首次执行 | --reuse 复用 |
|
||||
|------|----------|--------------|
|
||||
| 单命令 | ~13s | ~2s |
|
||||
| 3 条命令 | ~13s | ~3s |
|
||||
|
||||
### 关键参数
|
||||
- `--reuse`:复用上次会话(减少登录次数,30分钟有效)
|
||||
- `--parallel`:并行模式(每命令独立 token+会话)
|
||||
- `--cmd-timeout`:每命令超时秒数(默认 15s)
|
||||
|
||||
## 文档关联修复 (2026-07-05)
|
||||
- **起因**:2026-07-04 docs/ 重组为数字编号子目录(01-项目总览~11-历史归档),但 mkdocs.yml nav / 文档间交叉引用 / 巡检自动化路径未同步,全面断链
|
||||
- **修复**:mkdocs.yml nav 9处断链重写(移除2个归档项,纳入5份新文档)+ 11处交叉引用修复 + 索引版本号修正(v1.0→v1.3) + 巡检自动化适配
|
||||
- **关键发现**:巡检 automation-1782986180887 原依赖的"小组任务书/任务执行状态看板.md"及A/B/C三组体系(认证加固16/消息系统16/AI数据19)从未创建,每日巡检必然失败;已适配为基于 01-项目状态看板.md 的状态巡检(P0/P1/等决策/进行中)
|
||||
- **修复报告**:docs/01-项目总览/文档关联修复报告-20260705.md
|
||||
- **保留未改**:目录树展示(历史快照)、归档文档内旧路径、历史任务标题
|
||||
## 运维工具
|
||||
- SOP:`docs/10-项目管理/IT智能服务台-标准作业流程SOP.md`
|
||||
- 故障排查:`docs/09-部署运维/00-标准故障排查手册.md`
|
||||
|
||||
Reference in New Issue
Block a user