GetAnonymous/GetSystemUser 原来在 contracts/base 里实现,req 自己的测试 又要用它们构造测试用户,形成 req(测试)依赖 contracts、contracts(正式 代码)依赖 req 的循环——两边 go.mod 只能靠指向本地兄弟目录的 replace 绕过, 没法各自独立解析成真实版本号。 跟 resx 之于 req.Resource 一个思路:接口留在 req 包,默认实现挪到子包 req/userx,req 主包保持不引入实现细节所需的依赖(这里是 samber/lo)。 req 自己的测试文件改用 req/userx,不用触碰 contracts 了;contracts/base 里的 GetAnonymous/GetSystemUser 改成指向 req/userx 的函数别名,保持 兼容不用改调用方。
res_field.go/res_field_option.go(字段定义)、res_query_field.go/res_query_field_option.go(查询字段)、res_change_row.go(变更行)、res_mask_field.go(字段脱敏标记)及对应测试文件,配合此前已提交的 resource.go/res_interceptor.go 组成完整的 resx 资源实现包。