TermiNexus
|
741bfb7740
|
fix(auth): Tenant 表数据仅租户管理员可读(兜底)
- form_service.get_table 对 Tenant 表:非管理员(admin:super/tenant)返回空,防止普通角色绕过前端直调接口查看租户详情
|
2026-08-25 09:55:58 +08:00 |
|
TermiNexus
|
3d950dbc8a
|
refactor(asset): 公司资产菜单权限改由 Menu 表数据驱动
- 移除 '公司资产' 菜单代码硬编码特例
- 该菜单 PermAttr 已在 Menu 表配置为 admin:company:租户管理员(IsAdmin 放行)/公司管理员(RBAC admin:company)可见,普通角色隐藏
|
2026-08-25 09:22:14 +08:00 |
|
TermiNexus
|
8775cb37d9
|
feat(asset): 公司资产权限收敛——仅管理员可见
- 菜单:'公司资产'目录仅 IsCompanyAdmin(admin:company/tenant/super)可见,普通用户隐藏
- 数据范围:FileAssetViewSet 按角色——admin:super 全部 / admin:tenant 本租户所有公司 / admin:company 本公司 / 其他 403
- 上传:Init 管理员校验;Complete/SimpleUpload 归属公司强制解析(租户管理员可指定本租户公司,公司管理员仅本公司)
|
2026-08-25 09:01:38 +08:00 |
|
TermiNexus
|
6ec24c8bb3
|
fix(oidc): userinfo 解码关闭 verify_aud,修复 Gitea SSO 401
- pyjwt>=2.13 在 decode 未传 audience 时,payload 含 aud 必抛 InvalidAudienceError
- /oidc/userinfo 改用 options={'verify_aud': False},aud 归属仍由 _ClientIds() 手动校验,安全等价
|
2026-08-25 08:35:24 +08:00 |
|
TermiNexus
|
be0e9d6a46
|
chore(tempLate): 同步 GVSite 最新构建产物(搜索框响应式宽度)
|
2026-08-23 15:04:04 +08:00 |
|
TermiNexus
|
5d7c6500c9
|
chore(tempLate): 同步 GVSite 最新构建产物(头像 hover 去边框)
|
2026-08-23 15:00:00 +08:00 |
|
TermiNexus
|
2681c1a7d1
|
chore(tempLate): 同步 GVSite 最新构建产物(@scope :root 修正)
|
2026-08-22 04:30:07 +08:00 |
|
TermiNexus
|
3af59e9391
|
chore(tempLate): 同步 GVSite 最新构建产物(字体回退本地)
|
2026-08-22 04:23:22 +08:00 |
|
TermiNexus
|
94f515ac29
|
fix(doc): GetDoc 识别完整 HTML 文档为 html 格式
- 内容以 <!DOCTYPE/html 开头且标为 markdown 时按 html 返回,避免 marked 拆坏内嵌 </style> 污染站点样式(配合前端 @layer 隔离)
- TempLate 同步 GVSite 最新构建产物
|
2026-08-22 04:21:00 +08:00 |
|
TermiNexus
|
83c9f556b6
|
chore(tempLate): 同步 GVSite 最新构建产物(头像下拉角色 TAG + 我的应用)
|
2026-08-22 01:49:07 +08:00 |
|
TermiNexus
|
4e09f29a71
|
fix(auth): 补 Auth/SetDefaultRole 根路由入口
- 默认角色接口此前只挂了 ugm 子路由(api/ugm/set-default-role/),
前端 POST /Auth/SetDefaultRole 405;根 urls 补 PascalCase 路由对齐
|
2026-08-22 01:43:18 +08:00 |
|
TermiNexus
|
ec43c4dfe6
|
feat(auth): User.DefaultRoleUUID 默认登录角色(登录自动激活)
- core.User 新增 DefaultRoleUUID(UUIDField 可空)+ 手写迁移 0004
- _SetCurrentRoleCookie 登录/注册优先激活默认角色(须持有且启用),否则回退首个角色
- GetUserRoles 返回 IsDefault 标记;新增 SetDefaultRole 接口(空 RoleUUID=清除默认)
|
2026-08-22 01:23:34 +08:00 |
|
TermiNexus
|
b1ccb9e0e1
|
fix(auth): simplejwt blacklist 适配非 auth User;部署 old2/old3 子域与 SPA fallback
- tokens.py 全局 patch RefreshToken.for_user:不写 OutstandingToken、UserUUID 转 str,
修复登录 500(OutstandingToken.user 必须为 auth.User 实例);settings/urls 移除 token_blacklist
- core/views 新增 old2/old3 子域配置(走 _base 模板渲染),SPA fallback 支持 /index.html,
.html 重定向排除目录请求,修复 invite 子域 302 错跳
- TempLate/index.html 同步 GVSite 最新构建产物(含头像下拉复用 GERP 组件)
|
2026-08-22 01:06:55 +08:00 |
|
TermiNexus
|
bf839ca8fc
|
chore(tempLate): Members 成员页本地 assets 改指 hb.cdn.gvsds.com/Members/*
|
2026-08-18 10:00:29 +08:00 |
|
TermiNexus
|
38914c04b8
|
chore(tempLate): assets/js 内 Mascot 海报与成员头像改指 hb.cdn 引用
|
2026-08-18 09:55:03 +08:00 |
|
TermiNexus
|
63a736f9a7
|
chore(tempLate): 二进制资源迁至 CDN 并改指 hb.cdn 引用
TempLate/assets 二进制已迁移至 hb.cdn.gvsds.com(本地 assets - Copy 仅为上传参考源),
将根域页面的有效二进制引用改指 CDN:
- index.html(icon/ICON.png)、_base(fonts woff2/ttf/otf + hlogos/gnobg.png)
- TempLate/1、Members/B-Smooth、Members/TermiNexus(members 头像 / Mascot 图)
- .gitignore 排除 assets - Copy;MC/OMC/错误页等子域或死链引用保持原样
|
2026-08-17 22:02:38 +08:00 |
|
TermiNexus
|
2ab4b7d9dc
|
fix(mail): UUIDField 查询传 User 实例返回空——filter(UserUUID=request.user) 改传 user.UserUUID(修复企业邮箱列表消失)
|
2026-08-15 12:48:10 +08:00 |
|
TermiNexus
|
c8d4cd7fbf
|
fix(msync): views 包导出 UserTokenIssueView(修复主服务器启动 AttributeError)
|
2026-08-14 22:19:59 +08:00 |
|
TermiNexus
|
0edb56afa8
|
docs(design): 标记 P1-P4 完成 + P5 验证手册(待部署窗口)
|
2026-08-14 07:12:27 +08:00 |
|
TermiNexus
|
8340be7eb0
|
feat(msync): UserTokenAuthentication 用户令牌自省 + /me 端点(iframe 身份透传)
|
2026-08-14 00:33:50 +08:00 |
|
TermiNexus
|
a30e27e4bc
|
feat(msync): 用户令牌签发端点(UserTokenIssueView)+ Market 返回 Source/ServiceName/ServiceOnline
|
2026-08-14 00:33:49 +08:00 |
|
TermiNexus
|
00340f818f
|
feat(ram): App 安装 API 支持 GrantRoles(安装时 RAM 角色授权)+ ManageCompanies 返回租户角色列表
|
2026-08-14 00:03:32 +08:00 |
|
TermiNexus
|
588452aa92
|
feat(ram): 安装时 RAM 角色授权(GrantRoles)+ ServiceOnline 离线生命周期(下线标记/上报恢复)
|
2026-08-14 00:01:46 +08:00 |
|
TermiNexus
|
fda236eb0c
|
feat(msync): ATestCServer 代码入库(忽略 certs/db.sqlite3)+ 远端 App 清单上报能力(ReportAppManifests + report_manifest 命令)
|
2026-08-13 23:59:34 +08:00 |
|
TermiNexus
|
6e16c0d3b7
|
feat(msync-app): App 表 Source/ServiceName/ServiceDomain 字段 + 远端清单同步(SyncRemoteAppManifests,幂等 upsert + 本地冲突检测)
|
2026-08-13 23:57:58 +08:00 |
|
TermiNexus
|
345abe88bb
|
feat(ram): RAMGrant 建表迁移 + 菜单过滤 RAM 角色粒度集成(无策略保持全员可见)
|
2026-08-13 23:55:55 +08:00 |
|
TermiNexus
|
feaa783885
|
docs(design): MSYNC 远端App注入 + RAM 资源访问管理方案设计
|
2026-08-13 23:52:56 +08:00 |
|
TermiNexus
|
b1dd91dde0
|
fix(crb): 清理 Menu.CompanyUUID select_related 残留(FK→UUIDField 收敛后 FieldError),修复 /API/wallet 500
|
2026-08-13 19:36:17 +08:00 |
|
TermiNexus
|
51e47cc942
|
docs(governance): 标记 3.2 CrudTable 拆分完成(GERP 36afde1)
|
2026-08-13 18:26:39 +08:00 |
|
TermiNexus
|
31f341d1f4
|
fix(migrations): 0028 回填改用迁移状态字段名(小写)并补 Menu.TenantUUID,migrate 全部应用
- 0028 回填 Company/关联表历史字段名(tenant_uuid/company_uuid)匹配既有迁移状态
- gerp Menu 补 TenantUUID 字段(与已执行 DB 列对齐)
- migrate 完成:0028 回填 54 行(fake 标记,AddField 已由 MySQL DDL 提交)、0029 FK→UUIDField、token_blacklist 建表
|
2026-08-13 18:19:27 +08:00 |
|
TermiNexus
|
156d9f1125
|
docs(governance): 记录架构债治理各阶段执行状态与待办(含待执行 migrate 提醒)
|
2026-08-13 18:15:48 +08:00 |
|
TermiNexus
|
a208dbb02a
|
chore(tools): 根目录散落工具脚本归位 tools/ 目录
- find/listdir/r/sound/SendWX 及 WARN.mp3 移入 tools/(sound.py 相对路径同目录保持可用)
- Version 死代码(import 自增 VER)归档 tools/Version
- Main.py(生产入口候选)与 TODO 保留根目录待确认
|
2026-08-13 18:15:30 +08:00 |
|
TermiNexus
|
727fbba272
|
fix(tasks): stats 任务套重试 + PurgeOld 全周期清理;攻击日志写库限频去重
- 四个 stats 任务加 RetryOnFailure(2 次重试)
- PurgeOldStats 清理 daily/monthly/hourly 全周期
- AttackDetectMiddleware 同 IP+类型 60s 窗口去重,防 401 刷屏反向写库放大
|
2026-08-13 17:55:56 +08:00 |
|
TermiNexus
|
221c5d9e9d
|
fix(security): 移除 core.User 默认密码哈希后门,异常堆栈改 logging 落盘
- UserPassword 默认值改为空串(防默认口令,须经注册/重置流程设置)
- exception_handler print→logging(日志可审计)
- ip_filter 默认 disabled 语义注释(生产需显式配置并挂载)
|
2026-08-13 17:55:55 +08:00 |
|
TermiNexus
|
e76a5b359e
|
security(jwt): 收敛 token 生命周期(168h→24h)并启用 refresh 轮换黑名单
- ACCESS_TOKEN_LIFETIME 默认 24h(缩小泄露窗口)
- BLACKLIST_AFTER_ROTATION 默认开启,注册 token_blacklist app
- LOGGING 增加 RotatingFileHandler 落盘(django.log)
- USE_TZ=False 决策文档化(存量 naive UTC 时间戳无法安全切换)
|
2026-08-13 17:55:54 +08:00 |
|
TermiNexus
|
67c4d03597
|
docs(settings): 文档化 AUTH_USER_MODEL 不可行决策(core.User 非 AbstractBaseUser,改设需重建 auth 框架)
|
2026-08-13 17:52:34 +08:00 |
|
TermiNexus
|
e2944e13d2
|
fix(form_service): 适配 UUIDField 收敛——消除 ForeignKey attname(_id) 硬编码依赖
- 工单创建人/指派人读取与注入改用字段名(兼容 _id 遗留键)
- CompanyInfo 租户查重、部门成员计数过滤改字段名
- AttackDetectMiddleware 异常日志写入改字段名,测试断言同步
|
2026-08-13 17:52:17 +08:00 |
|
TermiNexus
|
5127ca4166
|
refactor(models): 模型双轨收敛——gerp 侧 31 处 ForeignKey 改 UUIDField,与 SDK 映射对齐
- models.py: Tenant/Company/Dept/WorkOrder/Message/Menu 等 31 处 FK→UUIDField(db_column 不变)
- 8 张有 CompanyUUID 的表补齐 TenantUUID(Dept/Workgroup/FileAsset/Menu/WorkgroupRole/UserRoleWorkgroup/UserRoleDepartment/CompanyApp)
- 迁移 0028 扩展回填全 8 表;迁移 0029 AlterField 对齐字段类型(DB 列无实际变化)
- 消除 select_related/_id 行为差异,SDK 与主库模型字段类型统一
|
2026-08-13 17:52:08 +08:00 |
|
TermiNexus
|
77e676e55f
|
feat(tenant): Dept/Workgroup 补 TenantUUID 列 + 回填迁移,消除跨表隔离反射补偿
- gerp 模型 Department/Workgroup 新增 TenantUUID(nullable)
- 迁移 0028:AddField + RunPython 从 Company.TenantUUID 回填(待 migrate 执行)
- 配合 SDK 映射同步加字段,组织表结构对齐
|
2026-08-13 17:42:58 +08:00 |
|
TermiNexus
|
88c657660d
|
refactor(role_scope): 数据权限表级特判改策略注册表
- 新增 TableScopeFilter 策略基类 + User/UserRole/Order 三个注册实例
- ApplyScopeToQueryset 改为注册表分发,新增 RegisterScopeFilter 扩展入口(开闭原则)
- 行为与原有 User/UserRole/Order 特判完全一致
|
2026-08-13 17:40:24 +08:00 |
|
TermiNexus
|
e0af444c31
|
refactor(auth): JWT 认证链路复用 SDK ResolveRoleContext,消除角色解析双实现
|
2026-08-13 17:40:23 +08:00 |
|
TermiNexus
|
9f1b222bfe
|
chore(repo): 取消跟踪 TempLate/GERP 部署产物(deploy.ps1 每次构建后同步,不纳入版本控制)
|
2026-08-13 17:36:36 +08:00 |
|
TermiNexus
|
88ecdde7c7
|
chore(repo): 治理仓库卫生——忽略子服务器/上传目录/运行时文件并清理已入库敏感数据
- .gitignore: 新增 /ATestCServer/ /media/ /GVSite/ /frp/ /.idea/ 及 service.log/ips.txt 等运行时文件
- 取消跟踪: ATestCServer(含 HTTPS 私钥与 db.sqlite3)、media 用户上传、GVSite gitlink、根目录日志与状态文件
- 新增 docs/architecture_debt_governance.md 架构债治理清单
|
2026-08-13 17:36:21 +08:00 |
|
TermiNexus
|
6b82f9c2d7
|
chore(site): GVSite 指针更新——超级菜单社区独立子菜单
|
2026-08-13 11:12:42 +08:00 |
|
TermiNexus
|
a7213bac0a
|
chore(site): GVSite 指针更新——社区按钮图标与 Tailwind v4 语法修复
|
2026-08-13 11:02:16 +08:00 |
|
TermiNexus
|
19ee1e7e2d
|
chore(site): GVSite 指针更新——社区顶部间距真正生效
|
2026-08-13 10:58:34 +08:00 |
|
TermiNexus
|
dfc8ca58a8
|
chore(site): GVSite 指针更新——社区详情/发帖页顶部间距调整
|
2026-08-13 10:55:46 +08:00 |
|
TermiNexus
|
e3c6f7d21d
|
chore(site): GVSite 指针更新——nav 透明仅限 www 首页
|
2026-08-13 10:40:47 +08:00 |
|
TermiNexus
|
0a21d0bb30
|
feat(community): 头像 API——ugm 按 UserUUID 头像接口改公开(AllowAny),社区接口返回 AuthorAvatar 字段;GVSite 指针更新
|
2026-08-13 10:30:58 +08:00 |
|
TermiNexus
|
569344030e
|
chore(community): GVSite 指针更新——社区页面阿里云开发者社区风格重构
|
2026-08-13 10:26:52 +08:00 |
|