TermiNexus
d2de6f7f3d
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
de98ed1e9a
chore(site): GVSite 指针更新——超级菜单社区独立子菜单
2026-08-13 11:12:42 +08:00
TermiNexus
49e859af88
chore(site): GVSite 指针更新——社区按钮图标与 Tailwind v4 语法修复
2026-08-13 11:02:16 +08:00
TermiNexus
8a6c243105
chore(site): GVSite 指针更新——社区顶部间距真正生效
2026-08-13 10:58:34 +08:00
TermiNexus
df3e9fff9d
chore(site): GVSite 指针更新——社区详情/发帖页顶部间距调整
2026-08-13 10:55:46 +08:00
TermiNexus
b908eb6c8e
chore(site): GVSite 指针更新——nav 透明仅限 www 首页
2026-08-13 10:40:47 +08:00
TermiNexus
4d923d4196
feat(community): 头像 API——ugm 按 UserUUID 头像接口改公开(AllowAny),社区接口返回 AuthorAvatar 字段;GVSite 指针更新
2026-08-13 10:30:58 +08:00
TermiNexus
aa3e87908a
chore(community): GVSite 指针更新——社区页面阿里云开发者社区风格重构
2026-08-13 10:26:52 +08:00
TermiNexus
b6aa7ac458
fix(community): SUBDOMAIN_CONFIG 注册 discuss/community/comm 子域(dir='' root_is_index)——discuss.gvsds.com 等根路径直达 GVSite SPA 社区
2026-08-13 10:22:14 +08:00
TermiNexus
b7da6397f4
feat(community): 官网社区后端——CommunityBoard/Category/Post/Reply/Like 五表 + /API/Community/* 接口(板块/帖子/详情/发帖/回复/点赞),注册 app 与路由;GVSite 指针更新(社区前端)
2026-08-13 10:18:01 +08:00
TermiNexus
e073e9340a
chore: 部署产物更新(禁止选中样式)
2026-08-13 09:44:20 +08:00
TermiNexus
9aa6ff24c5
feat(app): 应用配置公司化——AppConfig 增加 CompanyUUID(空=租户默认),读取回退链(公司→租户默认→模板默认),新增批量复制接口 Config/Copy,权限按管理范围校验
2026-08-13 08:48:05 +08:00
TermiNexus
3e8abdac03
chore: 部署产物更新(AppMarket 配置按钮恢复)
2026-08-13 08:36:53 +08:00
TermiNexus
cfec30a97d
feat(app): ListMarket 支持可管理公司安装分布(InstalledCompanies),市场接口对管理员附带管理范围内已装公司名
2026-08-13 08:34:58 +08:00
TermiNexus
755d743b16
fix(app): Install/Uninstall 公司权限校验 c.hex 改 c.hex()——UUIDObj 无 hex 属性导致权限误判(403/500)
2026-08-13 08:22:21 +08:00
TermiNexus
58e75f0829
feat(gerp): 真应用注册协议 Manifest + 严格可用收紧 + 应用配置
...
- 新增 app_manifests.py:应用清单协议(元数据/菜单/前端入口/配置模板),内置6应用
- 菜单由 Manifest 全权管理:安装注入(挂已知父菜单)/卸载删除,删除手工 menu 项
- App 表新增 FrontendRoute/FrontendType/LegacySrc(0025);新增 AppConfig 键值表(0026)
- app_manager 配置服务(模板/读取/保存)+ AppConfigView(/API/App/Config)
- 严格收紧:AppAccessPermission 移除管理员豁免、menu 过滤全员执行按 Manifest 全菜单
- mail/gitea 管理视图补挂应用权限;Uninstall 支持 TenantOnly
- ManageCompanies 支持按应用查公司安装状态;修复 UUIDObj 无 .hex(转 bytes)
- 新增 sync_apps 管理命令(按安装状态收敛菜单)
2026-08-13 07:47:07 +08:00
TermiNexus
0d6256dbd0
feat(app): 公司级+租户级双粒度应用安装——CompanyApp 表、Install/Uninstall 支持指定公司、可管理公司范围校验(super/tenant/company)、CheckAccess 公司维度
2026-08-13 06:28:28 +08:00
TermiNexus
6c4a4d9513
feat(app): 应用级访问控制——AppAccessPermission 权限工厂挂载邮箱/Gitea/商店/储值/钱包/企业 API(未安装租户拒绝,管理员豁免)
2026-08-13 05:34:42 +08:00
TermiNexus
9aec6e1810
docs: 更新 GVSite 子模块指针、TODO 待办清单,新增 GVSDSDK 问题与 SAGA 报告文档
2026-08-13 04:39:57 +08:00
TermiNexus
7cb6caea54
fix(menu): MenuListCompatView 字典迭代中修改报错——子孙收集与移除逻辑移出 for 循环(GERP系统/应用中心父级菜单过滤)
2026-08-13 04:33:04 +08:00
TermiNexus
f54ed506d2
chore(gerp): 部署产物更新(GERP系统父级菜单拆分子页面构建)
2026-08-13 04:23:47 +08:00
TermiNexus
d01a01bf11
feat(gerp/system): GERP系统一级菜单(admin:super 专属)——状态/时序/secrets.ini/运行时 API + 菜单过滤支持 admin:super 专属
2026-08-13 04:20:30 +08:00
TermiNexus
8e428c1beb
chore(gerp): 部署产物更新(应用中心构建)
2026-08-13 04:06:22 +08:00
TermiNexus
7bc96892fd
feat(gerp/app): 功能/应用体系——App/TenantApp/UserApp 三表 + 应用中心服务层/API + 菜单按安装状态过滤
2026-08-13 04:06:15 +08:00
TermiNexus
b468ffac99
chore(gerp): 部署产物更新(企业创建成功页返回详情构建)
2026-08-13 03:06:09 +08:00
TermiNexus
20f18cd451
chore(gerp): 部署产物更新(租户详情菜单直达构建)
2026-08-13 02:57:01 +08:00
TermiNexus
b465d667a3
chore(gerp): 部署产物更新(租户详情企业信息构建)
2026-08-13 02:39:48 +08:00
TermiNexus
07462124a7
feat(gerp/form): CompanyInfo 同一租户仅一条,防重复提交(epcreate 打通)
2026-08-13 02:39:42 +08:00
TermiNexus
f99b599ffc
chore(gerp): 部署产物更新(debug/epcreate 路由构建)
2026-08-13 02:34:03 +08:00
TermiNexus
e2f9de4fc0
chore(gerp): 部署产物更新(原文 blob 回退修复构建)
2026-08-13 01:24:45 +08:00
TermiNexus
c4bc7b9387
chore(gerp): 部署产物更新(原文 blob 回退+安全浏览文案构建)
2026-08-13 01:22:01 +08:00
TermiNexus
3c4e853fea
feat(oidc): 泛化 OIDC Provider 为多客户端并支持 user 身份策略
...
- secrets 新增 sections() 枚举配置段,客户端按 [oidc_client_<id>] 自动注册
- 身份策略 IDENTITY 支持 gitea(绑定 Gitea,sub=用户名)/ user(sub=UserUUID,全用户开放)
- authorize/token/userinfo 按 client_id 校验凭据与回调,code 绑定客户端防串用
- [gitea_oidc] 默认客户端行为零差异,兼容现有 Gitea 免密登录
2026-08-13 01:18:00 +08:00
TermiNexus
fc704910b0
chore(gerp): 部署产物更新(HTML 邮件 iframe 预览构建)
2026-08-13 01:16:52 +08:00
TermiNexus
e0ab6e5c47
chore(gerp): 部署产物更新(邮箱小写化构建)
2026-08-13 01:06:41 +08:00
TermiNexus
990a27c3df
fix(gerp/mail): 邮箱名统一小写化,与 Stalwart 规范化存储保持一致
2026-08-13 01:06:36 +08:00
TermiNexus
5c50748aea
chore(gerp): 部署产物更新(多邮箱选择修复构建)
2026-08-13 01:02:54 +08:00
TermiNexus
33d972d8bc
chore(gerp): 部署产物更新(多邮箱功能构建)
2026-08-13 01:00:42 +08:00
TermiNexus
838b0a18e7
feat(gerp/mail): 支持用户注册多个企业邮箱,上限 5 个
...
- MailApply 上限由 1 改 5,超出提示"邮箱数量已达上限"
- MyMailbox 返回 MailboxList 数组(按创建时间倒序),替代单 Mailbox
- ChangePassword/Login 支持可选 MailboxName 指定目标邮箱,缺省取第一个
2026-08-13 01:00:37 +08:00
TermiNexus
0302e3a2b2
chore(gerp): 部署产物更新(免密登录新开页构建)
2026-08-11 16:58:05 +08:00
TermiNexus
eaef775cfd
fix(oidc): OIDC 端点禁用 DRF 默认 JWT 认证,修复 userinfo 401
...
DRF CustomJWTAuthentication 会把 Gitea 回传的 RS256 id_token 当 simplejwt token 解析失败返回 401;全部 OIDC 视图 authentication_classes=[],token/userinfo 各自自行校验凭据
2026-08-11 16:49:59 +08:00
TermiNexus
a2997daa3a
fix(oidc): id_token 补充 nickname claim(Gitea 默认按 nickname 取用户名)
2026-08-11 16:44:45 +08:00
TermiNexus
749eb8fcd4
chore(gerp): 部署产物更新(Gitea 免密登录按钮构建)
2026-08-11 16:38:56 +08:00
TermiNexus
b83c3fd07b
feat(gitea): GERP 作为 OIDC Provider 实现 Gitea 免密登录(SSO)
...
新增 /oidc/authorize|token|jwks|userinfo 与 /.well-known/openid-configuration:authorize 校验 GERP 会话自动授权,token 经 client 凭据换 RS256 id_token(sub/preferred_username/email 携带 Gitea 用户名);SessionConfig 输出 SsoUrl 供前端跳转 Gitea OAuth2 入口
2026-08-11 16:38:42 +08:00
TermiNexus
bc614d8370
feat(sve): 注册 sve.gvsds.org 子域托管 TempLate/SVE,重构 SveID 编解码并兼容存量 CVSS 数据
...
- core/views.py 注册 sve 子域 -> SVE 目录
- sve/views.py:SveID 按 0x0YYYYNNNNN(5 字节 hex)编解码,兼容补零/文本存量形态;SveCvss 兼容小写键 score/severity/vector
- 删除 TempLate/Org 原生 SVE 页面
- .gitignore 排除 /SVE/ 与 /TempLate/SVE/
2026-08-11 16:28:52 +08:00
TermiNexus
e970a610fc
fix(gitea): 申请记录补传 UserGiteaAccountUUID 主键,修复 Duplicate entry '\x00'
...
创建 UserGiteaAccount 时漏传主键 UserGiteaAccountUUID,UUIDField 无默认值导致主键存全零字节,第二次申请触发 MySQL 主键冲突;与 mail.py 模式对齐补 uuid4().bytes
2026-08-11 16:17:51 +08:00
TermiNexus
fb72a3a1e4
fix(gitea): 创建组织团队补全 units 字段,修复加入组织失败
...
新版 Gitea 创建团队必填 units(单元权限),否则 POST /orgs/{org}/teams 返回 500 units permission should not be empty;GetOrCreateMemberTeam 创建 Members 团队时补 repo.code/issues/pulls/releases/wiki
2026-08-11 16:13:47 +08:00
TermiNexus
05aa422359
chore(ccgo): 以 Vue3 做题站替换 TempLate/CCGO 原生页面并清理 www 残留
...
CCGO 构建产物部署至 TempLate/CCGO(旧文件移至 backup/ccgo);GVSite 已迁移残留的 Invite/Errors 旧页移至 backup/www;.gitignore 排除新工程
2026-08-11 01:41:39 +08:00
TermiNexus
f4083cb695
chore(gerp): 部署产物更新(正文 data:asText 修复构建)
2026-08-11 01:26:25 +08:00
TermiNexus
971eb60adb
chore(gerp): 部署产物更新(正文修复构建)+ 清理 logs.zip
...
deploy.ps1 部署后的 index.html 资源 hash 同步;TODO 去空行;删除误入仓库的 34MB logs.zip
2026-08-11 01:22:15 +08:00
TermiNexus
6b389dd96c
fix(mail): ChangePassword 增加旧密码校验,Stalwart 业务错误显式抛出
...
mail.py: 新增 _VerifyMailboxPassword(Basic 认证 JMAP discover),ChangePassword 必填 OldPassword 并先验证(缺→400/错→401/异常→502),Login 复用同一校验
stalwart.py: _Request 识别 HTTP 200 + {error} 业务错误并抛 StalwartMailError(notFound 仅 GetMailbox 放行),写操作遇 notFound 不再静默假成功
2026-08-11 01:22:09 +08:00