夏犀麟
|
ad4567fc01
|
feat: 招聘爬虫健壮性 + 通知记录增强(归档工作区留存改动)
这两批改动此前一直压在工作区未提交,本次一并归档。go build ./... 通过。
一、招聘爬虫健壮性
- 新增 internal/service/recruitment/source_config.go:
crawl_source.config(VARCHAR(1000) JSON)的源级抓取参数解析 —— 增量窗口天数、
单次详情页上限、最大翻页数、详情间隔限速、自定义标准词/排除词。
全部字段可选,JSON 解析失败即回退默认值,保证历史数据零迁移可用,
且一个源的脏配置不会拖垮整个调度。
- 新增 internal/service/recruitment/keywords.go(含 keywords_test.go 与 testdata/):
链接筛选由「URL 形态命中 AND 文本语义命中」改为评分制 —— URL 形态加分、
标准词加分、排除词大幅减分,达阈值即入选。原与逻辑会系统性漏抓
「补充工作人员的通知」「公开选调公务员简章」等标题变体,且静默无报错。
- 新增 manifest/sql/recruitment/004_crawl_source_status.sql:
crawl_source 增加「最近一次运行状态」冗余列,抓取结束时写入,
使 Sources() 查询零 JOIN 零扫描 —— 规避原实现全表扫描只增不减的 crawl_log、
随运行时间线性劣化的问题。幂等,可重复执行。
- internal/service/recruitment/crawler.go:在既有「静态两级 / SPA / curl 回退」
流程上做锚点抽取与过滤、编码回退的健壮性增强。
- internal/service/recruitment/bark.go、recruitment.go:配合上述调整。
二、通知记录增强
- api/notice、internal/controller/notice、internal/service/notice、
internal/model/{dto,entity,do}/notice.go:通知日志查询与操作扩展 ——
批次号、状态、重试次数、来源、耗时、详情、删除、清空。
- 新增 internal/model/dto/notice_meta.go(字典选项元数据,供前端筛选器取选项)。
- 新增 manifest/sql/017_notice_log_enhance.sql:notice_log 扩展列 +
删除/清空/详情/字典选项接口权限,幂等(ALTER 走 information_schema 判断,
菜单 ON DUPLICATE KEY UPDATE,角色绑定 INSERT IGNORE)。
三、仓库卫生
- .gitignore 补 rc_*.log 与 rc_verify*,挡掉本地离线验证产物
(含 30MB 的 rc_verify.exe),避免误入库。
设计依据见 docs/recruitment-crawler-design.md。
注:017 与 recruitment/004 两个 SQL 为增量迁移,DB 结构变更不自动 DDL,
生产库需手动导入。
|
2026-09-14 01:22:39 +08:00 |
|
夏犀麟
|
4b3c00270f
|
feat(i18n): 中文化校验提示与服务层错误信息
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 31s
将 api 层校验规则提示语、service 层 gerror.Wrap 与 response.Error
错误信息、panic 未注册提示统一改为中文,并同步中文化 cmd 路由注释
与变更记录。仅涉及注释、文档与字符串改动,无业务逻辑变更。
|
2026-09-13 23:22:46 +08:00 |
|
夏犀麟
|
70cb86176e
|
chore(auth): 登录接口豁免全量加密,仅加密密码字段
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 37s
- APICrypto plainRoutes 增 /system/auth/login(登录请求不整体加密)
- ResolveLogin 密码字段密文优先解密,兼容全量模式
|
2026-08-28 00:28:58 +08:00 |
|
夏犀麟
|
ebc507ee6c
|
feat(auth): 生产全量请求/响应加密中间件
- crypto.Service 增 fullBody 开关 + DecryptRequest/EncryptResponse(会话密钥双向加密)
- 新增 middleware/APICrypto:请求整体解密 + 响应加密(public-key 豁免),未加密请求拒绝
- ResolveLogin/resolvePassword 增 fullBody 分支;admin 组中间件链调整
- injectEnv 支持 ENCRYPT_FULL_BODY/ENCRYPT_ALLOW_PLAIN(直接跑二进制需 env 注入)
|
2026-08-28 00:17:47 +08:00 |
|
夏犀麟
|
06484774ad
|
feat(auth): 登录密码 RSA+AES 混合加密传输与加密字段支持
- 新增 internal/library/crypto:RSA-OAEP(SHA-256)+AES-256-GCM 混合解密,
私钥按 配置PEM > data/crypto/rsa_private.pem > 自动生成 三级来源,公钥 SPKI 输出
- 公开接口 POST /system/auth/public-key;LoginReq 支持 encryptedKey/encryptedData
- AdminCreate/AdminResetPwd 密码字段支持加密传输(allowPlain 仅开发联调)
- 配置 encrypt.privateKey/allowPlain;data/ 加入 gitignore 防止私钥入库
|
2026-08-27 23:43:41 +08:00 |
|
夏犀麟
|
5e517a2d95
|
chore: 移除误提交的本地测试产物并忽略
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 33s
|
2026-08-27 23:20:53 +08:00 |
|
夏犀麟
|
abd81486ad
|
refactor(api): 去除 api 层 /v1 目录,统一为 api/<模块>/<子模块> 层级规则(包名=路径段下划线连接)
|
2026-08-27 23:20:32 +08:00 |
|
夏犀麟
|
3d24dbd8cb
|
feat(auth): 认证链路联调修复——401 语义化 + 登出撤销会话 + 零配置兜底
- 未授权响应改为 HTTP 401(原 200+code10002 vben 拦截器不识别,
token 过期永远不触发静默刷新/重登)
- 新增 response.JSONWithStatus;三处 401(UserAuth/AdminAuthOnly/AdminAuth)切换
- LogoutReq 支持 refreshToken:登出时撤销刷新会话(幂等),阻止设备续期;
Refresh 时顺带清理已过期会话行
- IAdminAuth 新增 Revoke;dao/internal/admin_user.go 补 bark_device_id/
pushplus_token 列映射(与 016 SQL/0569c70 对齐,恢复 int/gtime 类型映射)
- injectEnv 开发模式兜底: 等占位符未注入 env 时回填本地默认 DSN,
任何启动方式(GoLand/命令行/go run)零配置可跑;prod 不兜底
|
2026-08-27 23:00:53 +08:00 |
|
夏犀麟
|
e868c1ef9c
|
docs: 通知/任务模块变更记录
|
2026-08-27 22:59:21 +08:00 |
|
夏犀麟
|
0569c70690
|
feat(notice+job): 通知模块(渠道/规则/日志/测试) + 自动任务管理(DB驱动gcron) + 用户表加Bark/pushplus字段
|
2026-08-27 22:58:33 +08:00 |
|
夏犀麟
|
e18b25f32a
|
fix(recruitment): 招聘中心菜单 96→97,为 015 安全日志菜单(96)让位
015_server_security.sql 已在生产部署使用 id=96(安全日志,挂系统监控),
招聘中心不能再占 96。95=新房预售、96=安全日志、97=招聘中心。
|
2026-08-27 12:27:44 +08:00 |
|
夏犀麟
|
743683efdd
|
fix(recruitment): 菜单种子主键冲突,招聘中心 95→96 避免覆盖新房预售
003_menu.sql 的招聘中心一级菜单写死 id=95,与 014_house_presale_menu.sql 的
新房预售菜单(id=95,挂看房中心 90)ON DUPLICATE 互相覆盖,后导入者赢。
本地已实际发生覆盖。改为 id=96,951-954 父级同步改 96,超管角色绑定列表同步。
|
2026-08-27 12:22:50 +08:00 |
|
夏犀麟
|
1d451499b9
|
feat(security): 服务器安全日志模块——上报/查询/统计接口 + 015建表菜单
|
2026-08-27 11:30:00 +08:00 |
|
夏犀麟
|
a85a520af7
|
chore: gitignore 忽略本地验证用二进制 service_test.exe
|
2026-08-27 10:50:33 +08:00 |
|
夏犀麟
|
f81ce64fdd
|
fix(recruitment): gcron 表达式改 6 段式,修复每日抓取/推送任务从未注册
gcron 不支持 5 段标准 cron,'0 3 * * *'/'0 8 * * *' 注册时报 invalid pattern
被 ERRO 日志吞掉,导致线上每日 03:00 增量抓取与 08:00 招聘早报推送从未执行。
改为 '0 0 3 * * *' / '0 0 8 * * *'。
|
2026-08-27 10:50:23 +08:00 |
|
夏犀麟
|
8721d01028
|
fix(recruitment): fetchHTML curl 优先 + https 归一化 + 调试日志改 warning 级(logger.level=warning 过滤了 Infof)
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 32s
|
2026-08-27 02:26:53 +08:00 |
|
夏犀麟
|
8b11893d35
|
feat(recruitment): 爬虫修复与部署打通 - Scan no-rows 入库修复 / title 属性兜底 / 双条件过滤 / 空日期插 NULL / crawl_log 截断 / fetchHTML curl 兜底 / 人社局改 https / 新增 config.yaml
|
2026-08-27 02:12:03 +08:00 |
|
夏犀麟
|
1e28e02dc1
|
feat(house): 新增新房预售证模块并扩展相关功能
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 31s
- 添加 api/house/presale 接口模块实现新房预售证查询功能
- 新增 POST /api/service/admin/house/presale/list 接口支持 region/purpose/keyword 筛选
- 在 HousePresaleVO 中增加 PublishDate 字段用于存储公示发布日期
- 在 house_presale 表中添加 publish_date 字段并完成数据库同步
- 更新权限种子配置新增菜单 95 新房预售及 950 查询权限
- 完成相关 controller 和 service 层代码实现并验证接口返回正常数据
|
2026-08-27 02:01:04 +08:00 |
|
夏犀麟
|
ea50261cb8
|
feat(house): 扩充看房数据并增强服务器日志功能
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 35s
- 新增新房预售证表 house_presale 存储预售许可信息
- 为 house_community 表添加 avg_price 字段存储小区参考均价
- 增强服务器操作审计日志功能,新增管理员账号、IP归属地、错误信息、UA等字段
- 实现纯Go版IP归属地离线解析器,无外部依赖,支持二分查找
- 优化看房列表查询逻辑,修复Fields设置位置导致的SQL语法错误
- 集成招聘模块,添加独立数据库配置和Bark推送服务支持
- 重构日志查询接口,支持多维度筛选和综合分页列表展示
- 更新DAO实体结构同步数据库表结构调整
|
2026-08-27 01:47:32 +08:00 |
|
夏犀麟
|
856d62f9c7
|
FIX: workflow Go 下载源改 aliyun 镜像(go.dev 偶发 SSL 错误 exitcode 35)+ 3 次重试
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 20s
|
2026-08-27 00:54:33 +08:00 |
|
夏犀麟
|
4445b8e8bf
|
CHG: house transaction service 层 + recruitment 招聘模块 + 012 菜单 SQL(补提交未推送代码)
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 14s
|
2026-08-27 00:41:59 +08:00 |
|
夏犀麟
|
a2f60c3410
|
CHG: house transaction controller
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 25s
|
2026-08-27 00:34:22 +08:00 |
|
夏犀麟
|
69137f366c
|
CHG: house 成交记录(transaction)模块:api/service/controller 全链路 + cmd 注册 + dto 扩展
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 25s
|
2026-08-27 00:33:52 +08:00 |
|
夏犀麟
|
b439c4d89c
|
FIX: workflow apt 换腾讯云源(deb.debian.org 国内直连超时导致卡死)
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 2m37s
|
2026-08-27 00:18:50 +08:00 |
|
夏犀麟
|
8950dc83e9
|
FIX: deploy workflow Go 下载源改 go.dev 官方(npmmirror/腾讯云无归档),go1.24.5
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Has been cancelled
|
2026-08-27 00:06:48 +08:00 |
|
夏犀麟
|
361e063b80
|
CFG: Gitea act_runner 自动部署(Go 交叉编译 + Docker 重建容器)+ 生产镜像 Dockerfile
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 4m6s
- .gitea/workflows/deploy.yml:push main/dev → Go1.23 交叉编译(linux/amd64) → 组装 main+manifest/config+resource → docker build → 重建容器 127.0.0.1:10100(xpcool-net, GF_GCFG_ENV=prod, secrets: DB_DSN/JWT_SECRET)→ /api.json 冒烟
- deploy/Dockerfile:alpine 最小运行时(main + manifest/config + resource,EXPOSE 10100)
- 新增 009_admin_account_v2.sql(超管账号替换 xxcool)已含在本仓
|
2026-08-26 23:55:46 +08:00 |
|
夏犀麟
|
4aca0c7f6f
|
feat(house): 实现看房模块后端功能
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 5m7s
- 新增 9 张房屋相关数据表(社区/楼宇/房源/价格快照/交易/设施/社区设施/学区/偏好)
- 添加菜单权限种子数据并绑定超级管理员角色
- 生成 DAO 层代码和实体对象
- 实现房屋模块 API 接口(社区/房源/看板)和控制器服务层
- 支持多平台软关联匹配、笋盘标记和低可信度标记功能
- 更新超级管理员账号为 xxcool/xxCool@2026
- 调整 RBAC 菜单结构,移除管理员管理功能,新增日志管理菜单
- 修复 RBAC 安全漏洞,确保禁用角色权限失效
- 重构认证模块,将登录相关接口迁移到统一包结构下
- 移除废弃的管理模块和工具类接口定义
- 为通用工具包添加中文注释和文档说明
|
2026-08-26 23:42:38 +08:00 |
|
夏犀麟
|
ded75e1bed
|
DOC: 记录菜单调整(移除管理员管理/新增日志管理)与早前 RBAC 隔离修复
|
2026-08-26 22:24:45 +08:00 |
|
夏犀麟
|
78756a849f
|
CHG: 移除管理员管理菜单、新增日志管理菜单(008_menu_rbac_v4.sql)
|
2026-08-26 22:23:21 +08:00 |
|
夏犀麟
|
2ed31f012e
|
FIX: RBAC 禁用角色权限隔离(Codes/HasPermission/Routes 过滤 r.status=1)
- 三处联表查询统一 LeftJoin admin_role 并加启用状态过滤
- 修复前 opuser(禁用角色) 仍能拿到权限码并访问受保护接口
|
2026-08-26 21:43:15 +08:00 |
|
夏犀麟
|
45f9098e89
|
chore: CHANGELOG 纳入 git 管理;AGENTS.md 中央工作空间路径改相对引用 ../workbuddy.xpcool.com
|
2026-08-26 19:07:23 +08:00 |
|
夏犀麟
|
6e3ef67709
|
refactor(service): 重构服务层结构并更新导入路径
- 将 admin 相关服务移动到 internal/service/admin 目录下
- 更新控制器中的服务导入路径引用
- 移除已合并的服务文件
- 添加统一工作约定文档
- 更新 API 接口定义的包路径
|
2026-08-26 15:40:13 +08:00 |
|
夏犀麟
|
061dbde8ce
|
docs: 记录前端 tdesign 迁移与清理
|
2026-08-24 23:46:08 +08:00 |
|
夏犀麟
|
43fa79686d
|
refactor(api): 后台管理 API 按 base/system/admin 分组重构
- api/admin/v1 拆 base/system/admin 三子包,路由前缀 /admin/v1/{base,system,admin}
- system: auth/menu/role;admin: 管理员;base: log
- controller 改 import 子包;006_menu_paths_v2.sql 更新接口路径映射
- 权限码与路由分离,permission 标识不变
- 冒烟测试新路径 8 接口全通过
|
2026-08-24 23:40:39 +08:00 |
|
夏犀麟
|
1d632065fe
|
docs: 记录前端 vben 对接进度与本地环境待办
|
2026-08-24 23:15:47 +08:00 |
|
夏犀麟
|
75e56dae43
|
docs: 后台管理 API 说明与变更记录(AGENTS.md / change-log)
|
2026-08-24 22:36:25 +08:00 |
|
夏犀麟
|
8fdb25e6bd
|
feat(admin): 后台登录/菜单/按钮级权限/RBAC管理与服务器日志监控
后端:
- 种子数据:超级管理员(admin/admin123)、super_admin 角色、22 条菜单(含按钮权限码)、角色绑定
- admin_menu 扩展 icon/component/hidden 字段(003_schema_ext.sql),手动补齐 entity/do/table
- auth 扩展:/auth/info、/auth/codes(仅登录),路由拆分公开/Profile/受保护三组
- 菜单路由:/menu/routes 返回 vben backend 动态路由树(按角色过滤、排序)
- RBAC 管理:/admins、/roles、/menus CRUD(含角色绑定、重置密码、菜单授权)
- 日志监控:/log/files、/log/tail(尾部读取+关键词过滤+路径穿越防护)
- 安全加固:接口鉴权改为「方法+路径→权限码」自动映射,杜绝任意权限码越权
- 修复:gf v2.10.2 不自动替换→cmd 注入;MySQL driver 需显式引入 contrib
- 全链路冒烟测试通过(含越权拒绝 30003)
|
2026-08-24 22:35:54 +08:00 |
|
夏犀麟
|
5cd8f0f551
|
refactor(api): 契约文件 index.go 重命名为 <功能名>.go
- tools/{uuid,md5,random,time,ip}/index.go → 对应 <功能名>.go(git mv 保留历史)
- 目录名=包名=文件名三一致,扩展时目录内按功能加文件(ocr.go → + idcard.go + invoice.go)
- doc.go / AGENTS.md / PROJECT_STRUCTURE.md 同步规则说明
- 冒烟测试 5 端点全部通过
|
2026-08-24 18:07:33 +08:00 |
|
夏犀麟
|
82b1ad2b5c
|
refactor(api): 公共接口改名 open 并重构契约层为 tools/<子功能>/index.go
- api/common/v1 → api/open/v1,路由前缀 /api/common/v1 → /api/open/v1
- 契约层按子功能拆目录:api/open/v1/tools/{uuid,md5,random,time,ip}/index.go
- 控制器同步拆文件:internal/controller/open/{uuid,md5,random,time,ip}.go
- 命名规则(open 优于 common)与 tools 目录规则记入 AGENTS.md
- 冒烟测试:旧路由 404,新路由 5 端点全部通过
|
2026-08-24 18:03:30 +08:00 |
|
夏犀麟
|
1486bb903f
|
feat(api): 新增公共接口 api/common/v1(tools 工具端点)并修复 gtime 格式化
- api/common/v1/tools.go 契约 + internal/controller/common 实现:uuid/md5/random/time/ip
- cmd.go 注册 /api/common/v1 公开分组(无鉴权),复用 common/tools Go 包
- 修复 gtime v2.10.2 坑:Format 为 PHP 风格,Go layout 须用 Layout(),timex 封装为 Layout 语义
- 冒烟测试 5 端点全部通过;AGENTS.md / PROJECT_STRUCTURE.md / change-log 同步更新
|
2026-08-24 17:29:30 +08:00 |
|
夏犀麟
|
8d5f2c65ae
|
feat(common): 新增公共模块 common/tools 及项目上下文记忆体系
- common/tools 工具模块,10 个子功能:md5/cryptox/uuid/random/timex/convertx/strx/slicex/ip/filex(薄封装 GoFrame 内置组件)
- AGENTS.md 项目智能体说明书(架构、规范、命令、记忆体系索引)
- docs/change-log/2026-08-24.md 本次请求与变更记录
- .gitignore 排除 .workbuddy/;PROJECT_STRUCTURE.md 补充目录树
|
2026-08-24 17:18:10 +08:00 |
|
|
|
54135d2be5
|
feat(dev): 项目初始化。
|
2026-07-17 17:58:08 +08:00 |
|