From 3a3428ef94d7231f0bea8d3e0b415b5201bc9ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E7=8A=80=E9=BA=9F?= Date: Wed, 26 Aug 2026 23:45:17 +0800 Subject: [PATCH] =?UTF-8?q?LOG:=20=E8=AE=B0=E5=BD=95=20RBAC=20=E4=BA=8C?= =?UTF-8?q?=E6=9C=9F=EF=BC=88=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86/?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97/=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=91=E5=BD=A2=EF=BC=89=E4=B8=8E=E7=99=BB=E5=BD=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=BF=87=E6=BB=A4=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .workbuddy/memory/2026-08-26.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.workbuddy/memory/2026-08-26.md b/.workbuddy/memory/2026-08-26.md index 743ebd7..c44b4c4 100644 --- a/.workbuddy/memory/2026-08-26.md +++ b/.workbuddy/memory/2026-08-26.md @@ -1,5 +1,13 @@ # 2026-08-26 +- CHG | RBAC 菜单结构二期(service+admin):后端 admin_login_log 表+dao/do/entity/api/service/controller 在 4aca0c7 (house) 已合并;009_menu_rbac_v5.sql 执行:人员管理菜单+按钮(system:personnel:*,复用 views/system/admin/index.vue 页面)、日志管理改目录+操作日志/登录日志子菜单、菜单管理图标换 file-tree-outline。前端:人员管理页权限码 system:admin:*→system:personnel:*+文案"管理员"→"人员"、菜单管理页树形改扁平化+depth 缩进(tdesign 全量注册后 t-table tree 模式渲染不稳定,扁平化最稳,47 行含完整菜单树)、新增登录日志页(账号+结果下拉+状态 tag+分页+复制参数)、system.ts 加 getLoginLogList API。浏览器验证:登录滑块+登录链路 200、操作日志/登录日志接口 curl 全部 4 条记录(2 成功 2 失败)按成功/失败过滤正确;菜单管理树形二级清晰。⚠️ 人员管理页 /system/admin 与登录日志页 /system/log/login 因 vben 框架 pageMap key 形式与 component 字符串归一化不一致 404(vben 框架适配问题,待修复:pageMap 经 normalizeViewPath 去 ../ 加 / 再尝试去 /views;component 路径同样处理但结果 key 不一致;本会话未找到不影响其他页面的修复方案,记录备查)。 +- FIX | 登录日志过滤 bug:Status 默认 0 被误当"过滤失败"。修复:api/Service/dto 改 *int(nil 不过滤)。 +- CFG | 补齐 admin/service 的 Gitea act_runner 自动部署 workflow:admin=.gitea/workflows/deploy.yml(node22 二进制覆盖镜像 node20 + corepack pnpm11.16 + pnpm install + 直接 vite build 避 turbo 卡死 + cp /data/www/admin.xpcool.com);service=.gitea/workflows/deploy.yml(Go1.23 npmmirror + GOPROXY goproxy.cn + CGO=0 交叉编译 + 组装目录 + deploy/Dockerfile + docker build 重建容器 10100/xpcool-net/GF_GCFG_ENV=prod,DB_DSN/JWT_SECRET 走 Gitea Actions secrets + /api.json 冒烟);YAML 已校验;⚠️ 用户需在 Gitea 两个仓库 Actions Secrets 配 DB_DSN(带 mysql: 前缀)与 JWT_SECRET;service 首次部署前需手动导种子 SQL +- FIX/DEP | 本地登录 no rows 修复 + 清理废弃 webhook:①根因=本地库 service_xpcool_com 的 admin_user 为空表(本地与服务器库是两套,此前只改了服务器);补 super_admin 角色 + 导入 009_admin_account_v2.sql(须 --default-character-set=utf8mb4,否则中文 nickname 报 Data too long)→ 本地 xxcool 登录成功(subject=3),admin 预期失败;②删除服务器废弃 webhook 方案:deploy-webhook.service 停止/禁用/删 unit + webhook.py/secrets.env/deploy.sh 删除,9000 无监听;现自动部署=Gitea act_runner + 仓库内 .gitea/workflows(tool.xpcool.com 已配 deploy.yml:push main/dev → clone → pnpm build → cp 到 /data/www/);⚠️ admin/service 两个仓库尚无 .gitea/workflows,需参考 tool 补配 +- CHG | 看房 house 模块(service+admin)开发落地:①总设计文档 docs/house-system-design.md;②后端 9 表(010_house_tables)+菜单权限种子(011_house_menu)+gf gen dao+api/controller/service 三资源(community/listing/dashboard)全 POST 动作式前缀 /api/service/admin/house(含多平台软关联 match_group_id、笋盘/低可信标记),cmd.go 注册,go build 通过;③前端 api/house.ts+views/house/{community,listing,dashboard,data},图表复用 @vben/plugins/echarts,typecheck 通过(仅项目已有 2 个错误非本次引入)。坑:gf CLI 是 com.lib.gf.v2 分支→gen dao import 需 sed 回 gogf(18 文件);mysql 客户端需 --default-character-set=utf8mb4;TINYINT comment 含 0/1 被 gf 映射 bool(status 三值改 INT) +- FIX/DEP | 登录 no rows 修复:根因=线上前端仍是 19:32 旧版(默认 admin/admin123,admin 已删);手动部署新版 dist(vite build,index-index-B-XlZ2uN.js)至 /data/www/admin.xpcool.com/,验证 xxcool 线上登录成功、js 无 admin123;⚠️ 发现 webhook 自动部署未生效:deploy-webhook.service disabled+inactive(8/22 11:52 停止、9000 未监听),提交代码不会自动部署——需 `sudo systemctl enable --now deploy-webhook` + 确认 Gitea 仓库 webhook 指向 http://193.112.118.168:9000/hook +- CHG | admin 登录页再简化:移除 super 下拉 + 代码内置账号密码(删 selectAccount/MOCK_USER_OPTIONS/自动填充),手输 + 勾选「记住账号」(AuthenticationLogin 内置 rememberMe,localStorage 只记用户名不存密码);本地 dev 5173 浏览器验证:无下拉、仅用户名/密码/滑块 + 记住账号复选框 ✓ +- CHG | 生产超管账号替换为 xxcool/xxCool@2026(service):DB 清 admin 全量数据(用户/绑定/refresh 会话)并新增 xxcool 绑 super_admin,manifest/sql/009_admin_account_v2.sql(008 编号被 008_menu_rbac_v4.sql 占用);004_seed.sql 种子账号同步;登录验证 xxcool 成功/admin no rows(预期);前端 login.vue 默认账号同步改 xxcool(下拉仅 Super,本地 dev 5173 浏览器验证正常:combobox Super + 账号密码自动填充);⚠️ 线上 dist 仍是旧版,需部署后才可用 xxcool 登录;⚠️ 构建坑:turbo/pnpm build 会卡死(15min+ 无产出),必须直接 `cd apps/web-tdesign && ./node_modules/.bin/vite build --mode production`(约 20s) - CHG | RBAC 菜单调整(service+admin):DB 移除管理员管理菜单(id=2 + 按钮 21-25 软删+解绑),系统管理下新增日志管理菜单(id=7, system:log, component=system/log/index),原按钮 63(system:log:list)挂到 id=7 下;manifest/sql/008_menu_rbac_v4.sql 幂等脚本;前端新增 views/system/log/index.vue(分页/筛选/列表,参考若依风格:keyword+查询/重置、ID/权限标识/方法tag/路径/操作人/IP/耗时/状态码tag/参数/操作时间)、system.ts 加 getSystemLogList API、core/user.ts homePath /system/admin→/system/role;浏览器验证:菜单管理表格正常(t-table 真正渲染 22 行数据),角色管理 2 条 super_admin/op 正常,日志管理 10 条审计数据正常 - FIX | web-tdesign t-table 空白根因:bootstrap.ts 引入了 tdesign CSS 但缺 `app.use(TDesign)`,导致业务页面 t-table/t-button/t-input 等全部渲染为裸自定义元素(DOM 是 T-BUTTON 等),表格/弹窗/事件全部失效;补 import TDesign + app.use(TDesign) 后所有 t-* 组件正常工作 - DEP | service.xpcool.com + admin.xpcool.com 生产部署上线(腾讯云 193.112.118.168):后端交叉编译→docker 重建(10100/GF_GCFG_ENV=prod/DB_DSN 补 mysql: 前缀)→nginx HTTPS(两域名 443+301+反代)→证书(E:\xxcool\ssl → /data/nginx/ssl/<域名>/)→DB 补种(003/004/004b/007,权限映射对齐 /api/service 全 POST 路由);端到端验证通过:admin 首页 200、service /api.json 200、同源登录返回 token。部署要点:①容器内须有 config.yaml(基础配置)否则 GF 启动报找不到 config;②DB_DSN 需 type 前缀 mysql:;③服务器 docker build 用 nohup 后台+日志轮询防 SSH 超时;④SQL 种子导入用宿主机重定向 `sudo sh -c 'docker exec -i ... < file'`。pnpm 修复:装到 `~/.workbuddy/binaries/node/workspace` 后 `node ` 调用(比 npm exec 稳)。