TermiNexus
|
b35e036b51
|
refactor(ResolveRoleContext): 日志改为输出用户名、角色名与租户-公司名,去掉 UUID 噪声
|
2026-10-24 23:09:58 +08:00 |
|
TermiNexus
|
8b7800032d
|
feat(subscription): 订阅客户端增加声明定制页与鉴权探测
SubscriptionClient 新增 Ping() 与 DeclareCustomPage():提供者子服务器用「产品 ApiKey+密钥」换令牌后,调用主服务器 Provider/Page/Save 声明本产品定制页的远端入口(供消费者「我的订阅」打开)。
|
2026-10-05 17:01:49 +08:00 |
|
TermiNexus
|
a8574763c0
|
feat(subscription): 新增订阅式软件提供方 SDK 客户端与令牌
新增 gvsdsdk.subscription:提供者子服务器用「软件 ApiKey+密钥」换取访问令牌(SubscriptionClient.FetchToken/EnsureToken/Request,仅依赖 urllib),并与主服务器一致的令牌签发/自省(IssueSubscriptionToken/IntrospectSubscriptionToken,自包含 HMAC-SHA256,typ=subscription_provider)。
|
2026-10-05 11:29:08 +08:00 |
|
TermiNexus
|
d057c56c26
|
fix(auth): 密码校验改走 User 登录密码(审计表明文导致恒判失败)
- AdminUserManager.VerifyPassword 原查 Password 明文审计表并用 bcrypt 比对:必然抛 ValueError 被吞成 False,恒判「密码不匹配」
- 改为与登录同源:AuthManager.GetUserByUUID(...).CheckPassword(...),保证「登录能过 = 校验能过」
- ResetPassword 一并修:原来只写审计表、不更新 User.UserPassword,导致「重置成功」但登录密码未变;现两处同写
- 移除因此不再使用的 crypto.VerifyPassword 导入
|
2026-10-02 16:37:52 +08:00 |
|
TermiNexus
|
9fd38f3c8e
|
fix(auth): VerifyPassword 形参遮蔽 Password 模型导致 AttributeError
- AdminUserManager.VerifyPassword 的形参名为 Password,遮蔽了模块级导入的 Password 模型
- 导致 Password.objects 变成对 str 取属性:AttributeError: 'str' object has no attribute 'objects'
- 影响面:/API/Ehrm/UnlockIdCard、/API/SiteUserManagement/VerifyPassword、2FA 设置/禁用(均走 AuthManager.VerifyUserPassword)
- 修法:形参改名 PlainPassword,模型 Password 恢复可见
|
2026-10-02 16:31:52 +08:00 |
|
TermiNexus
|
298cfe59d0
|
fix(form): DateField 兼容带时区的 ISO 时刻串
旧前端把日期选择器绑成 Date 对象后序列化出 2019-08-31T16:00:00.000Z,Django DateField 只认 YYYY-MM-DD 而 500。现按项目时区还原日历日期(UTC+8 下 2019-08-31T16:00:00Z 正确还原为 2019-09-01),纯日期串与无时区串照旧。
|
2026-10-01 20:03:17 +08:00 |
|
TermiNexus
|
ad1156f5d9
|
feat(role): 新增按公司查询部门-员工关系 QueryUserRoleDepartmentsByCompany
供「部门-员工」选择器(员工档案直接绑部门-员工关系)使用:CompanyUUID 缺失或非法返回空集(不退化成全表查询),可选按 DeptUUIDs 进一步收窄。
|
2026-09-30 10:39:22 +08:00 |
|
TermiNexus
|
94cb71e82a
|
feat(auth): 新增 IsCompanyAdminUser 权限类并修复待审列表跨租户泄漏
- permissions.py 新增 IsCompanyAdminUser(admin:company / admin:tenant / admin:super)
- ListPendingApplications 移除被静默忽略的 TenantUUID 形参,改为显式 AllowedCompanyUUIDs
- 过滤在 SQL 侧用子查询完成,规避 UUIDObj 与 bytes 混比恒为 False 的坑
|
2026-09-28 18:23:08 +08:00 |
|
TermiNexus
|
4b074e565a
|
fix(socket): CORS 放行改为根域后缀校验,修复子域握手被拒
- engineio 不支持 'https://*.gvsds.com' 通配串,改为可调用对象 AllowOrigin
- 按根域(gvsds.com 等)与本地主机放行,实测 gerp/www/api/localhost 通过
|
2026-09-28 17:42:50 +08:00 |
|
TermiNexus
|
cd789dd2dd
|
feat(msync): 新增用户级 Socket.IO 命名空间 /talk
- talk_socket.py:Talk 用户令牌鉴权(Cookie AccessToken 或 talk:auth)+ 复用 ResolveRoleContext
解析公司/租户/角色
- 事件 talk:auth/send/read/typing/ping ↔ 推送 talk:ready/message/read/typing/pong/error,
会话房间统一 conv:<UUID>
- create_sio_app 惰性导入注册命名空间;单进程 gevent 无 Redis adapter(多 worker 需补)
|
2026-09-26 23:46:21 +08:00 |
|
TermiNexus
|
b0bf51350d
|
feat(sdk): 表计数缓存提升为公共方法,补用户-角色归属的 upsert 与批量查询原语
- FormServiceBase.CachedTableCount:表行数带缓存计数(TTL 300 秒),GetTables 复用
- RoleManager 新增:GetUserRoleByUUID / GetUserRoleDepartmentForCompany / UserRoleRelationExists(支持排除自身)
- RoleManager 新增:EnsureUserRoleDepartment(支持 MatchCompany)/ HasUserRoleDepartment / HasUserRoleWorkgroup
- RoleManager 新增:GetUserRoleDepartmentsByUUIDs / ByDeptUUIDs、GetUserRoleWorkgroupsByUUIDs / ByWorkgroupUUIDs
|
2026-09-15 14:15:06 +08:00 |
|
TermiNexus
|
8a12707616
|
feat(sdk): 补用户-角色/URD 职务/职务名/部门名的批量查询方法
RoleManager.GetUserRolesByUUIDs:批量取 UserRole 行;PositionManager.GetUrdPositionRowsForUrds:一次取多个 URD 的职务子表行;PositionManager.GetPositionNameMap 与 DepartmentManager.GetDepartmentNameMap:批量 UUID→名称映射(字节键,避免 UUIDObj/bytes hash 不等)。
均为列表页批量富化所需的低层原语,供子项目替代逐个 filter 与手写映射循环。
|
2026-09-15 13:34:23 +08:00 |
|
TermiNexus
|
22754ae070
|
refactor(sdk): entityPicker 标签解析下沉 FormServiceBase
从 gvsds 侧整体迁入两个全通用方法:_GetEntityPickerFields(按 ENTITY_PICKER_MAP 与 UUID_FIELD_ENTITY_MAP 识别 ForeignKey / UUIDField 两类实体选择器字段)与 _EnrichEntityLabels(批量回填 xxx_label 与 extraFields,UUIDField 走一次 __in 查询缓存,ForeignKey 直接取关联实例)。
基类补 UUID_FIELD_ENTITY_MAP = {} 类属性;_EnrichEntityLabels 的入参由 QuerySet 改为已取出的实例列表(调用方本就持有 obj_list,原实现会在方法内再 list() 一次导致分页切片重复查库)。
|
2026-09-15 13:31:37 +08:00 |
|
TermiNexus
|
dbcd2ca6e2
|
refactor(sdk): FormServiceBase 抽出查询链公共辅助并复用于 GetTable
新增 5 个可复用辅助:ParsePagination(兼容 PageIndex/PageSize 与 page/pageSize,page 非法回落 1 避免负切片)、ApplyKeyword(Char/TextField OR icontains)、ApplyExactFilters(同名字段精确过滤,UUID/FK 自动转 BINARY(16),FK 走 attname)、ApplySelectRelated(只对 FK 生效,UUIDField 跳过避免 FieldError)、BuildRecords(实例列表 → PascalCase 字典,FK 取原始 PK)。
GetTable 改为复用上述辅助,行为不变(仍保留 20/200 分页默认与上限、records/total/page/PageSize 键名契约)。
|
2026-09-14 19:28:45 +08:00 |
|
TermiNexus
|
2cf5179803
|
feat(sdk): 补部门/工作组/用户角色/文件资产的公司维度查询方法
DepartmentManager.QueryAll / QueryByCompany、RoleManager.QueryUserRolesByCompany、新增 WorkgroupManager.QueryByCompany、AssetManager.QueryAll:供视图层在「显式指定公司」时收窄数据范围,替代直接持有各模型 ORM。
QueryByCompany 统一约定「CompanyUUID 缺失或非法返回空集」,避免退化成全表查询(原视图层为 try/except 包裹 uuid.UUID 转换)。
|
2026-09-14 16:01:48 +08:00 |
|
TermiNexus
|
f7ea30dba3
|
feat(sdk): AuthManager 补 GetUserNames,CompanyManager 补 BelongsToTenant
GetUserNames:单次 __in 批量取用户名 {UUID字节: UserName},供列表页回填,替代调用方逐个查库造成 N+1。
BelongsToTenant:判断公司是否归属指定租户,替代视图层直接持有 Company ORM 做归属校验。
|
2026-09-14 15:46:46 +08:00 |
|
TermiNexus
|
13e800f473
|
feat(sdk): TenantManager 补 ListAllTenants,AuditManager 补日志查询与清理
ListAllTenants:供种子/运维命令遍历全部租户(不分状态),替代命令层直接 Tenant.objects.all()。
AuditManager.QueryBefore / PurgeBefore:清理任务所需的按时间阈值查询与删除,替代命令层直接持有 AuditLog ORM。
|
2026-09-14 15:38:07 +08:00 |
|
TermiNexus
|
229c0b529e
|
fix(stats): 唯一约束移除 JSON 列(MySQL 不支持 JSON 列索引)
StatRecord.unique_together 去掉 DimensionValues、StatRanking.unique_together 去掉 DimensionFilter,否则建表报 MySQL 3152;去重已由 StatsManager 的 select_for_update + filter 在应用层保证。
|
2026-09-13 22:23:58 +08:00 |
|
TermiNexus
|
b5474834cd
|
fix(models): 修正 UserIDCard 镜像表名并补齐两列
UserIDCard 原 db_table 为 UserIDCard,实际表对应 gerp.UserIDCard.db_table='IDCard'(lower_case_table_names=1 下解析为 idcard),导致 SDK 查询直接报 1146;同时补齐镜像缺失的 Appointments / ReadmeReport。校验差异 51 → 13(余下均为本地库缺表)。
|
2026-09-13 22:19:17 +08:00 |
|
TermiNexus
|
49e28dfb68
|
fix(models): 对齐镜像模型与遗留库 schema,消除校验漂移
CompanyInfo 三个身份证列 db_column 由 *IDCard 改为库中实际的 *IdCard;PersonalPage 补齐 CoffeeCups/成就 1-4/Tags/Markdown 共 20 列,QQ 映射到 Qq;UserSettings 主键由 UserUUID 改为自增 id(UserUUID 改为 unique)。
配合 manage.py gvsdsdk_check_schema:校验差异由 51 处降至 14 处(余下均为本地库缺表)。
|
2026-09-13 22:16:48 +08:00 |
|
TermiNexus
|
9be878b84a
|
feat(sdk): 通用查询与工具层下沉,新增 App 体系镜像模型
P1 通用查询:auth/managers.py 新增 20 个查询方法(Role/Company/Department/Position/Menu/Tenant 六个 Manager);auth/ram.py 新增 RAMManager.ListPolicyResourceUUIDs;stats/manager.py 新增 StatsManager.ListAutoResetConfigs。
P2 App 体系:models.py 新增 App/TenantApp/CompanyApp/UserApp/AppConfig 五个 managed=False 镜像模型,字段与业务侧逐一对齐。
P3 工具下沉:新增 config.py 配置注入层与 money/json_encoder/celery_utils/exception_handler/redis_lock/ip_filter/storage/datetime_utils/string_utils 九个工具模块;model_utils.UUIDObj 增加 PascalCase 别名 Str/Bytes/UUID 与模块级转换函数。
同时移除 commission/stats/CashBook 镜像模型的重复索引声明,消除 Django models.E030。
|
2026-09-13 21:57:45 +08:00 |
|
TermiNexus
|
3776b96a55
|
feat(sdk): 职务系统下沉——新增职务多值子表/应用虚拟职务模型 + PositionManager 扩展
- 模型下沉 gvsdsdk.models(db_table 同库映射,managed=False):
UserRoleDepartmentPosition(职务多值子表,URD 身兼数职)
AppVirtualPosition / AppVirtualBinding(应用虚拟职务及与真实职务绑定)
- PositionManager 新增:
通用部门分类管理 CreateCategory/GetCategoriesForTenant/UpdateCategory/DeleteCategory/SearchCategories
多值职务 CRUD GetUrdPositionRows/GetUrdPositionUUIDs/HasUrdPosition/AddPositionToUrd/
RemovePositionFromUrd/ClearUrdPositions/SetUrdPositions
主部门关联 ResolvePrimaryUrd/WritePositionsToPrimaryUrd
批量 BatchAddPositions/BatchRemovePositions(bytes 归一化查重防联合唯一 1062)
搜索树 SearchPositions(租户职务 + 通用部门树,公司绑定分类优先排序)
虚拟绑定 GetVirtualBindings/SetVirtualBindings/AutoBindVirtualPositions(按名称一键绑定)
- __init__.py 懒加载导出新增 3 模型
|
2026-08-30 13:08:10 +08:00 |
|
TermiNexus
|
5ad8062388
|
feat(auth): 新增GetUserRoleDepartments/GetUserRoleWorkgroups多关联查询方法
支持按CompanyUUID/RoleType过滤,负责人判定以关联表为准
|
2026-08-28 15:34:21 +08:00 |
|
TermiNexus
|
8f71122e9b
|
refactor(userrole): 删除遗留字段DeptUUID/WorkgroupUUID/RoleType并新增回填删列迁移
部门/工作组归属与成员类型迁移到UserRoleDepartment/UserRoleWorkgroup关联表,回填存量后删除遗留列
|
2026-08-28 15:34:10 +08:00 |
|
TermiNexus
|
2c176fa43c
|
feat(msync): 用户级令牌 IssueUserToken/IntrospectUserToken(typ=user/aud 防串用/TTL 10min)+ 自省端点
|
2026-08-14 00:33:48 +08:00 |
|
TermiNexus
|
5d4b35f140
|
feat(msync): 子服务器断开/注销时标记远端 App 离线(MarkServiceAppsOffline 惰性委托)
|
2026-08-14 00:01:47 +08:00 |
|
TermiNexus
|
e69c4d7ad6
|
feat(msync): 新增 msync:app:manifest:report 事件(子服务器上报远端 App 清单)
|
2026-08-13 23:57:58 +08:00 |
|
TermiNexus
|
e2cafd5fcd
|
feat(ram): RAM 资源访问管理——RAMGrant 模型 + RAMManager 服务层(GrantAccess/CheckAccess/Revoke/List)
|
2026-08-13 23:55:53 +08:00 |
|
TermiNexus
|
3f9d106a95
|
feat(models): FileAsset/Menu/UserRoleWorkgroup/UserRoleDepartment 映射补 TenantUUID,与主库组织表结构对齐
|
2026-08-13 17:52:00 +08:00 |
|
TermiNexus
|
f9f7f922a3
|
feat(models): Dept/Workgroup/Shop 映射补 TenantUUID 字段,与主库组织表结构对齐
|
2026-08-13 17:42:51 +08:00 |
|
TermiNexus
|
66cb2da387
|
refactor(auth): 角色上下文解析合并为唯一实现
- 新增模块级 ResolveRoleContext(request, user=None):兼容显式 user 与 request.user 两条链路
- CurrentRoleMiddleware 委托调用 ResolveRoleContext,消除与 gvsds/auth.py 的重复实现
- __init__.py 惰性导出 ResolveRoleContext
|
2026-08-13 17:40:12 +08:00 |
|
TermiNexus
|
9851f41f34
|
feat(auth): 新增公司管理员权限键 admin:company——IsCompanyAdmin 判定(admin:tenant/admin:super 自动继承,普通角色手动授予后按公司维度生效)
|
2026-08-13 05:54:50 +08:00 |
|
TermiNexus
|
6f5537765f
|
fix(msync): 中风险项修复——Compensate 守卫/时区偏移/deregister 顺序/幂等头转发
- Compensate 增加状态守卫(PENDING/COMMITTED 禁止补偿)
- 认证/刷新令牌过期时间戳补 UTC 时区,消除本地时区解释偏移
- on_deregister 先鉴权后清映射,未认证请求不再污染连接状态
- LocalExecute/LocalCompensate 转发 Idempotency-Key,LocalHandlers 补认证
|
2026-08-10 23:32:04 +08:00 |
|
TermiNexus
|
39ed654146
|
fix(msync): 修复密钥 fallback、超时补偿令牌与 RetryStep 三缺陷
- SetSecret/GetSecret 移除默认密钥 fallback,统一走强制配置,
避免未配置 MASTER_SECRET 时密钥用公开常量加密
- CheckTimeouts 超时补偿携带服务令牌,避免补偿回调被 401 拒绝
- RetryStep 手动重试不受 MaxRetries 配额限制(计数分离)、重建
前置步骤数据流、增加事务状态守卫(已补偿事务禁止重试)
|
2026-08-10 23:29:28 +08:00 |
|
TermiNexus
|
62ab9df6c5
|
chore: 新增 .gitignore 并解除 __pycache__ pyc 文件跟踪
补充 Python 标准忽略规则(__pycache__/*.pyc 等),移除历史
误跟踪的 56 个编译产物。
|
2026-08-10 23:11:21 +08:00 |
|
TermiNexus
|
d497b4c86c
|
fix(msync): 模型 FK db_column 对齐真实主库无后缀列名
修复 ServiceToken/OGM/DistributedTransaction/TransactionStep 的
FK 列名与主库不一致导致的 1054 认证失败(ServiceUUID 等列无 _id
后缀),迁移 0001 同步更新。
|
2026-08-10 23:08:59 +08:00 |
|
TermiNexus
|
4d8e6d4225
|
fix(msync): Saga 增强与已知缺陷全量修复,版本升至 1.1.0
- 自动重试:Execute 内按 CanRetry 内联重试(与手动 RetryStep 共享计数);
RetryStep 补 select_for_update 行锁
- 步骤数据流:前置步骤 StepResult 合并进后续步骤载荷(不落库,向后兼容)
- 空闲超时:IsTimedOut 改以 UpdateTime 起算,Execute 每步推进刷新计时
- TransactionResult:Execute/Compensate 终态写入步骤汇总快照
- 幂等键:_call_service 携带 Idempotency-Key(事务码:步骤号:重试次数),
local_tx 侧按 key 内存去重(TTL 300s)
- 修复 RetryCompensate 成功后残留 compensate_error 导致事务误判 FAILED
- 迁移 0001 FK 去除 db_column(列名对齐模型 attname,消除 makemigrations 漂移)
- 新增 gvsdsdk_check_schema 命令:模型与数据库 schema 一致性校验
- 新增 VERSION_MATRIX.md 版本连接状态表;版本 1.0.0 -> 1.1.0
|
2026-08-10 22:38:48 +08:00 |
|
TermiNexus
|
53af9884df
|
refactor(msync): msync 整体搬迁至 SDK 并消除对 gvsds 的依赖
- msync 全部实现迁入 gvsdsdk(models/registry/ogm/transaction/auth +
Django 集成层 middleware/sio/views/serializers/urls/admin/apps/migrations)
- 新增 gvsdsdk/secrets.py(secrets.ini 读取)与 serializer_base.py
(PascalCase DRF 序列化器基类)
- msync 0001 迁移改用 gvsdsdk.models.UUIDField 并与模型 deep_deconstruct
完全对齐(消除 makemigrations 漂移),dependencies 置空
- msync apps.py 移除 gvsds.app_config 软依赖,域名仅经环境变量/settings 解析
- 验证:屏蔽 gvsds 包后 50 个 gvsdsdk 子模块独立导入通过
|
2026-08-10 22:23:52 +08:00 |
|
TermiNexus
|
fdac1d6e79
|
feat(form_service): 新增 _CreateObject/_GetObject/_SaveObject/_DeleteObject 低层落库辅助
|
2026-08-07 23:04:21 +08:00 |
|
TermiNexus
|
18abc3380c
|
refactor(form_service): FormServiceBase 增强 UUIDObj 转换与 NOT_PROVIDED 默认值处理
|
2026-08-07 22:55:24 +08:00 |
|
TermiNexus
|
08072438e0
|
feat(sdk): 新增 CompanyInfo/Workgroup/Asset 等 7 个缺失 SAAS 模型映射
|
2026-08-07 22:07:01 +08:00 |
|
TermiNexus
|
05064d6c73
|
refactor(stats): StatsManager 补齐编排方法,收敛 StatEngine 编排能力
|
2026-08-07 21:44:20 +08:00 |
|
TermiNexus
|
fdc623c3cb
|
docs(sdk): 更新 SDK 文档,移除 minecraft 引用并补充服务层 Manager 说明
|
2026-08-07 21:14:09 +08:00 |
|
TermiNexus
|
c043f1f31c
|
feat(sdk): 新增物品背包/文件资产/密码审计服务层
InventoryManager 统一物品模板与背包 CRUD,AssetManager 提供 SHA1 去重与引用计数,AuthManager.ChangePasswordAudit 同步维护明文审计表;新增 ItemReference/Backpack/FileAsset 模型映射。
|
2026-08-07 19:39:31 +08:00 |
|
TermiNexus
|
277b2f3043
|
"feat(sdk): 新增审计/默认角色/作用域与用户级联能力
RoleManager 补齐 EnsureDefaultRoleForUser/EnsureTenantAdminRole/
GetUserRoleRelation/GetScopeMembers,新增 AdminUserManager.DeleteUser、
AuditManager、StatsManager 列表方法;新增 AuditLog/UserRoleWorkgroup 模型。"
|
2026-08-07 18:12:02 +08:00 |
|
TermiNexus
|
dc4aa44562
|
"feat(sdk): 新增菜单与工单服务层
Menu/WorkOrder 模型迁入 gvsdsdk;MenuManager 提供菜单树/管理列表/保存/递归删除,
WorkOrderManager 提供统计/个人工单/创建/更新,顶层懒加载导出。"
|
2026-08-07 17:17:55 +08:00 |
|
TermiNexus
|
fb1dec743f
|
"feat(auth): 新增公司/部门模型映射与管理器
- 新增 Company/Department/UserRoleDepartment 模型映射
- CompanyManager: GetCompanyByUUID/GetCompaniesForUser
- DepartmentManager: GetDepartmentByUUID/GetDepartmentsForUser"
|
2026-08-07 15:57:30 +08:00 |
|
TermiNexus
|
e7d03d339f
|
"feat(auth): add TenantManager, 2FA/email flows, permission checks
- TenantManager: ApplyTenant/ListPendingTenants/ApproveTenant/RejectTenant
- Tenant model mapping
- AuthManager: Setup2FA/GetPending2FA/Disable2FA/VerifyUserPassword/
SendAccountActivationCode/VerifyAccountActivationCode/ChangeUserEmail
- RoleManager: HasUserPermission/CheckTablePermission/GetPermissionByCode"
|
2026-08-07 04:40:43 +08:00 |
|
TermiNexus
|
d2de2301a4
|
"feat: add RoleManager tree/search, OrderManager.CreateGeneric, StatsManager
- RoleManager: GetPermissionsTree / MatchUserRoleIds
- OrderManager.CreateGeneric: auto order-no, forced PENDING, transactional
- gvsdsdk.stats: StatsManager (8 methods) + 5 model mappings (app_label=gvsdsdk)"
|
2026-08-07 04:08:10 +08:00 |
|
TermiNexus
|
0ad5ce77c8
|
"feat(auth): add RoleManager.CreatePermission
- create permission with tenant-scoped code uniqueness check
- returns (instance, created); existing code returns (None, False)"
|
2026-08-07 03:18:54 +08:00 |
|
TermiNexus
|
a006d577c8
|
"feat(auth): add ShopManager/AuthManager/AdminUserManager/UserService & SaveRolePermissions
- ShopManager: shop CRUD + role-shop associations (fixes dangling ShopManager export)
- AuthManager: user lookup/create/password/2FA/avatar
- AdminUserManager: user search/reset-password/license/email/2FA info
- UserService.GetUserDetail: aggregate user+roles+permissions+orders
- RoleManager.SaveRolePermissions: atomic incremental role-permission sync
- remove gvsdsdk.minecraft (MC is custom business, moved to gvsds)"
|
2026-08-07 03:12:18 +08:00 |
|
TermiNexus
|
f6842ee3c8
|
"feat(managers): extend commission/payment/position managers
- CommissionEngine: ListRules/DisableRule/ListRateTables/ListEvents
- PaymentManager: ListConfigs/GetConfigByUUID/DisableConfig/SetConfigStatus/DeleteConfig
- PositionManager: HasTemplatePerm"
|
2026-08-07 02:26:19 +08:00 |
|
TermiNexus
|
e9bde4db76
|
"chore(gvsdsdk): 清理过时点与死代码并修复运行期缺陷
- models: 修正过时文档、UserRole 遗留字段标注废弃、抽象 User 补 IsStaff/IsSuperuser
- models: CopyToRole 补 CompanyUUID 默认值,修复 RolePermission 插入必失败缺陷
- form_service: 对齐主项目值转换(Boolean/时区/空值),移除 NullBooleanField 遗留映射
- auth: 删除无引用的 GetDefaultAvatar 与 ShopManager/PositionManager,清理惰性导出
- db_router/model_base/msync: 简化模块集合、移除 typing_extensions 死兜底、复用 GenerateChallenge
- 删除残留文件(空测试文件、无源 pyc)"
|
2026-08-07 00:57:29 +08:00 |
|
TermiNexus
|
32a31a8220
|
基本已能进入生产环境
|
2026-08-05 23:33:33 +08:00 |
|
TermiNexus
|
d933b90064
|
初次重新上传维护
|
2026-08-02 19:45:22 +08:00 |
|