TermiNexus
4b3013629a
chore(gerp): 部署产物更新(正文修复构建)+ 清理 logs.zip
...
deploy.ps1 部署后的 index.html 资源 hash 同步;TODO 去空行;删除误入仓库的 34MB logs.zip
2026-08-11 01:22:15 +08:00
TermiNexus
840be961f6
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
TermiNexus
1a73483db5
fix(atest): 中风险项修复——重连锁协议/OGM 键名/RemoteCallDemo
...
- _DoReconnect 互斥锁移入内部,修复 force_deregister 路径锁协议破坏
- 订单 OGM 键名 GlobalID→ObjectGlobalID(映射不再丢失)
- RemoteCallDemo 对 requests.Response 先解析 JSON,避免 500
- 补充 Compensate 状态守卫回归用例(20/20 通过)
2026-08-10 23:32:10 +08:00
TermiNexus
feee433e50
fix(atest): 去除 manage.py 硬编码密钥口令 + SIO 初次连接失败兜底重连
...
- manage.py 强制环境变量注入,删除默认 SECRET_KEY/MSYNC_SERVICE_SECRET/DB_PASSWORD
- sio_client 初次连接失败启动兜底重连线程,消除永久退化态
- 补充 RetryStep 手动重试与状态守卫回归用例(17/17 通过)
2026-08-10 23:29:34 +08:00
TermiNexus
7eadd7a3c4
chore(gvsdsdk): 解除主仓对 gvsdsdk 目录的跟踪,改由独立仓管理
...
gvsdsdk 为独立 git 仓库(.gitignore 已含 /gvsdsdk/),本次将历史
误跟踪的 67 个文件移出主仓索引,避免双轨提交混乱。
2026-08-10 23:10:43 +08:00
TermiNexus
e95d77d0f7
fix(msync): 修复主从链路验证暴露的缺陷,ATestCServer 自动化实验 6/6 通过
...
- Main.py: Host 白名单剥离端口再匹配,放行 127.0.0.1:8000 自省请求
- ATestCServer: 新增 /api/msync/local/* SDK 契约路由、实验处理器
模块 local_handlers(随服务进程注册)、local/reset 状态重置端点;
msync_experiment 命令 check 改名 record 并简化补偿/重试逻辑
- gvsdsdk msync 模型与迁移 0001 的 FK db_column 同步(与独立仓一致)
2026-08-10 23:09:08 +08:00
TermiNexus
f3cb513584
fix(msync): 版本升至 1.1.0,Saga 缺陷修复 + ATestCServer 本地事务端点 + 文档修正
...
- gvsds/settings.py 版本要求升至 1.1.0
- 新增 Saga 状态机回归测试(sqlite 内存库,12 项断言,独立运行)
- ATestCServer:新增 local/execute、local/compensate、local/handlers 端点
(主服务器 Saga 驱动子服务器步骤),主服务器令牌经 introspect 远程校验
- SAAS_ARCHITECTURE.md:msync 双包描述更新、Role/Permission 双份收敛标注、
ABAC 定位更正为属性标识符补充层
2026-08-10 22:39:08 +08:00
TermiNexus
7360235143
refactor(msync): msync 下沉 gvsdsdk,gvsds 侧引用全面切换
...
- 删除 gvsds/apps/msync(整体搬迁至 gvsdsdk/msync,git 识别为 rename)
- settings/urls/Main.py/gerp 视图引用切换至 gvsdsdk.msync
- gvsds.common.Serializer 改为从 gvsdsdk.serializer_base re-export
2026-08-10 22:26:39 +08:00
TermiNexus
34a13b3dce
fix(msync): 分布式事务可靠性加固 + 子服务器强制密钥认证
...
- Saga #1:_call_service 异常兜底,非 2xx / 非法 JSON / requests
异常统一转 StepExecutionError,失败必进补偿,事务不再悬挂 Running
- Saga #2:补偿失败步骤置 FAILED,新增 RetryCompensate(select_for_update
+ atomic)可重试补偿,全部补偿后事务置 COMPENSATED;新增 HTTP 端点
tx/<code>/retry-compensate/ 与 SIO 事件 msync:tx:retry_compensate
- 密钥认证:Register 强制新节点携带 ServiceSecret 并校验 hash 自洽;
HTTP 心跳/注销/OGMQuery/事务视图补 ServiceToken 鉴权(仅限本服务)
- 密钥认证:SIO 17 个业务事件要求 msync:auth 密钥认证,注销防伪造服务名
2026-08-10 08:09:18 +08:00
TermiNexus
7dab803ef3
feat(gitea): 银河锋锐 Gitea 对接(申请/认领/改密/头像迁移 API + UserGiteaAccount)
2026-08-09 18:28:56 +08:00
TermiNexus
d4558fbacb
feat(doc): Document 系列表重设计(可空系列 UUID + DocFormat 双格式)与 doc 子域动态 API,删除旧静态阅读页
2026-08-09 01:50:24 +08:00
TermiNexus
6c2eb5cdb7
feat(mail): 联系人 DELETE 接口(按 UUID 或邮箱删除)
...
- MailContactsView 增加 delete 方法 - 同步部署产物 index.html
2026-08-08 20:50:03 +08:00
TermiNexus
9bc6819296
feat(mail): 云端联系人表与发信自动存储 + 联系人查询接口
...
- 新增 MailContact 模型(用户+邮箱唯一),迁移 0020 - MailJmapView 发信成功后自动保存收件人为常用联系人 - 新增 /API/Mail/Contacts 列表/搜索/新增接口;同步部署产物 index.html
2026-08-08 19:53:12 +08:00
TermiNexus
4ad6403358
feat(mail): 邮箱登录换取会话 token,密码仅存后端内存不再明文传输
...
- 新增 /API/Mail/Login 校验密码并签发 24h token(内存存储邮箱凭据)
- /API/Mail/Jmap 改为携带 token 访问,移除明文 Password 字段
- 新增 /API/Mail/Logout 吊销 token
2026-08-08 15:12:16 +08:00
TermiNexus
108bed6387
fix(mail): 修复申请邮箱唯一性误判(Stalwart 不存在账户返回 HTTP 200+notFound)
...
GetMailbox 增加 error/data 显式判断,不存在邮箱返回 None 而非误判已存在
2026-08-08 13:29:17 +08:00
TermiNexus
0b1d71499e
feat(mail): 新增 Stalwart 员工邮箱管理与 JMAP 收发代理
...
- 新增 UserMailbox 模型与 0019 迁移(密码不落库,仅存 Stalwart)
- 新增 StalwartMailManager 服务层(v0.11 /api/principal 管理 API)
- 新增 /API/Mail 六个接口:Session/Apply/ChangePassword/MyMailbox/Jmap/AdminList/Disable
- JMAP 收发统一经后端代理转发,避免浏览器跨域
- 修复 form_service 误导入已删除的实例方法(_BuildFieldMap 等)
2026-08-08 12:59:50 +08:00
TermiNexus
3d41d2a209
docs: SAAS_ARCHITECTURE 更新服务层化 P0/P1/P2 全部完成状态
2026-08-08 00:00:46 +08:00
TermiNexus
d7f017d396
refactor(gerp): 收敛 SAAS 残留裸 ORM(doc 视图/统计任务/审计清理/工单通知/viewsets 换源)
2026-08-07 23:52:30 +08:00
TermiNexus
5405286734
refactor(gerp): form_service 通用增删改落库点下沉 gvsdsdk FormServiceBase
2026-08-07 23:04:21 +08:00
TermiNexus
187aebe811
refactor(gerp): FormService 继承 gvsdsdk FormServiceBase 复用字段工具并委托 code_display
2026-08-07 22:55:24 +08:00
TermiNexus
010ff46765
refactor(gerp): P2 完成 25 个 ViewSet queryset 全部换源 gvsdsdk 模型
2026-08-07 22:33:58 +08:00
TermiNexus
9dd3ff8aca
refactor(gerp): P2 首批 9 个 ViewSet queryset 换源 gvsdsdk 模型并清理裸 import
2026-08-07 22:07:01 +08:00
TermiNexus
68bcd5d26c
refactor(stats): 删除 StatEngine 统一走 gvsdsdk StatsManager,修复定时任务错误字段查询
2026-08-07 21:44:20 +08:00
TermiNexus
222fae6fbe
docs: 全面更新 SAAS 架构文档,反映服务层化 P0/P1 完成与 stats 双轨技术债
2026-08-07 21:14:09 +08:00
TermiNexus
d92c163801
refactor(gerp): P1 裸操作委托服务层
...
物品/背包、文件资产、社区文档、密码修改、服务节点查询改经 InventoryManager/AssetManager/DocManager/ChangePasswordAudit/ServiceRegistry.GetNode;新增 doc 服务层 manager.py。
2026-08-07 19:39:37 +08:00
TermiNexus
cd9ebcddd1
"refactor(gerp): P0 鉴权链路委托 gvsdsdk 并清理死代码
...
role_scope 数据权限底座、form_service 默认角色/租户管理员/删用户/审计
改经 SDK;ugm/payment/stats 裸查询委托;删除 commission/payment/stats
冗余 manager/engine;修复 user_detail 潜伏 ImportError。"
2026-08-07 18:10:45 +08:00
TermiNexus
e2015164ea
"refactor(gerp): 菜单与工单 API 委托 gvsdsdk
...
menu.py 四视图与 WorkOrderViewSet 自定义 action、WorkOrderStatsView 改经
MenuManager/WorkOrderManager,移除视图层裸 ORM 查询。"
2026-08-07 17:17:29 +08:00
TermiNexus
f6b057bc19
"refactor(core): 用户公司/部门归属改走 gvsdsdk 管理器
...
- User.GetCompanies 委托 CompanyManager.GetCompaniesForUser
- User.GetDepartments 委托 DepartmentManager.GetDepartmentsForUser
- set_person_in_charge 部门校验走 DepartmentManager.GetDepartmentByUUID"
2026-08-07 15:57:45 +08:00
TermiNexus
cc6d417f37
"refactor(views): delegate tenant review, 2FA, account & RBAC to gvsdsdk
...
- tenant_review uses TenantManager
- twofa uses AuthManager (fixes SEcretKey field typo bug)
- account uses AuthManager activation/email flows
- form_api RBAC uses RoleManager.CheckTablePermission
- order_flow permission lookup uses GetPermissionByCode
- core.User.HasPermission delegates HasUserPermission"
2026-08-07 04:40:16 +08:00
TermiNexus
da64f5d306
"refactor(form_service): guard Order CRUD with OrderManager state machine
...
- Order add via CreateGeneric (auto OrderNO, forced PENDING)
- OrderStatus/OrderNO/timestamps/snapshots protected from generic modify
- Order & OrderItem hard delete/modify blocked
- role_scope ownership check on Order modify/delete (fixes member bypass)
- Order added to AUDIT_TABLES
- role permission tree & userrole search delegate to RoleManager
- stats purge uses StatsManager"
2026-08-07 04:08:33 +08:00
TermiNexus
b4d2b7bfbf
"refactor(viewsets): permission create via RoleManager.CreatePermission
...
- single & batch (semicolon-separated) creation now delegates to SDK
- behavior identical: 409 on duplicate code, skip duplicates in batch"
2026-08-07 03:19:28 +08:00
TermiNexus
3346a3b9ce
"refactor: route ugm/site-user/role-permission/user-detail through gvsdsdk managers
...
- ugm auth flows use AuthManager
- site_user management uses AdminUserManager
- role permission save uses RoleManager.SaveRolePermissions
- user detail aggregation uses UserService.GetUserDetail
- MC custom business moved into gvsds.apps.mc (manager/models)
- remove dead imports (User2FA/UserAvatar/Password/bcrypt/Role/transaction)
"
2026-08-07 03:12:38 +08:00
TermiNexus
7d578f82a4
"refactor(views): route commission/payment config views through gvsdsdk
...
- commission rule/rate-table/event endpoints use CommissionEngine
- payment gateway config list/detail/save/delete use PaymentManager
- remove unused model imports"
2026-08-07 02:26:35 +08:00
TermiNexus
2d882d521a
"refactor: migrate payment/commission/position/message/menu to gvsdsdk service layer
...
- payment/commission views use gvsdsdk PaymentManager & CommissionEngine
- position create uses PositionManager.CreatePosition (fixes passing Tenant
instance to UUIDField; SDK generates timestamps via timezone.now)
- message role lookup uses RoleManager.GetRoleByUUID
- menu current-company resolution uses RoleManager.GetUserRoleDetails
- removes dead app-layer imports (PaymentTransaction, UserRole, Position)"
2026-08-07 01:57:23 +08:00
TermiNexus
10b8af2f2b
"refactor(api): 角色/职务剩余裸操作接入 gvsdsdk 服务层
...
- Role 级联搜索/当前角色/用户中心/用户详情角色列表改用 GetRolesForUser/GetUserRoleDetails/GetRoleByUUID
- PositionManager 11 个方法接入 position.py 全部视图
- 累计 20+ 处裸 ORM 操作统一走 gvsdsdk 服务层"
2026-08-07 01:24:44 +08:00
TermiNexus
e27f3d3dd6
"feat(gvsdsdk): 新增 PositionManager 服务层并接入职务系统 API
...
- PositionManager 提供职务/岗位模板/模板权限共 11 个服务方法
- position.py 11 处裸 ORM 操作全部改用服务层
- 消除职务系统跨表裸查询,统一走 gvsdsdk"
2026-08-07 01:21:05 +08:00
TermiNexus
62b6ae08ed
"feat(gvsdsdk): 扩展 RoleManager 服务层并接入后端 API
...
- RoleManager 新增 GetRoleByUUID/GetUserRoleDetails/HasRolePermission,CreateRole 增加 RoleDesc
- 后端 8 处角色/权限裸操作改用服务层(ugm/role_permission/form_api/viewsets/order_flow/form_service)
- 消除跨表裸查询样板,统一走 gvsdsdk"
2026-08-07 01:18:13 +08:00
TermiNexus
411ead3ca1
"refactor(api): 角色/权限操作改用 gvsdsdk RoleManager 服务层
...
- ugm 角色切换校验、gerp 权限分配/移除改用 HasRole/AssignPermission/RemovePermission
- form_service 默认角色绑定与成员重复校验改用 HasRole/AssignRole
- User.GetRoles / 角色群发改用 GetRolesForUser/GetUsersForRole
- 消除 8 处裸操作表样板,统一走 gvsdsdk 服务层"
2026-08-07 01:08:33 +08:00
TermiNexus
a355a1ecfc
修复了 ORM 直接编辑区域的表格高度,实现了工单卡片化和 Saga 模式管理页同后端修正
2026-08-06 18:01:05 +08:00
TermiNexus
926cb93fbf
基本已能进入生产环境
2026-08-05 23:32:49 +08:00
TermiNexus
e53dceac7e
维护了 产品 / 项目 超级菜单部分,同步了 GERP 系统的要求(凭证时间)
2026-08-04 20:20:41 +08:00
TermiNexus
be56e3539e
修复了线上问题
2026-08-04 18:26:27 +08:00
TermiNexus
d6ff1ca8a7
将 GVSite 的 生产环境部署内容隔离,修正了线上部分问题
2026-08-04 17:53:31 +08:00
TermiNexus
132d7d88ab
配合 GERP 和 GVSite 做了相关的前后端处理
2026-08-04 17:18:00 +08:00
TermiNexus
d421c38a35
清理了不需要的文件,阻止了 GERP 的编译文件的上传
2026-08-02 22:45:24 +08:00
TermiNexus
d23f61c2f8
移动了旧 GERP 到 backup 文件夹
2026-08-02 22:15:54 +08:00
TermiNexus
358e9933e5
将 GVSDSDK 作为单独的项目处理
2026-08-02 19:35:34 +08:00
TermiNexus
66898125dd
Updated the Pyproject
2026-07-30 00:53:34 +08:00
TermiNexus
ac7a7ce49b
Updated the GVSDSDK README 2
2026-07-30 00:49:33 +08:00
TermiNexus
c23a414292
Updated the GVSDSDK README
2026-07-30 00:23:02 +08:00