diff --git a/.workbuddy/memory/2026-08-27.md b/.workbuddy/memory/2026-08-27.md index 8de17c2..4b0f11f 100644 --- a/.workbuddy/memory/2026-08-27.md +++ b/.workbuddy/memory/2026-08-27.md @@ -1,5 +1,15 @@ # 2026-08-27 工作日志 +- 2026-08-27 | FEAT | 登录/登出/超时前后端联调完成:修当日再现的登录 500(启动漏注入 env)→ injectEnv 开发兜底(${DB_DSN} 占位符未解析时回填本地默认,零配置可跑);核心断点=后端未授权返 200+code10002 而 vben 拦截器只认 HTTP 401,token 过期永不静默刷新 → 401 语义化;refreshTokenApi 原把 withCredentials 当请求体(refresh 必失败)→ body 传参+旋转令牌对适配;login 持久化 refreshToken(此前丢弃);logout 携带 refreshToken 后端撤销会话(幂等)+Refresh 清过期会话。端到端 8 项 curl 全过。admin c9a3c02 之前 7e4bfee、service 3d24dbd。⚠️与并行 notice/job 会话多次撞车(cmd.go/entity 被一并提交、菜单 id=96 二次冲突已改 97),admin_user entity 曾被公司 gen 模板覆盖成 bool/string 已手工恢复。 + +- 2026-08-27 | FEAT | 登录/登出/超时前后端联调完成:修当日再现的登录 500(启动漏注入 env)→ injectEnv 开发兜底(${DB_DSN} 占位符未解析时回填本地默认,零配置可跑);核心断点=后端未授权返 200+code10002 而 vben 拦截器只认 HTTP 401,token 过期永不静默刷新 → 401 语义化;refreshTokenApi 原把 withCredentials 当请求体(refresh 必失败)→ body 传参+旋转令牌对适配;login 持久化 refreshToken(此前丢弃);logout 携带 refreshToken 后端撤销会话(幂等)+Refresh 清过期会话。端到端 8 项 curl 全过。admin c9a3c02 之前 7e4bfee、service 3d24dbd。⚠️与并行 notice/job 会话多次撞车(cmd.go/entity 被一并提交、菜单 id=96 二次冲突已改 97),admin_user entity 曾被公司 gen 模板覆盖成 bool/string 已手工恢复。 + +- 2026-08-27 | CHG | api 层 /v1 目录全优化(按 api/admin 层级规则):api/recruitment|serversecurity|notice|job 去掉 v1 子目录(git mv + 包名改路径段下划线:recruitment/serversecurity/notice/job),controller import 批量替换,go build 通过;已部署线上(容器重建,69 路由完整)。前端 dist 构建成功(**清 node_modules/.vite 缓存后 44s 完成,此前卡 20min 根因=vite 缓存损坏**)并部署 admin.xpcool.com(先备份旧版,https 200);误提交 service_test2.exe 已 git rm + .gitignore。 +- 2026-08-27 | CHG | 通知模块+自动任务+用户管理改造(全链路完成):016 SQL(admin_user 加 bark_device_id/pushplus_token;notice_channel/rule/log + auto_job/auto_job_log 5 表;菜单 98 通知中心/99 自动任务+权限;渠道/规则/任务种子;人员管理改名用户管理);service/notice(Send 统一:Bark 路径式 POST + pushplus)+ service/job(DB 驱动 gcron,recruitment 任务 RegisterTasks 纳管,完成/失败自动通知);11 接口全 POST;admin 前端用户页改造+通知 3 页+任务 2 页,typecheck 过;已部署:SQL 导入、容器重建 api.json 200、路由/种子/调度器验证 OK。待:前端 dist 部署(构建中)。 +- 2026-08-27 | CHG | sub2api 上线完成:域名 sub2api.xpcool.com 证书安装(/data/nginx/ssl/sub2api.xpcool.com/)+ nginx 反代(/data/nginx/conf.d/sub2api.xpcool.com.conf,80→301→443→127.0.0.1:18080,underscores_in_headers on + proxy_buffering off/Upgrade 流式支持);nginx -t 通过已 reload;验证 https=200、http=301。 +- 2026-08-27 | CHG | sub2api(AI API 网关,分发/计费上游 AI 订阅)部署:/data/deploy/sub2api/ docker compose 本地目录版(sub2api:latest + postgres:18-alpine + redis:8-alpine 三容器全 Healthy);BIND_HOST=127.0.0.1 + SERVER_PORT=18080(**8080 被 code-server 占用**故用 18080),127.0.0.1:18080->8080;自动生成 JWT_SECRET/TOTP_ENCRYPTION_KEY/POSTGRES_PASSWORD(.env 存 /data/deploy/sub2api/.env chmod600);管理员 admin@sub2api.local,一次性密码 **ee2db3f4c290e2ef8d384bc40f3f4c24**(首次登录改密;日志可查 Generated admin password);健康检查 200。待办:用户申请域名证书 → nginx 反代(**必须 underscores_in_headers on** 支持粘性会话头 session_id;上游需自备 Claude/GPT 等订阅或 API Key)。 +- 2026-08-27 | FIX | 「日志监控/菜单/工作台异常」前后端联查修复完成:根因=①本地库缺 010 日志列②缺工作台/招聘菜单种子③快捷入口 /system/log/* 死链④菜单 id=95/96 三连冲突(recruitment/003 与 014 新房预售、015 安全日志互覆盖,最终 95=新房预售/96=安全日志/97=招聘中心,种子修正 service e18b25f);admin 前端 7dc9bc6 打通 Drawer 重构编译错+快捷入口路径,钩子全绿;浏览器实测工作台/操作日志页正常(截图 .workbuddy/shots/);审计字段空=旧二进制;本地 xxcool/opuser 密码=opuser123;⚠️生产库菜单需重放 014→015→003 修复;agent-browser Chrome 崩 0xC0000005 环境级未解。 + - 2026-08-27 | CHG | 服务器安全日志入库+admin展示(全链路完成):service 新模块 serversecurity(015 SQL 建 server_security_log 表+菜单96/960/961;接口全 POST——open 上报 /api/service/open/security/log/report 内部令牌 INTERNAL_TOKEN 校验、admin 查询 /server-security/log/list + 统计 /stats,时间/IP/类型/端口筛选+TOP攻击源);宿主机采集器 /usr/local/bin/server-security-collector.sh(journald sshd 失败/成功认证 + /var/log/fail2ban.log 的 Ban/Unban 增量,状态文件 /var/lib/server-security/last.ts,cron 每5分钟上报 127.0.0.1:10100);admin 页面 views/monitor/security/index.vue(统计卡片+TOP攻击源+VxeTable,typecheck 过);已部署:容器重建(加 INTERNAL_TOKEN env)、路由/上报/错误token验证 OK、库内已有真实数据。坑:fail2ban 默认写文件日志不写 journald、grep -E 必需、remote 命令含 \$ 时用单引号会失效(用脚本文件避免)。 - 2026-08-27 | OPS | 安全加固收尾:Bark 告警已配置并实测链路通(device_key=sm5WnyANWx89GgLtFnRXhk;本 bark 实例仅支持路径式 key,/push 端点报 400,监控脚本已改 POST JSON 到 /,实测 code200 手机收 3 条测试通知);本地 ssh_exec.py 明文密码已清理(覆盖为密钥登录版,deploy_key.py 已删,密钥版连接验证 OK)。 - 2026-08-27 | OPS | 腾讯云服务器安全加固+监控完成(193.112.118.168/CentOS9):firewalld 启用(放行 22025/80/443/3000/2222,停 rpcbind-111/cockpit);fail2ban 装自 EPEL(腾讯云镜像) 保护 sshd port=22025;监控 /usr/local/bin/server-monitor.sh + cron 每10min(SSH爆破/新登录/封禁/磁盘/内存/负载/端口漂移,Bark 可配 /etc/server-monitor.conf 的 BARK_URL);dnf-automatic 每日06:00 安全补丁;SSH 密钥已部署但按用户要求保留密码登录。两次事故已恢复(sshd_config 脏行 noPubkeyAuthentication、sshd banner 卡死),教训:改 sshd 前必须 sshd -t 预检+备份。 @@ -20,3 +30,5 @@ - 2026-08-27 | DOC | 完成「招聘考试信息聚合系统」总计划书设计稿(招聘考试功能总计划书.md):贵州官方数据源调研(gzrsks SPA、rsj.guiyang.gov.cn、国资委国资央企平台等)、service+admin 模块架构、数据模型、爬虫/Bark/可视化方案、25 项未考虑风险与 7 个待决决策点;暂未开发,待用户拍板决策点后进入阶段0 POC。 - 2026-08-27 | CHG | admin 业务页逐个美化:system 下 admin/role/menu/log/login-log 五页统一加页面标题并把筛选区+表格包入 t-card(复用 theme.css),仅 template 布局调整、脚本零改动;全局 theme.css 补 wb-page-head 等共享样式。前端未提交。 - 2026-08-27 | CHG | admin 全局主题美化:新增 src/styles/theme.css(靛蓝→紫品牌色 !important、圆角/轻投影/非纯白背景/主按钮渐变/滚动条/暗色适配),bootstrap.ts 接入;工作台 page 重做为渐变英雄头+玻璃统计卡+图标快捷宫格。前端未提交。 + +- 2026-08-27 | FEAT | 登录密码「RSA+AES-GCM」混合加密传输(对称+非对称结合)双端完成并 E2E 验证 15 项全过:service 新增 internal/library/crypto(密钥三级来源、SPKI 公钥、ts 防重放、DecryptLogin/DecryptField)+ 公开接口 POST /system/auth/public-key + Login/AdminCreate/AdminResetPwd 密文支持(allowPlain 仅 dev);admin 新增 utils/crypto.ts(Web Crypto 零依赖)+ loginApi/getPublicKeyApi 加密 + createAdmin/resetAdminPassword 加密字段;数据库密码本就是 bcrypt 哈希。提交 service 0648477 / admin a1bddc3(push 仍待令牌)。⚠️坑:①公钥必须 SPKI(MarshalPKIXPublicKey),PKCS#1 致 ASN.1 wrong tag;②Node 模拟时 GCM tag 需 getAuthTag 单独取(WebCrypto/Go 密文已含 tag);③commitlint scope 须在允许列表(用 other/project)。