10 KiB
service.xpcool.com 变更记录
倒序:最新在上。格式:YYYY-MM-DD | 类型 | 摘要
2026-08-27 | CHG | 看房成交模块:api/house/transaction + service/house/transaction + controller/house/transaction 实现成交记录 list 接口(/api/service/admin/house/transaction/list,全 POST 分页,关联小区名,按成交日期倒序),dto 加 HouseTransactionVO,cmd.go 注册;012_house_transaction_menu.sql 权限种子(house:data:transaction id=941 挂数据明细 94);go build 通过 2026-08-26 | CFG | 新增 Gitea act_runner 自动部署:.gitea/workflows/deploy.yml(push main/dev → 下载 Go1.23 工具链 npmmirror + GOPROXY goproxy.cn → CGO=0 linux/amd64 交叉编译 → 组装 main+manifest/config(config.yaml+config.prod.yaml)+resource+deploy/Dockerfile → docker build 重建容器 127.0.0.1:10100(xpcool-net,GF_GCFG_ENV=prod,DB_DSN/JWT_SECRET 走 Gitea Actions secrets)→ curl /api.json 冒烟);deploy/Dockerfile 仓库内维护;DB 结构变更不自动 DDL,需手动导 manifest/sql 2026-08-26 | FIX | 本地登录 no rows 修复:根因=本地库 service_xpcool_com 的 admin_user 空表(本地/服务器库两套,此前仅改服务器);补 super_admin 角色 + 导入 009_admin_account_v2.sql(须 --default-character-set=utf8mb4 否则中文 Data too long)→ 本地 xxcool/xxCool@2026 登录成功(subject=3);同时服务器废弃 webhook 方案已删除(deploy-webhook.service/webhook.py/secrets.env/deploy.sh),自动部署改走 Gitea act_runner + .gitea/workflows(仓库内尚未配置,待补) 2026-08-26 | CHG | 看房 house 模块后端落地:010_house_tables.sql 建 9 表(community/building/listing/price_snapshot/transaction/facility/community_facility/school_district/preference)+ 011_house_menu.sql 菜单/权限种子(超管 role_id=1 绑定);gf gen dao 生成 dao/entity/do;实现 api/house/{community,listing,dashboard} + controller/house + service/house(管理 CRUD + 看板聚合,全 POST 动作式,前缀 /api/service/admin/house,含多平台软关联 match_group_id、笋盘/低可信标记);cmd.go 注册 housectl + 3 个 RegisterService;go build 通过。坑①gf CLI 为 com.lib.gf.v2 分支,gen dao 产物 import 需 sed 回 github.com/gogf/gf/v2(18 文件);②mysql 客户端须 --default-character-set=utf8mb4 否则中文 COMMENT/INSERT 乱码;③TINYINT 字段 comment 含 0/1 被 gf 映射 bool(status 三值改 INT);hack/config.yaml 的 link+tables 已指向本地库 2026-08-26 | CHG | 生产超级管理员账号替换:删除 admin/admin123(用户/绑定/refresh 会话全清),新增 xxcool/xxCool@2026(bcrypt $2b$10$,绑定 super_admin);脚本 manifest/sql/009_admin_account_v2.sql(008 编号已被 008_menu_rbac_v4.sql 占用);004_seed.sql 种子账号同步改 xxcool;登录验证:xxcool 成功、admin 报 no rows(预期);⚠️ 线上前端仍是旧版(默认 admin/admin123),需部署新版 dist 后 xxcool 才可正常登录 2026-08-26 | CHG | RBAC 菜单调整:移除管理员管理(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 2026-08-26 | FIX | RBAC 安全漏洞修复:禁用角色(status=0)绑定的权限仍生效。根因为 Codes/HasPermission/Routes 三处联表查询未过滤 admin_role 启用状态,仅 roleCodes 过滤。修复:三处统一 LeftJoin admin_role 并加 r.status=1,opuser 联调验证 codes 空/routes 空/接口 403,admin 全链路回归通过
2026-08-26 | REQ | 看房方案补充「后台管理 + 可视化看板」两层:数据管理用 vben 标准列表 CRUD(查询表单 + vxe-table + 分页 + 批量,页面含小区/房源/快照/成交/配套学区/采集任务),可视化看板用全局筛选器驱动图表联动(筛选器→图表、图表交叉过滤、列表↔地图双向,状态放 Pinia);Go 接口分管理 CRUD 与看板聚合两类,统一 FilterDto 入参供管理与看板共用;echarts/vxe-table/RBAC 均复用现有依赖 2026-08-26 | REQ | 看房方案迭代:推送改 Bark(苹果,自建 Server 到腾讯云/或官方免费版,用 level/group/url/badge 参数);可视化加贵阳区域地图(底图腾讯地图 GL JS,区县边界 DataV 审图号 GeoJSON,叠加地铁线/学区划片/楼栋点/价格热力,楼栋坐标三级落地:小区中心自动→楼栋图解析→重点盘人工校准);多平台同房源「不去重、软关联对比」(推翻去重,source+source_house_id 同平台唯一,match_group_id 跨平台软关联);补充:笋盘识别/挂牌天数+调价历史/租金回报率/可负担性硬过滤/面积建面套内标准化/贵阳区域画像(观山湖新中心、地铁1/2/3号线、山地通勤)/快照长期保留1-2年 2026-08-26 | REQ | 规划「看房」功能模块(贵阳购房决策辅助,仅规划设计未开发):架构定为 service 新增 house 业务模块(复用 gf gen dao + MySQL,数据模型 9 张表 community/listing/price_snapshot/transaction/facility/community_facility/school_district/preference/score),admin 新增看房页面(echarts@6 已内置),另立独立 Python 采集分析服务(采集/清洗/去重/打分,只写库不对外 API);决策:目标城市贵阳、新房+二手房都做、先本地后上云;核心风险为贵阳网签/成交数据公开程度不如一线 2026-08-26 | DEP | 生产部署上线(193.112.118.168):交叉编译 linux/amd64,重建容器 service.xpcool.com:new(127.0.0.1:10100,GF_GCFG_ENV=prod,DB_DSN 补 mysql: 前缀,沿用 JWT_SECRET);nginx 改 HTTPS(443+80→301,证书 /data/nginx/ssl/service.xpcool.com/)反代 10100;DB service 库补种 003→004→004b→007,权限映射对齐 /api/service 路由,admin/admin123 登录验证通过 2026-08-26 | CFG | 新增 manifest/sql/007_menu_permissions_v3.sql(type=2 权限路径映射最新 /api/service 全 POST 路由,含 system:log:list id=63)与 004b_fill_seed.sql(004 中断后的幂等补齐脚本);部署要点:容器内需 config.yaml(基础配置)否则 GoFrame 启动报找不到 config
2026-08-26 | FIX | RBAC 安全漏洞修复:禁用角色(status=0)绑定的权限仍生效。根因为 Codes/HasPermission/Routes 三处联表查询未过滤 admin_role 启用状态,仅 roleCodes 过滤。修复:三处统一 LeftJoin admin_role 并加 r.status=1,opuser 联调验证 codes 空/routes 空/接口 403,admin 全链路回归通过
2026-08-26 | CFG | 修复 GoLand 直接 Run 报「找不到 config.yaml」:新增项目级运行配置 .run/service-dev.run.xml(内置 GF_GCFG_FILE=config.dev.yaml + DB_DSN + JWT_SECRET 三环境变量);.run/ 加入 .gitignore(含口令);README 补「Local startup」小节(终端 .env.dev / GoLand 运行配置两种方式)
2026-08-26 | FIX | 前端登录 502 联调:根因为服务未启动(10100 无监听);按 .env.dev 启动后 login/info/codes/menu-routes 全链路 curl 200,dev server(20100/20101/20102/20103)代理全部恢复 2026-08-26 | CFG | CHANGELOG 纳入 git 管理(.gitignore 放行 .workbuddy/memory/CHANGELOG.md),中央工作空间迁移至 ../workbuddy.xpcool.com(相对路径索引)
2026-08-26 | CHG | 统一 API 前缀 /api/service/(admin→/api/service/admin、user→/api/service/user、open→/api/service/open);服务端口统一 10100(dev/prod/test);DB admin_menu 权限映射前缀同步;前端 vite 代理与 api 文件同步适配(全 POST + 动作式路径),路由回归 29 条一致 2026-08-26 | CHG | 遗留 /v1 全移除(URL 前缀 /admin/v1→/admin、/api/v1→/api、/api/open/v1→/api/open);全部接口改 POST(5 组 CRUD 冲突路径改动作式 /list /create /update/{id} 等);DB admin_menu 权限映射 path 同步;全项目英文注释转中文(含 dao/entity/do/table 生成模板),路由回归 29 条全 POST 一致 2026-08-26 | FIX | 修复审计落库失败:admin_operation_log.request_param 为 JSON 列,仅合法 JSON 入库、其余存 NULL(此前一直失败被「尽力而为」吞掉,系统日志查不到数据) 2026-08-26 | CHG | 区分系统日志与服务器日志:审计服务由 admin/system/audit 归位为 admin/system/log(package admin_system_log,含 Record+List),新增 GET /admin/v1/system/log 分页查询 + system:log:list 权限映射(菜单 id=63);服务器日志保持 admin/base/log 2026-08-26 | CHG | login 资源迁移至 admin/admin/login(api+service),全 api/service 包名统一为「路径下划线拼接」(package admin_admin_login / admin_system_menu / user_auth 式);恢复 api/open 并规范化(去 v1,包名 open_tools_ip 式);controller/cmd 引用同步,路由回归 28 条一致 2026-08-26 | REQ | 后台登录接口联调通过:login/info/codes/menu-routes/RBAC/refresh(单次)/logout 全链路 curl 验证 OK(库 service_xpcool_com) 2026-08-26 | FIX | 联调发现并修复 admin refresh 单次使用漏洞:Refresh 撤销旧会话后补 RowsAffected 校验,重复使用旧 refreshToken 返回 code 10002 2026-08-26 | CFG | 新建 .env.dev 本地配置(DB_DSN=mysql:root:root123@tcp(127.0.0.1:3306)/service_xpcool_com?loc=Local + JWT_SECRET),.gitignore 追加 .env* 防口令入库 2026-08-26 | CHG | 清理模板:删除 api/hello、api/open、common/tools 及 controller/hello、controller/open;API 目录去掉 v1 层(api/admin/system/auth/auth.go 式),service 层完全镜像;URL 前缀保持 /admin/v1 兼容前端 2026-08-26 | CHG | 目录重构:API 层资源目录化(api/admin/v1/system/auth/auth.go 式);service 层严格镜像 API 多级结构(internal/service/admin/system/auth/auth.go 式),接口随实现归位、admin_rbac 拆为 admin/role/menu_manage 三包,controller/cmd 引用同步,路由回归 29 条一致 2026-08-26 | CHG | 补全管理端登录接口:新增 Refresh/Logout 端点(/admin/v1/system/auth/refresh|logout),登录改走 issue 把刷新令牌 JTI 落库,与 user 端刷新撤旧机制一致 2026-08-26 | CHG | 同步三铁律(中文注释/做记录/中文优先)至 AGENTS.md「统一工作约定」小节 2026-08-26 | CFG | 建立统一变更记录机制(CHANGELOG),接入 xpcool.com 中央索引