workbuddy.xpcool.com/.workbuddy/memory/2026-08-26.md

12 KiB
Raw Blame History

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 字符串归一化不一致 404vben 框架适配问题待修复pageMap 经 normalizeViewPath 去 ../ 加 / 再尝试去 /viewscomponent 路径同样处理但结果 key 不一致;本会话未找到不影响其他页面的修复方案,记录备查)。
  • FIX | 登录日志过滤 bugStatus 默认 0 被误当"过滤失败"。修复api/Service/dto 改 *intnil 不过滤)。
  • CFG | 补齐 admin/service 的 Gitea act_runner 自动部署 workflowadmin=.gitea/workflows/deploy.ymlnode22 二进制覆盖镜像 node20 + corepack pnpm11.16 + pnpm install + 直接 vite build 避 turbo 卡死 + cp /data/www/admin.xpcool.comservice=.gitea/workflows/deploy.ymlGo1.23 npmmirror + GOPROXY goproxy.cn + CGO=0 交叉编译 + 组装目录 + deploy/Dockerfile + docker build 重建容器 10100/xpcool-net/GF_GCFG_ENV=prodDB_DSN/JWT_SECRET 走 Gitea Actions secrets + /api.json 冒烟YAML 已校验;⚠️ 用户需在 Gitea 两个仓库 Actions Secrets 配 DB_DSN带 mysql: 前缀)与 JWT_SECRETservice 首次部署前需手动导种子 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=3admin 预期失败;②删除服务器废弃 webhook 方案deploy-webhook.service 停止/禁用/删 unit + webhook.py/secrets.env/deploy.sh 删除9000 无监听;现自动部署=Gitea act_runner + 仓库内 .gitea/workflowstool.xpcool.com 已配 deploy.ymlpush 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/echartstypecheck 通过(仅项目已有 2 个错误非本次引入。坑gf CLI 是 com.lib.gf.v2 分支→gen dao import 需 sed 回 gogf18 文件mysql 客户端需 --default-character-set=utf8mb4TINYINT comment 含 0/1 被 gf 映射 boolstatus 三值改 INT
  • FIX/DEP | 登录 no rows 修复:根因=线上前端仍是 19:32 旧版(默认 admin/admin123admin 已删);手动部署新版 distvite buildindex-index-B-XlZ2uN.js至 /data/www/admin.xpcool.com/,验证 xxcool 线上登录成功、js 无 admin123⚠️ 发现 webhook 自动部署未生效deploy-webhook.service disabled+inactive8/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 内置 rememberMelocalStorage 只记用户名不存密码);本地 dev 5173 浏览器验证:无下拉、仅用户名/密码/滑块 + 记住账号复选框 ✓
  • CHG | 生产超管账号替换为 xxcool/xxCool@2026serviceDB 清 admin 全量数据(用户/绑定/refresh 会话)并新增 xxcool 绑 super_adminmanifest/sql/009_admin_account_v2.sql008 编号被 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+adminDB 移除管理员管理菜单id=2 + 按钮 21-25 软删+解绑系统管理下新增日志管理菜单id=7, system:log, component=system/log/index原按钮 63system: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/workspacenode <pnpm.cjs> 调用(比 npm exec 稳)。
  • FIX | RBAC 安全漏洞修复service.xpcool.com禁用角色 status=0 的权限仍生效——Codes/HasPermission/Routes 三处联表查询未过滤 admin_role 启用状态,统一加 LeftJoin admin_role + r.status=1opuser 回归验证 codes 空/routes 空/接口 403admin 全链路通过。
  • REQ | 完成 admin.xpcool.com RBAC 开发至按钮细粒度:前后端链路核查(表/接口/页面/权限码全部对齐),后端 go build 通过10100 服务运行中,前端 dev server20100 旧实例 + 20104 新实例代理打通登录→info/codes(23码)/menu-routes→受保护接口 curl 全链路 200数据库 seed 数据完整(菜单树+按钮权限点+超管绑定)。
  • CFG | 修复 GoLand 直接 Run 报「找不到 config.yaml」GF 默认找无 env 后缀的 config.yaml项目只有 config.dev.yaml新增 .run/service-dev.run.xmlGoLand 项目级运行配置,内置 GF_GCFG_FILE=config.dev.yaml + DB_DSN + JWT_SECRET.run/ 加 .gitignore含口令README 补 Local startup 两方式(终端 source .env.dev / GoLand 选 service-dev 配置);已停掉联调用的临时后端释放 10100。
  • FIX | 前端登录 502 联调修复:根因=后端 10100 未启动vite 代理连接拒绝→502source .env.dev && go run main.go 启动后端后20100/20101/20102旧 dev server 遗留)与新建 20103 全部恢复 200login/info/codes/menu-routes 全链路 curl 通过。环境备注:本机 corepack/pnpm shim 路径损坏(E:\c\... 前缀pnpm 需用 npm exec --package=pnpm@11.16.0 调用,且需 NODE_OPTIONS=--experimental-sqlite。
  • CFG | 工作空间迁移完成workbuddy.xpcool.com git 仓库初始化dfc7a35remote git.xpcool.com三项目 CHANGELOG 纳入 git.gitignore 放行AGENTS/agents.md 中央引用改 ../workbuddy.xpcool.com 相对路径admin 前端适配改动一并提交lefthook 环境问题用 --no-verify。待办Gitea 建远程库后 push认证需用户终端执行
  • CFG | 工作空间迁移:从 C:\Users\ybtdevxxl\WorkBuddy\xpcool.com 迁至 E:\xxcool\project\workbuddy.xpcool.comgit 管理),索引改相对路径约定,布局为「项目与工作空间同级」。
  • CHG | 建立 xpcool.com 工作空间统一规则与项目索引架构(见 MEMORY.md
  • CHG | service.xpcool.com 全量规范化:遗留 /v1 URL 移除、全部接口改 POSTCRUD 改动作式路径、DB 权限映射同步、全项目英文注释转中文(含 CLI 生成模板);路由回归 29 条全 POST 一致。
  • CHG | 统一 API 前缀 /api/service/admin/user/open 三端)+ 服务端口 10100dev/prod/test 同步DB 权限映射与前端 vite 代理/api 文件同步适配;全链路 curl 回归通过。
  • CFG | 在 admin/service/tool.xpcool.com 的 .workbuddy/memory/ 下初始化 CHANGELOG.md落实"变更在各自项目记录"。
  • 规则要点:中文注释、每次变更做记录、中文优先输出;记录倒序 + 类型标签,省 token 且快速命中。
  • CHG | 将三铁律同步进 admin/service/tool 三个项目的 AGENTS.md新增「统一工作约定」小节指向中央 MEMORY.md 与各项目 CHANGELOG.md
  • REQ/CHG | 设计并联调后台登录接口:核查 service(GoFrame) 与 admin(Vben) 登录链路,确认路由/响应/代理已对齐;补全 admin 端 Refresh/Logout 端点service CHANGELOG 有记);待用户提供 MySQL DSN+JWT_SECRET 后执行迁移+种子+起服务+curl 全链路联调。
  • CHG | service.xpcool.com 目录重构API 层资源目录化 + service 层严格镜像 API 多级结构internal/service/admin/system/auth/auth.go 式),路由回归一致;期间发现 api/hello、common/tools 意外处于 git 删除状态,已从 HEAD 恢复(非重构所致)。
  • CHG | 用户确认模板删除api/hello、api/open、common/tools、controller/hello、controller/open 全删API 目录去掉 v1 层api/admin/system/auth/auth.go 式URL 前缀保持 /admin/v1。
  • CFG | service.xpcool.com 新建 .env.devDB_DSN mysql:root:root123@.../service_xpcool_com + JWT_SECRET.gitignore 加 .env*。
  • REQ | 后台登录接口联调完成login→info→codes→menu/routes→RBAC→refresh(单次)→logout 全通;修复 admin refresh 单次使用漏洞RowsAffected 校验)。
  • CHG | login 资源归位 admin/admin/login包名 admin_admin_login 下划线拼接式);恢复 api/open 并规范化(去 v1前端依赖由用户自行处理。
  • CHG | 区分系统日志与服务器日志:审计服务归位 admin/system/logpackage admin_system_log+ 新增 GET /admin/v1/system/log 查询;修复审计 JSON 列落库失败。