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

34 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-08-26
- CHG | house-data 采集分析服务Python搭建完成config/db/pipeline/store 实现 community/listing/snapshot upsert 入库(对齐 010 表)+ crawlers/beike.py 采集框架(选择器需实测)+ scheduler.py 每日 08:00 + seed_demo.py灌入 8 小区/8 房源/26 快照验证闭环,区域聚合 4 区县均价与笋盘数正确,前端看板/列表已有数据
- 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/workspace``node <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.xml`GoLand 项目级运行配置,内置 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 代理连接拒绝→502`source .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 列落库失败。