Simon
|
8c93cc9c9d
|
fix(build): 修复 v0.5.0-beta 前端编译错误
跑 npm run build 验收时发现 2 个前端项目编译失败(vue-tsc 报错),修复 4 处:
frontend-h5:
- src/components/chat/InputBox.vue:185 多余右括号
computed(() => inputText.value.length)) -> computed(() => inputText.value.length)
- src/components/chat/MessageList.vue:134 pollMessages 调用签名错
pollMessages(convId, afterMessageId) -> pollMessages(afterMessageId)
(api/message.ts:71 签名只接 1 个 afterMessageId 参数,endpoint 走 current 不需要 convId)
frontend-agent:
- src/components/chat/InputBox.vue 4 处错
L91/234/292 conversationStore.loading 不存在(store 暴露的是 loadingMessages)
-> conversationStore.loadingMessages
L136 import onUnmounted 死引用,移除
components.d.ts: 触发 unplugin-vue-components 重新生成 6 行(新组件类型)
验证:
- frontend-h5: vue-tsc 0 错,417 modules transformed, dist/ 生成
- frontend-agent: vue-tsc 0 错,1750 modules transformed, dist/ 生成
不影响业务逻辑,纯 build fix。
|
2026-06-15 14:26:34 +08:00 |
|
Simon
|
364e688382
|
chore(release): v0.5.0-beta 发版准备
主要改动:
backend 业务:
- feat(error-codes): 统一错误码表 E1011/E1012 拆码
- E1011 AUTH_PASSWORD_WRONG: 本地密码错误
- E1012 AUTH_FIRST_LOGIN_PASSWORD_REQUIRED: 首次登录请先设置密码
- E1015 AUTH_OLD_PASSWORD_REQUIRED: 改密需要旧密码
- E1016 AUTH_OLD_PASSWORD_WRONG: 旧密码错误
- fix(agents): P0 降级放行时,如坐席已注册但未设密码,正确 raise 1012
(修复前会撞 1011 本地密码错误,与场景不符)
- feat(approval): 审批模块 (T审批/A审批)
- feat(config): approval_template_resource / approval_template_device 配置
- feat(main): /ready, /metrics, /version 端点(K8s 友好)
backend 测试:
- test(agents): 新增 test_agents.py — 3 个 Fix-4 降级登录测试
- 错误密码拒绝
- 缺密码拒绝
- 正确密码通过
pytest tests/test_agents.py → 3/3 通过
- test(conftest): 模块级 mock + slowapi 限流重置 + UTF-8 patch
解决 Windows pytest GBK 读 .env 失败 + 降级路径无法测试
仓库治理:
- chore(gitignore): 排除 .workbuddy/memory/(workbuddy 本地记忆)
- chore(docs): 重命名两份 IT 文档(前缀加智能区分版本)
部署与文档:
- docs: RELEASE_NOTES_v0.5.0-beta.md / dashboard.html / 需求-发版预览页面
- docs: 部署、架构、PRD、安全、评审报告等同步 v0.5.0-beta
- deploy-server: 打包脚本、nginx、docker-compose 版本号 bump
前端 (frontend-h5 / frontend-agent / frontend-admin / frontend-portal):
- index.html / package.json 版本号与构建号 bump
自动验收(RELEASE_NOTES L100-104):
- [x] pytest tests/test_agents.py -v → 3 passed
- [x] grep Bs7ucT backend frontend-h5 frontend-agent → 无输出
- [x] grep AppException(101[123]) backend → 仅 1 处(登录场景 1012)
- [ ] npm run build (frontend-h5 / frontend-agent) → 合并后跑
后续: 合并 feature/t-1-t4-merge → main,tag v0.5.0-beta
|
2026-06-15 14:14:58 +08:00 |
|
Simon
|
93ba41ed79
|
feat: 审批流程模块 (T审批A审批)
- 新增 backend/app/api/approval.py 审批API
- 前端H5支持发起审批、审批操作
- 添加审批卡片弹窗组件
- 路由注册审批模块
|
2026-06-15 09:32:41 +08:00 |
|
Simon
|
64d6812ec3
|
fix: P0遗留修复 + ADR/SOP文档
- requirements.txt: 添加 passlib[bcrypt] 依赖
- deploy-server/nginx.conf: /ws/ 路径添加 access_log off
- docs/ADRs/: 新增 4 个 ADR 决策记录
- docs/SOPs/: 新增 4 个 SOP 操作规程
|
2026-06-15 00:03:11 +08:00 |
|
Simon
|
eb28a0f2ef
|
docs: 添加 Gitea 重建评审报告
|
2026-06-14 23:59:28 +08:00 |
|
Simon
|
7eb7621d02
|
docs: 添加 pre-commit 验证报告
|
2026-06-14 23:59:06 +08:00 |
|
Simon
|
1c4b5bf347
|
chore(workbuddy): 更新 MEMORY 索引 + 添加满载任务清单
|
2026-06-14 23:58:34 +08:00 |
|
Simon
|
cd2055040a
|
chore: sync changes
|
2026-06-14 23:50:59 +08:00 |
|
Simon
|
caa57babf1
|
P0安全止血: WS token改header + 坐席本地密码 + secret管理文档
|
2026-06-14 22:19:41 +08:00 |
|
Simon
|
59c5df356b
|
feat(ws): P1-4 实现 broadcast_message_status 实时广播
|
2026-06-14 21:56:18 +08:00 |
|
Simon
|
2cd162eb17
|
fix(alembic): P1-2 生成消息状态字段迁移
|
2026-06-14 21:56:04 +08:00 |
|
Simon
|
c7eb87b24b
|
fix(upload): P1-1 改 volume mount 持久化上传文件
|
2026-06-14 21:55:57 +08:00 |
|
Simon
|
4c65307e0c
|
docs: 推 P1-1~4 给 workbuddy 修消息优化遗留
|
2026-06-14 21:43:35 +08:00 |
|
Simon
|
ddebbe61a5
|
P0安全修复: WS token改subprotocol + nginx日志关闭 + 类型修复 + 降级验证 + 依赖
|
2026-06-14 21:21:48 +08:00 |
|
Simon
|
edbb86835e
|
docs(workbuddy): 更新 Gitea URL 到 Tailscale Funnel 域名
|
2026-06-14 20:59:11 +08:00 |
|
Claude
|
9b6f477fe9
|
docs(workbuddy): 推 P0 安全评审 5 遗留任务清单
|
2026-06-14 20:22:17 +08:00 |
|
Claude
|
3735dc0367
|
feat(security): P0 安全止血 - WS token 改 header + 坐席本地密码
【workbuddy 推送 2026-06-14,任务 #10】
修复:
- P0-#4 WS token 泄露:服务端 ws.py 优先从 Authorization: Bearer header 取,
query param 仅作向后兼容降级路径(h5_websocket_endpoint 同)
- P0-#5 坐席本地密码:Agent 模型加 password_hash 字段(bcrypt),
坐席登录增加 password 字段(企微验证失败时备用),
新增 POST /agents/password 端点修改密码,
alembic 008 迁移脚本
新增/变更:
M backend/app/api/agents.py (+67 行,登录 password 验证 + 改密端点)
M backend/app/api/ws.py (~+30 行,header 优先 + query 降级)
M backend/app/models/agent.py (+10 行,password_hash 字段)
M backend/app/schemas/agent.py (+7 行,password 字段)
M frontend-agent/.../useWebSocket.ts (+5 行,Authorization header)
A backend/alembic/versions/008_add_agent_password.py
A docs/安全/secret-管理.md (P0-#1 长期方案规划)
【评审遗留 5 项,详见 docs/评审报告/workbuddy-2026-06-14-P0安全.md】
- [P0-#4-ws.ts] 浏览器 WebSocket API 不支持自定义 header,需改 Sec-WebSocket-Protocol
- [P0-#4-nginx] nginx access_log 没关闭,token 仍可能经 access_log 泄露
- [P0-#5-type] model Mapped[str] 严格模式下为 None 会报错,应改 Optional
- [P0-#5-fall] 企微降级放行路径不强制 password 验证,反削弱 P0-#5
- [P0-#5-dep] requirements.txt 缺 passlib 依赖,部署会 ImportError
【推 Gitea】
卡 #8: MariaDB 套件未装,Gitea 未启动。本次 commit 暂存本地,
Gitea 起来后一次 git push -u origin main 推送供 workbuddy 二次评审。
|
2026-06-14 19:32:36 +08:00 |
|
Simon
|
9437dc8271
|
chore: extend .gitignore for local dev scripts and temp files
|
2026-06-14 16:52:56 +08:00 |
|
Simon
|
63262292d7
|
chore: initial baseline with P0-safety .gitignore
|
2026-06-14 16:51:56 +08:00 |
|