Simon
|
1c5169531a
|
docs(REQ-会话-001): v1.4 状态条删除闭环 + 三件套升 v1.4
- 以 v1.3.5 代码为准,删除整合区状态条(不向员工暴露坐席在线/离线)
- PRD/技术方案/原型三件套升 v1.4:整合区 4→3 元素(操作按钮+进度胶囊+引导语)
- 任务说明书 v1.3→v1.4:M8 shiftHours 取消、M9 降为三元素、M11 依赖调整
- TR-会话-001-v1.3.2 分歧1 由待拍板升级为已闭环,附录A 补 v1.4 闭环记录
- 整改记录 #9→#10:闭环状态条分歧遗留项(v1.7 登记)
- 代码落地:IntegrationZone.vue 移除状态条渲染;新增 integrationZoneStatusBar.test.ts 源码级回归守卫
|
2026-08-04 00:34:41 +08:00 |
|
Simon
|
502551ad9c
|
chore(repo): 补 dist.bak.*/ 忽略规则 + 记忆目录脱管 + 坐席工作台原型 v1.3 入仓
- .gitignore: 新增 dist.bak.*/ 规则,覆盖 7 个 Vite 构建备份目录
(原规则 dist_bak*/ 只匹配下划线变体,点号变体仍显示为未跟踪噪声)
- .workbuddy/memory/MEMORY.md: git rm --cached 脱管
(.gitignore:144 已声明「记忆目录个人上下文,不入仓」,该文件为规则生效前遗留;
磁盘文件保留不受影响)
- docs: 坐席工作台原型 v1.3(右栏重组) 纳入版本控制,接续 v1.0-v1.2 版本链
|
2026-08-03 23:55:19 +08:00 |
|
Simon
|
a8da4da0db
|
docs(会话-001/用户-005): 版本合并与文档规范化整改 #9
REQ-会话-001 员工结束会话:
- PRD/原型 v1.0/v1.1/v1.2 归档为 .archive,现行收敛至单一 v1.3
- 技术方案 v1.2 归档,v1.3 为现行版本(位于 docs/02-技术文档/)
- PRD v1.3 §六 关联文档表指向 v1.3 原型与技术方案实际路径
- 三份任务说明书 + BUG-003 + TC-用户-008 引用同步至 .archive/v1.3
REQ-用户-005 头像菜单退出:
- PRD/原型/技术方案文件名 v1.0 -> v1.1,追平内容版本(铁律2)
- 三件套 + 任务说明书 + TC 互引版本对齐,相关 PRD 指向会话-001 v1.3
其他:
- 修复 4 处 UTF-8 乱码(U+FFFD)
- 新增 TR-会话-001-结束会话-v1.3.2 端到端测试报告(单测 75/75 + 生产构建通过)
- 整改记录 #9 写入 00-文档规范化整改记录.md
遗留: PRD v1.3「状态条永久显示」与代码 v1.3.5「状态条已删除」存在分歧,待产品拍板
|
2026-08-03 23:53:59 +08:00 |
|
Simon
|
f9c25147c9
|
feat(会话/消息可靠性): REQ-会话-001 员工结束会话 + message-reliability 收尾
- 取消人工坐席按钮的结束咨询功能,满意度评价迁移至头像右侧结束会话按钮
- ChatPanel: 结束会话直接触发满意度评价
- InputBar: 移除 serving 态,保留人工坐席呼叫四态(hidden/disabled/active/urgent/waiting)逻辑
- inputBarGuideText: 场景1/2 引导语返回 null
- useH5WebSocket: 新增 recommend_update 事件处理
- recommend: 30 分钟推荐抑制白名单
- routing_service 阻断性转人工逻辑已在上游提交,本提交聚焦前端收尾
|
2026-08-03 23:18:28 +08:00 |
|
Simon
|
1f6a2936f5
|
chore(cleanup): ignore archives/ + 02meiti/.hilo + 移除误入 index 的 3 个文件
- .gitignore: 新增 archives/ (85 个早期临时备份) + 02meiti/.hilo/ (hilo 应用数据)
- git rm --cached: 02meiti/.hilo/{index.sqlite-shm, index.sqlite-wal, storage.json}
(这 3 个文件被误加入 git index, working tree 文件保留)
|
2026-08-03 20:29:55 +08:00 |
|
Simon
|
01e070c8ef
|
docs(看板): v1.6 → v1.7 — T81 状态反转 + 今日完成项入库
P0 修复 — 滴答清单任务 6a6bfc2ae4b06440c36701f2
变更:
- #81 敏感词检测 + 语气优化:从 待开始(P0 逾期) 反转为 进行中
- v1.1 阶段1 已于 2026-07-28 完成(词库入库 + 后台管理 UI + 12 个 API)
- 剩余阶段(语气优化、灰度策略细化)待 v1.2 排期
- 关联 PRD: docs/01-产品文档/00-产品规划/PRD-REQ-通用-004-敏感词检测-v1.2-AI辅助.md
- 新增今日完成项(2 项 P0):
- troubleshooting_templates.py 5 端点补 auth + MOCK 替换 ORM(commit a20606f 已部署)
- /itportal 500 修复(commit 21830d5 待部署)
- 统计更新:92 总 / 87 已完成 / 1 进行中 / 1 待开始 / 5 暂停 / 2 阻塞
- 版本变更记录追加 v1.7
|
2026-08-03 20:07:44 +08:00 |
|
Simon
|
21830d507d
|
fix(nginx): 移除 /itportal/ 静态前端块(portal 源码已下线)
P0 修复 — /itportal/ HTTP 500(连续 3+ 天阻塞)
根因分析:
- portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 被误删
- portal dist 不存在(前端目录已不存在)
- backend/app/api/portal.py 也已删除
- /api/portal/* API 不再在 router.py 注册
- 但 nginx 配置 + docker-compose 仍引用 portal dist → try_files 指向空目录 → 500
- nginx-split.conf 还有根路径重定向 / → /itportal/ → 用户访问根域名直接 500
修复(最小集、最安全):
1. nginx 6 个配置(nginx/nginx.conf + 5 个 deploy-server 历史变体):
- 删除 location /itportal/ { alias ... } 静态块
- 保留 location /itportal/meetingroom/ API 块(最长前缀仍命中)
- nginx-split.conf / nginx-full.conf / nginx-green-upstream.conf 根重定向
/itportal/ → /itdesk/
2. docker-compose 4 个配置(+split):
- 删除 ./frontend-portal/dist 或 ./html/itportal 卷挂载
3. deploy-server/deploy.sh:
- 删除 portal dist 备份/解压步骤
- 部署完成提示去掉 /itportal/ 入口
预期效果:
- /itportal/ → nginx 404(不再 500)
- /itportal/meetingroom/ → API 仍工作(终端+H5 共用会议室预定)
- /itdesk/ /itagent/ /itadmin/ /itterminal/ 不受影响
- 根域名访问 → 重定向到 /itdesk/(H5 入口)
文件改动:
- nginx/nginx.conf(双 server block)
- deploy-server/nginx.conf(双 server block)
- deploy-server/nginx-full.conf + green-upstream.conf + nginx.conf + nginx-split.conf
- docker-compose.yml + 3 个 deploy-server 变体
- deploy-server/deploy.sh
⚠️ 待部署(无 jumpserver/VPN):本地已就绪,需在 jumpserver-V2 流程下
scp 上述 11 个文件到 /opt/wecom-it-desk/ 覆盖 + docker compose restart nginx 验证
验证命令:curl -I https://itsupport.servyou.com.cn/itportal/ 期望返回 404(或 301/302)
curl -I https://itsupport.servyou.com.cn/itportal/meetingroom/... 期望 200/401/403
curl -I https://itsupport.servyou.com.cn/ 期望 302 → /itdesk/
Refs: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0 逾期 1 天)
|
2026-08-03 20:02:52 +08:00 |
|
Simon
|
15be4963a1
|
chore: 删除根目录 $null 调试文件
$null 是 devtools 误保存的 HTML 文件(H5 端 index.html 内容),
文件名以 $ 开头在 POSIX shell 中是变量,会引起 bash 操作问题。
直接删除不入仓。
|
2026-08-03 18:54:36 +08:00 |
|
Simon
|
189458912c
|
chore(.gitignore): 排除 workbuddy 工作区其他产物目录
2026-08-03 工作区清理时发现 .workbuddy/outputs/、.workbuddy/artifacts/、
.workbuddy/automations/、.workbuddy/tmp/、.workbuddy/deploy-temp/ 未被 ignore,
git add -A . 时被误纳入 M 状态。这些是 WorkBuddy 平台工作区产物,
不入项目仓库。
之前已有 .workbuddy/memory/、.workbuddy/logs/、.workbuddy/config.json 等 ignore。
|
2026-08-03 18:54:09 +08:00 |
|
Simon
|
0e54312b5c
|
fix: 从 aaebe31 删除误加入的 test_api2.py / test_output.txt
这两个文件是临时调试产物(test_api2.py 是 1 行 requests.get 调试脚本,
test_output.txt 是 Vite 构建 chunk 列表输出),在 Batch 6 commit 时
误加入。修正删除。
|
2026-08-03 18:51:38 +08:00 |
|
Simon
|
aaebe31bd8
|
chore: 清理根目录冗余历史与废弃副本
**根目录项目文档删除**(已迁入 docs/01-产品文档/):
- README.md / CHANGELOG.md / CONTRIBUTING.md
- mkdocs.yml / openapi.json / set-real-ip-patch.md
- (原 configs/ 移至根目录后被 git 识别为 rename)
**废弃源码副本清理**:
- frontend-h5/ 整个目录被 src/frontend-h5/ 取代(src 重组后未删除)
- frontend-h5-dist-part[1-3].bin 旧版部署分片
**历史归档清理**(根目录的 *.zip / *.bin / *.b64):
- agent-v1.4/1.5/1.6/1.7.zip
- chunk_0000.bin
- diagnose-500.b64 / fix-prod.b64
**根目录散落调试脚本清理**(已迁入 scripts/):
- build_frontend.ps1 / debug_*.py / test_*.py(18 个)
- deploy_*.py / pack_fix*.py / split_upload_v8.py
- tmp_upload_*.py / append_upload_v8.py
- add_*.py / add_full.py / add_neo4j.py
- update_*.py / verify_prompt.py / update_mfa.*
- split-b64.ps1 / fix-prod.sh / diagnose-500.sh / stage1-probe.sh
- start-backend.sh / run_db_check.py / main_original.py
- list_nas_*.ps1 / probe_nas.ps1
- init_neo4j*.cypher / fix_*.cypher / fix_alembic.sql
- mkdocs.yml / openapi.json / set-real-ip-patch.md
合计 82 文件删除(git 自动识别大量 rename 已在前序 commit 中处理)
**未 commit 保留在工作区的临时文件**(已 restore --staged):
- $null bash 输出重定向残留
- --selector git checkout 残留空文件
- test_api2.py 临时调试
- test_output.txt chunk 列表临时输出
- .workbuddy/outputs/ WorkBuddy 工作区产物(应由 .gitignore 排除)
- archives/ 历史归档 85MB(不适合入仓)
- 02meiti/ 已 .gitignore
|
2026-08-03 18:51:25 +08:00 |
|
Simon
|
53b7bbcff7
|
chore(root): 收纳根目录调试产物与项目级文件
**项目级文件**:
- configs/mkdocs.yml mkdocs 站点配置
- jumpserver-webcli/ANALYSIS.md webcli 调试分析报告
- jumpserver-webcli/CHANGELOG.md webcli 变更日志
- jumpserver-webcli/deploy_0802_*.txt 0802 部署调试输出(4 个)
- jumpserver-webcli/diag_0802_*.txt 0802 诊断输出(3 个)
- jumpserver-webcli/diag_184715.txt 18:47:15 诊断输出
- tests/test_quick_rules.py quick_rules API 测试
- temp/ 临时调试脚本目录(5 个:check_tables + 调试 + rename_dzpc + ts-check + inspect_batch)
**交付报告**:
- overview.md 「结束会话失败」修复交付报告(2026-07-30,ChatPanel.vue 三件套修复)
**会话调试上下文**:
- dedup_context.txt / dedup2.txt 去重调试上下文
- pattern_check.txt / pattern_context.txt 模式检查
- option_button_context.txt / option_select_context.txt 选项按钮/选择上下文
- qid.txt 会话 ID 记录
- yixuan_context.txt 艺璇任务上下文
- final_check.txt 最终检查
**部署脚本输出**:
- deploy_v11.txt / deploy_h5_v11.txt v11 部署命令输出
合计 27 文件(含 1 项目文档 + 22 调试上下文 + 4 jumpserver webcli 调试 + 1 mkdocs 配置 + 1 测试 + 1 temp/ + 2 部署输出)
|
2026-08-03 18:49:44 +08:00 |
|
Simon
|
7864ab404b
|
feat(scripts): 收纳运维/部署/修复/调试脚本到 scripts/ 目录
**目录结构**:
- scripts/ 顶层运维/工具脚本(20 个)
- scripts/deploy/ 一键部署脚本(deploy_*.py / upload_*.py / redeploy.py 等 8 个)
- scripts/fix/ 一次性修复脚本(fix_*.py / fix_*.cypher / fix_*.sql 等 9 个)
- scripts/debug/ 调试脚本集合(check_*.py/sql、test_*.py、debug_*.py 等 42 个)
**ops-tools/jms_ops.py**:jumpserver-ops skill 默认路径修复
- 从 'jumpserver-automation-shareable' 改为 'jumpserver-ops'
- 同步更新注释(优先 JP_SKILL_DIR 环境变量)
**典型脚本用途**:
- scripts/deploy-v1.2.ps1 / -staging.ps1:一键部署 v1.2 到生产 / staging
- scripts/init_quick_rules.sql:quick_rules 表初始数据
- scripts/gen_admin_token.py:生成 admin JWT token(调试用)
- scripts/build-and-verify.sh:v1.1 实施验证脚本
- scripts/verify_*.sh / .py:API/quick_rules 验证
- scripts/fix/*.py:环境修复(compose、env_key、itsm_bridge 等)
合计 81 文件 + 3317 行 / - 1 行
|
2026-08-03 18:48:02 +08:00 |
|
Simon
|
44e77dcb0e
|
chore(docs): docs/ 目录全面重新编号 + 重组
**重构前**(旧编号 02-11):
- docs/02-产品需求/ → 00 产品规划/PRD
- docs/03-技术架构/ → 01-05 子目录散落
- docs/04-原型设计/ → 01-02 产品设计(HTML 原型)
- docs/05-原型设计/ → screens/
- docs/06-测试素材/ → 02-E2E / 03-功能 / 04-版本测试
- docs/07-项目管理/ → 任务说明书/日报/计划
- docs/08-安全审计/ → 审计报告
- docs/09-堡垒运维/ → toolbox / deploy
- docs/10-项目管理/ → 任务说明书(重复)
- docs/11-历史归档/ → deploy-nas-archived
**重构后**(新编号 00-07,语义化):
- docs/00-产品开发流程与文档管理规范.md
- docs/00-版本迭代总览.md
- docs/01-产品文档/ (PRD/原型/认证/会话/AI 服务/坐席/集成)
- docs/02-技术文档/ (技术方案/架构图/重构记录/前端改造/实现配置)
- docs/03-测试文档/ (E2E/功能用例/版本报告/缺陷单)
- docs/04-运维文档/ (部署运维/运维指南)
- docs/05-运营文档/ (品牌推广/用户手册)
- docs/06-安全审计/ (审计报告)
- docs/07-项目管理/ (任务说明书/日报/计划/看板)
**净收益**:
- 目录编号与产品文档管理规范对齐(按文档阶段 01-07 编号)
- 消除 02-产品需求 与 10-项目管理 的编号重叠
- 子目录按文档类型分组(如 01-产品文档/00-产品规划、01-产品文档/01-认证与登录)
- 把运维/安全/项目管理从 0X 散落改为 04/06/07
合计 494 文件 + 78495 行 / - 14076 行
|
2026-08-03 18:46:55 +08:00 |
|
Simon
|
3a44141eac
|
chore(config): 同步 src/ 路径迁移 + nginx SPA 路由 + 文档图简化
**src/ 路径迁移配套**:
- docker-compose.yml: backend context ./backend → ./src/backend
- docker-compose.yml: bind mount ./app → ./src/backend/app
- docker-compose.dev.yml: 3 个 bind mount 同步调整
- Dify 双路径超时从 12s 提到 20s(2026-07-20 用户反馈高峰期超时)
**nginx SPA 路由修复**(前端路由 /itagent/x → /itagent/index.html):
- nginx/nginx.conf: 加 try_files $uri /itagent/index.html
**生产环境 nginx 反代重写**:
- deploy-server/nginx.conf: 从 33 行 localhost 模板改为 357 行完整反代
- 新增 /itdesk /itagent /itadmin /itportal /itterminal/itportal/meetingroom
路由规则
- 反代到 backend:8000 (API + WS)
- / 根路径反代到数据查询平台
**架构图简化**(精简但保留关键类/时序):
- docs/class-diagram.mermaid: 215 行 → 59 行
- docs/sequence-diagram.mermaid: 115 行 → 35 行
合计 6 文件 + 470 行 / - 293 行
|
2026-08-03 18:46:10 +08:00 |
|
Simon
|
969f524962
|
feat(REQ-通用-005): v1.1 选项选择持久化方案实施
参考:docs/02-技术文档/技术架构/实施报告-REQ-通用-005-v1.1.md
方案:docs/02-技术文档/技术架构/技术方案-REQ-通用-005-选项选择持久化-v1.1-正式方案.md
4 个子任务全部完成:
- T01 基础设施(BackendObserver 服务 + WS 广播)
- T02 Bug 6(conversation.ts option 状态持久化)
- T03 Bug 4(h5_ai_task.py:443 still_thinking 兜底)
- T04 Bug 5+Req 7(ChatPanel.vue collapsed 折叠 + WS 监听)
文件清单:
- 后端 API:4 文件(api/router/ws + 新增 api/backend_observer)
- 后端 service:1 文件(services/backend_observer.py)
- 后端 tasks:1 文件(h5_ai_task.py 兜底)
- 后端 tests:2 文件(test_backend_observer + test_h5_mask_option_select)
- 前端 stores:1 文件(conversation.ts 持久化 + WS 订阅)
- 前端 composables:1 文件(useH5WebSocket.ts 选项广播监听)
- 前端组件:2 文件(ChatPanel.vue 折叠 + MessageBubble.vue 状态展示)
- 前端 package.json:2 文件(agent + h5 dependencies)
- 前端 scripts:1 文件(measure-option-latency.mjs 端到端测量)
- 前端 types:1 文件(components.d.ts 声明)
合计 16 文件 + 1053 行 / - 12 行。
|
2026-08-03 18:45:46 +08:00 |
|
Simon
|
5adcb4852a
|
fix(alembic): 053 down_revision 笔误修正
down_revision 之前误写为文件名 '052_diagnostic_queue_quiz_closing',
应为 052 迁移的实际 revision id '052_diag_queue_quiz'。
影响范围:
- alembic history 直接抛 KeyError: '052_diagnostic_queue_quiz_closing'
- 任何 alembic upgrade / stamp head 操作均无法解析完整链
- 之前未被发现的根因:生产 alembic_version 长期停在 052,从未尝试解析后续链
验证(生产环境 2026-08-03 17:03 P1 治理任务):
- 修复前:alembic history → KeyError
- 修复后:052 → 053 → 054 → 055 → 056(moderation) → 057 链完整解析
- alembic stamp 057_troubleshooting_templates 已成功执行
- 数据库实际状态确认:conversations.is_archived / messages.reply_source /
quick_rules / sensitive_words / privacy_patterns / moderation_logs /
troubleshooting_templates 均已存在,迁移链与数据库一致
|
2026-08-03 18:34:41 +08:00 |
|
Simon
|
22909fb3bd
|
docs: 补充 #134 相关 PRD-009 + 技术方案 #002 交叉引用 (#134)
**新增**
- `docs/01-产品文档/04-坐席工作台/PRD-REQ-坐席-009-会话状态Tab筛选-v1.0.md`
- 7 段结构:背景与目标 / 需求说明(5 个 FR + 状态映射规则 + 跨段渲染)/ 用户故事 & 10 项 AC / 交互示意 / 不在本 PRD 范围 / 关联文档 / 变更记录
- 明确边界:未实现"Tab 数量徽章 + 空状态文案",后续 #135 候选
**修改**
- `docs/02-技术文档/技术架构/技术方案-REQ-坐席-002-AI辅助消息框-v1.0.md`
- §3.1 组件架构图:ConversationList.vue 增加 2 行注释(说明筛选 Tab + 数据源)
- 文末追加"📌 增量变更记录(不破坏 v1.0 原结构)"段:交叉引用 PRD #009 / 任务 #134 / 原型 v1.2 / commit 566bb46
**未改**
- 不动架构图层级 / 不动其他组件的描述 / 不破坏 v1.0 原 §1-§12 结构
- 不在 #002 中重写需求细节(这些都在 PRD #009 集中管理,避免文档冗余)
- `docs/04-运维文档/部署运维/01-项目总览与部署手册-20260704.md` / `开发交付概览.md` grep 通过无相关描述,无需更新
**关联**
- #134 落地代码:commit `566bb46`
- 已同步文档:PRD #009(新建)+ 技术方案 #002(增量段)
**操作失误修复**
- 起草时通过 Write 工具误将 PRD #009 写到了 `D:\资料\03-产品文档\` 而非项目内的 `D:\资料\03-项目开发\wecom_it_smart_desk\docs\01-产品文档\`(少了一个目录层级 + 中文章段编号错位)
- 修复:用 PowerShell `Move-Item` 把文件移到正确路径,递归清理空目录 `D:\资料\03-产品文档\`(只含我自己刚建的 1 个文件 + 2 个空目录,无误删任何个人文件)
|
2026-08-03 17:58:22 +08:00 |
|
Simon
|
566bb46cd4
|
feat(agent): 坐席端左栏会话状态 Tab 顺序调整 + 默认显示待处理 (#134)
**改动**
- `src/frontend-agent/src/components/conversation/ConversationList.vue`
- `filterTags` 数组顺序倒置:`[全部, 待处理, 进行中, 已完成]` → `[待处理, 进行中, 已完成, 全部]`
- `activeFilter` 初始值 `'all'` → `'pending'`(坐席日常首选入口)
- `docs/07-项目管理/任务说明书/任务说明书-134-坐席端左栏会话状态Tab顺序调整+默认显示待处理.md`(新增)
**未改**
- 不动 store(`myConversations` / `colleagueConversations` / `historyConversations` 划分准确)
- 不动 `applyFilters` 逻辑(status 映射正确:pending→queued、active→serving/ai_handling、done→resolved)
- 不动 ConversationItem.vue / 样式 / backend API
- 不重命名 `activeFilter` 的 key(保持 `'pending' | 'active' | 'done' | 'all'` 后向兼容)
**部署**
- 构建:`npm run build` 6.20s 通过,新 main chunk `index-BK_U7e10.js`(旧 `index-BDGZ_gcJ.js`),Workspace chunk 唯一 `D44-5RYv.js`
- 打包:`packages/frontend-agent-dist-0803-133.tar.gz` 576,913B(25 个文件,0 累积污染)
- jumpserver-V2 全程免登录(cache 19.7h 内有效)
- 备份链:`/opt/wecom-it-desk/frontend-agent/dist.bak.0803_pre133`
**验证**
- 服务端(curl 绕用户/CDN 缓存):HTTP 200 + main JS hash 变更 + Workspace=1 + 备份存在 ✅
- 浏览器无痕模式:用户 2026-08-03 17:48 确认"显示已更新"(默认激活"待处理" + Tab 顺序倒置)✅
- v1.2 原型与实际页面 Tab 顺序一致 ✅
**任务编号修正**
- 起草时用了 #133,但该编号已被当日另一任务 `voice_asr.py POST /asr auth 加固` 占用
- 沿用 #132 后下一个空号 → 实际为 **#134**
|
2026-08-03 17:49:42 +08:00 |
|
Simon
|
a20606f328
|
fix(security): troubleshooting_templates 5 端点加 auth + MOCK 替换 ORM
P0 安全修复(连续 2 次巡检标记):
1. 5 端点全部加 auth 依赖
- GET list/detail → Depends(get_current_user)(任何已登录用户)
- POST/PUT/DELETE → Depends(require_admin)(仅 admin)
2. 进程内 MOCK_TEMPLATES → PostgreSQL troubleshooting_templates 表
- ORM model 早已注册但缺迁移 → 新建 057_troubleshooting_templates.py
- 8 套预设模板在冷启动时通过 seed_default_troubleshooting_templates 插入
- 容器重启不再丢数据
3. 5 源调用方审计通过(与 voice_asr.py P0 修复同款教训):
- H5 端 api/troubleshooting-templates.ts:只读
- Admin 端 api/troubleshooting.ts + Flowcharts.vue:5 端 CRUD 全套
- Agent 端 api/troubleshooting.ts:只读
- service_routes.py:仅注册无反向调用
- tests:无相关调用
4. 端到端验证(生产环境实测):
- GET no-auth → 403
- GET invalid-token → 401
- GET admin token → 200 + 8 items
- POST admin (sxn) → 201 + 新建 UUID
- POST 非 admin → 拒绝(业务 code 1002)
- PUT/DELETE admin → 200 + 字段更新/删除
- 容器重启后 → 8 套数据仍在(DB 持久化生效)
文件改动:
- alembic/versions/057_troubleshooting_templates.py(新建, 79 行)
- app/api/troubleshooting_templates.py(重写 720→859 行)
- app/main.py(1071→1082, +11 行 seed 调用)
相关 P1 跟进(已同步滴答清单):
- 053-056 迁移脱节(生产 alembic_version=052)
- 缺 2 索引 idx_tpl_category / idx_tpl_active
Refs: voice_asr.py P0 修复(5 来源审计教训)
|
2026-08-03 16:27:10 +08:00 |
|
Simon
|
b321e3dabd
|
chore(repo): 重组项目源码目录至 src/ 下 (#重组)
- 顶级源码目录 backend/ frontend-h5/ frontend-admin/ frontend-terminal/ frontend-agent/ 物理移动到 src/ 下
- frontend-agent/ HEAD 中原本只跟踪 dist 备份和零散配置(无业务源码),本次作为新模块首次纳入
- 强化 .gitignore: 覆盖历史 dist 备份(dist.bak/ dist_bak*/ dist-clean/ dist_old/ 等)、node_modules_old/、前端部署 bin chunk(*-part*.bin / p[0-9].bin)、src/backend/uploads/ + src/backend/media/(运行时上传)
- 备注: docs/ 目录重组(01-产品设计→01-产品文档 等)暂留 working tree,本次未入库
|
2026-08-03 15:42:28 +08:00 |
|
Simon
|
7886f2f523
|
kfid路由窗口: 5类别映射企微客服链接(ROUTING_TARGETS配置化,弃用business_contacts个人名片)+ send_service_card新函数 + ContactCard支持service_url点击打开客服会话(行政→机票酒店前台/人力→共享服务/财务→报销服务台/法务→行政法务/物业→物业服务)
|
2026-07-18 11:24:10 +08:00 |
|
Simon
|
28bc4bda3b
|
docs: C7/C8 完成状态更新
|
2026-07-18 10:53:00 +08:00 |
|
Simon
|
05304aec9c
|
C7/C8: employees.last_login_ip 列补全(ALTER TABLE 迁移)+ redis decode 兼容修复 7 处(wecom_service×2/employee_directory×3/auth_wecom_sso×2,统一 isinstance 保护模式)
|
2026-07-18 10:50:27 +08:00 |
|
Simon
|
928f4bb337
|
docs: 批次4死代码大扫除完成 + D1合并上线状态
|
2026-07-18 10:35:40 +08:00 |
|
Simon
|
b997a683ce
|
批次4死代码大扫除: 删triage三件套(H5零挂载)+ /approval/keywords端点 + scheduler.py孤儿模块 + 3个.bak文件 + get_reply_stream(~96行)
|
2026-07-18 10:22:07 +08:00 |
|
Simon
|
6a5f01ff90
|
docs: D1合并状态更新(后端双模已部署,待Dify发布v1.3)
|
2026-07-18 02:47:12 +08:00 |
|
Simon
|
6f545fe0b6
|
D1正式合并: 后端双模支持(主Dify读intent_type,无字段降级旧路径)+ ai_service透传路由字段 + Dify Prompt v1.3(新增路由意图标注规则+场景4)
|
2026-07-18 02:46:28 +08:00 |
|
Simon
|
1bfc00559a
|
docs: 批次3管线化完成 + 24h观察期标记 + D1分步实施决策
|
2026-07-18 02:34:51 +08:00 |
|
Simon
|
bfac494b01
|
批次3-P1-3: process_h5_ai_reply管线化重构(主函数312行→76行,try/except 11对→1对,9步骤函数)+ D1止血(路由意图超时15s→8s)
|
2026-07-18 02:31:46 +08:00 |
|
Simon
|
2681e7b0bf
|
docs: P1-7完成 + 批次2全部完成 + C7/C8预存在问题记录
|
2026-07-18 02:19:12 +08:00 |
|
Simon
|
6cbee00dc0
|
P1-7(完成): Redis密码轮换(硬编码→.env注入,32位新密码已生效,老密码WRONGPASS验证失效)+ APP_ENV=production传入容器(修复生产UA校验和IP白名单未生效)
|
2026-07-18 02:16:56 +08:00 |
|
Simon
|
f9be3547d9
|
docs: P1-6 完成状态更新
|
2026-07-18 02:03:55 +08:00 |
|
Simon
|
59609b1d8d
|
P1-6: WS死路由清理+结单确认断链修复 - 删ai_reply_chunk/quiz_diagnostic_answer死路由 + pending_close_request改为resolve_confirm对齐后端 + 挂载ResolveConfirmCard(修复坐席结单员工端不可见的功能断链)
|
2026-07-18 02:03:13 +08:00 |
|
Simon
|
9cbf2650e1
|
P1-4b: Matcher优先级修正 - title匹配提到category之前(title是Dify判断的具体意图,比大类更精确,真实场景: approval_type=账号权限申请+title=VPN账号申请应输出单卡)
|
2026-07-18 01:42:05 +08:00 |
|
Simon
|
6e74631ecb
|
docs: P1-2/P1-4/P1-7部署完成记录 + pack-upload通道铁律
|
2026-07-18 01:34:40 +08:00 |
|
Simon
|
555a16c310
|
docs: 更新12-重构记录状态看板 - P1-2/P1-4/P1-7部分代码完成待部署 + 待部署清单
|
2026-07-18 01:18:11 +08:00 |
|
Simon
|
5dd8436cde
|
P2-1(部分): 删除孤儿组件 InputBox.vue/MessageItem.vue + store死代码 showApprovalCard/closeApprovalCard/approvalCardVisible(P0-3误报确认,组件备份于.workbuddy/tmp/orphan-backup)
|
2026-07-18 01:17:08 +08:00 |
|
Simon
|
2a4db59f02
|
P1-7(部分): 3个潜伏bug修复 - main.py app_root未定义/scheduler.py AsyncIOSScheduler拼写/config.py logger未定义
|
2026-07-18 01:13:33 +08:00 |
|
Simon
|
873f3176e8
|
P1-4: Matcher死分支删除+匹配失败兜底全量卡片 + 补全18模板icon/desc/category字段(v3.0未生效) + title匹配增强
|
2026-07-18 01:10:18 +08:00 |
|
Simon
|
aeb4e0cf39
|
P1-2: 统一Dify调用点 - 删除detect-intent死链路(approval/byod) + routing_service共享client修复连接泄漏 + 前端死代码清理
|
2026-07-18 01:05:20 +08:00 |
|
Simon
|
af392f2bf0
|
P1-1: AIService/AIHandler 真单例 + lifespan close httpx 连接池(修复连接泄漏)
|
2026-07-18 00:36:13 +08:00 |
|
Simon
|
a6518bff03
|
P0-6: Dify超时预算切分 native/proxy 各12s(修复proxy兜底不可达,变量已注入容器)
|
2026-07-18 00:28:15 +08:00 |
|
Simon
|
54481525f4
|
P0-3/P0-4/P0-5: 快捷申请全量卡片端点+RecommendCard崩溃修复+WS全字段透传(部署v16)
|
2026-07-18 00:05:59 +08:00 |
|
Simon
|
18a639919c
|
v3.2: 降级结果已含card_data时跳过重复匹配(避免approval_type=None误报匹配失败)
|
2026-07-17 23:39:20 +08:00 |
|
Simon
|
6932e5a449
|
P0-2: compose environment 声明 DIFY_NATIVE_*(修复 v2.1 原生直连未上线,服务器已验证变量注入)
|
2026-07-17 23:21:28 +08:00 |
|
Simon
|
939de70e48
|
P0-1: 删除 docker-compose-override.yml + deploy-server 两份 workers=2→1(预防性修复,服务器根 compose 已是 workers=1)
|
2026-07-17 23:16:40 +08:00 |
|
Simon
|
3ed86d5fb3
|
v3.1 + 批次0: 智能回复重构基线 - ApprovalMatcher + 关键词降级 + 文档速修 + v4.0任务书面化
|
2026-07-17 23:08:59 +08:00 |
|
Simon
|
5a77a89ab1
|
Merge remote-tracking branch 'origin/main' into feature/message-reliability
pre-toolbar-v1.9
|
2026-07-13 02:18:48 +08:00 |
|
Simon
|
449c6d4875
|
feat: 2026-07-12~13 全量更新 - AI对话链路改造+H5 v4/v5+坐席端v5+上下文感知诊断+知识库迭代3
## H5 员工端 v4 (2026-07-13 00:48 已部署)
- 人工按钮三态文案统一为"人工坐席"
- 按钮位置移至发送键和语音按钮上方(垂直堆叠)
- 点按钮直接调 store.shakeAgent(),删除 CallAgentModal 弹窗动画
- 截图快捷键提示改为"截图->粘贴:Alt+Shift+A-Ctrl+V ---> Ctrl+V"
- 移动端隐藏截图提示(CSS 媒体查询)
- AI转人工提示改为"已为您呼叫人工坐席,请稍等!"
- 坐席接入提示改为"坐席正在查看您的信息,请等待处理回复!"
- 删除"摇铃呼叫坐席"入口和文案
- 删除孤儿组件 MessageList.vue + shake 动画 CSS
## H5 员工端 v5 (2026-07-13 02:08 已部署)
- RightPanel v2.1:删除"软件安装"和"资源权限"标签页
- 移除标签栏,智能推荐(DynamicRecommend)直接展示
- 删除 SoftwareDownloads/ApprovalLinks 引用和相关 CSS
## AI 对话链路全栈改造 Phase 1-6 (已部署)
- Phase 1: Dify JSON输出 + 后端blocking解析 + 双WS推送 + 错误降级
- Phase 2: 关键词收窄(~25强意图词) + 两级分类Prompt + 删除前端checkApprovalIntent
- Phase 3: WS扩展(ai_thinking+dynamic_recommend) + ai_structured气泡 + RightPanel v2 + 选项回传
- Phase 4: VisionService接入 + 图片消息融合(5秒窗口) + 降级策略
- Phase 5: 坐席端ai_thinking指示器 + ai_structured/byod_card渲染 + handleNewMessage修复
- Phase 6: diagnosis_stage(6值) + response_time_ms计时 + 慢响应告警(>10s)
## 坐席端 v5 (2026-07-13 01:38 已部署)
- ai_structured/byod_card 只读渲染
- AI思考指示器 UI
- handleNewMessage 透传 msg_type/extra_data 修复
- 布局优化v2.0: QuickReplyBar L1+L2悬浮 + ReplyBox左右分区 + 右栏260/560px切换
- 键盘快捷键v2.3: 纯数字路由 + ESC分层撤销 + Shift+Space用event.code
## 上下文感知智能诊断闭环 (2026-07-12 已部署)
- 三层诊断(API→Script→AI) + 三段排队(VIP→info_locked→not locked)
- 答题插队 + 五场景关闭
- 迁移052(6表+6列) + queue_service + quiz_service + closing_service
- H5前端: QueueWaiting + RightPanel双Tab + InputBar三态 + ResolveConfirmCard
- 坐席前端: pending_close结单流程 + 信息锁定(Dify步骤完成+有效回答率≥70%)
## 知识库迭代3 (2026-07-12 已部署)
- 分诊交互(H5+坐席+Dify独立应用)
- 拓扑预览(ECharts只读)
- 代答排除(4种匹配器: keyword/regex/intent/category)
- 迁移051 + 44文件43测试通过
## 后端变更
- 6个Python文件改造(h5_ai_task.py/h5.py/ai_service.py/closing_service.py等)
- funny_phrase_service.py: shake/connected/keyword 默认文案更新
- session_service.py: 企微消息文案同步
- 新增: queue.py/quiz.py/triage.py/exclusion_rules.py 等API端点
- 新增: diagnostic.py/quiz.py/triage_session.py 等模型
- 新增: closing_service/queue_service/quiz_service/triage_service 等服务
## 文档更新
- CHANGELOG.md: 新增 [未发布] 区全部变更记录
- 项目管理主文档 v2.5: 新增v0.7.3版本 + 已完成看板 + 最近搞定
- 版本记录: 新增v0.7.3条目
- AI对话链路实施计划: Phase 1-6 全部标记✅已实施
- 新增架构图/时序图/类图(mermaid)
## 部署路径修正
- 服务器项目根路径: /opt/wecom-it-desk/
- 所有前端dist均为ro bind mount,只能在宿主机源路径操作
- 服务器nginx /h5/ 是静态文件服务(非proxy_pass)
- elFinder上传二进制不可靠(MD5不匹配),改用base64分块上传
|
2026-07-13 02:17:03 +08:00 |
|