Skip to content

FastAPI迁移 - WSS推流改造 - RBAC/设置/容器恢复落地 - #29

Open
ChesterNotChest wants to merge 65 commits into
mainfrom
chester-next
Open

ChesterNotChest wants to merge 65 commits into
mainfrom
chester-next

Conversation

@ChesterNotChest

@ChesterNotChest ChesterNotChest commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

FuxiYu_CtrKernel

新增内容 | WHAT'S NEW

  • FastAPI 全量迁移:blueprints 重构为 api/schemas、鉴权挂载到 Depends 链、HTTPS/SSL 工序、check_keys 退役
  • WSS 通信改造:采集主链路从「Ctrl 定时 HTTP 轮询 Node」反转为「Node 主动连接 Ctrl、负责采集并推送」——Ctrl 侧轮询任务退役,只收 snapshot 落内存 buffer,读侧走进程内 API
  • RBAC 实装:两层模型(方法级权限点 + 资源级授权)、预设组(user/operator)、manage override 语义
  • 「已删除容器」管理页:删除旁路保留挂载记录与恢复快照,提供恢复 API 与手动清理 mount 入口
  • 设置面板落地:system_settings 落库 + seed + Admin 设置页,配置默认值收口到 settings_tasks,.env 瘦身
  • 数据通路收口:WSS snapshot + API 进程内 buffer;镜像模板可见性收敛(列表粗读/详情按资源授权/创建即带状态)

漏洞修复 | Bug Fixes

  • 修复镜像权限闸自相矛盾:update 卡 user_images 授权行、delete 却因 image:manage 通配恒过,持 image:edit 的用户改不了任何模板;系统内置镜像(created_by 为空)全员列表可见但详情一律 403,属于"可见却打不开"的半途拦截
  • 修复 alloc/GPU 选卡字段全 null:双层 pydantic 模型字段失配被 extra=ignore 静默吞掉,详情接口永远输出默认值
  • 修复容器删除残留:node 对已消失容器回 HTTP 404,Ctrl 将其当错误上抛导致 DB 行永不删除,服务层放行 not_found 后本地清理闭环
  • 修复单字符容器名漏到 docker:Ctrl 与 Node 规则不齐,"2"这类名字直穿到 docker 触发 400 且误报"已存在";统一 ≥2 字符 + node 预检
  • 修复 WSS delete 帧无机器隔离:跨机器同名容器会被误删(HIGH 安全修复)
  • 修复机器权限只能发不能收:remove_machine_permission 端点缺失,管理端无法收回授权(含前端无删人入口)
  • 修复状态机边界:构建过程假终止、空快照雪崩、重启中状态不显示、机器离线后容器状态卡住等
  • 修复若干鉴权漏洞:container_status、重置密码等入口未按新 RBAC 体系挂载(替代创建容器通路一并封堵)

优化工作 | Enhancements & Patches

  • GPU 三集合建模、磁盘语义拆分、端口发布交 docker、op-log 中文可读化
  • 测试随迁移全量重构 + 权限/镜像/分配回归补齐

下一步计划 | Coming Up

  • 容器创建的 dockerfile 引入(存储 + Node 构建链路)
  • Agent 审计(LLM 规则集工作流)
  • 已删除挂载的自动定期清理

- NEW register_machine方法引入;add_machine的退役被计划
        已完成API迁移(machine / operation_log / user) - 已完成check_keys 退役 - 测试基建已修
- INTEGRATION 集成测试补充了wss模式下的"机器注册"、"信息传输"
    完成了user的基本模板范式
    完成了maintnance的状态机优化
    修复了machine status的状态机问题
- FIX 修复了docker的状态映射不完善的问题
- FIX 修复了WSS的半帧等异常结束不好探明的问题
- NEW 新增了容灾重启的测试
- FIX 修复了替代创建容器通路带来的安全漏洞
- FIX 修复了container_status和重置密码的鉴权漏洞
- NEW 新增了更好的node传递异常的能力
…allow_list 内轮转选卡)

- NEW 磁盘语义收敛(disk_size_gb 显示用 / max_disk_size_gb 容器上限,组装端现算派生;disk_limit_bytes 列移除)
- NEW 端口发布交 docker(publish_all_ports + 创建后 inspect 回填 port_mappings,free_port 退役)
- NEW 运行态 buffer 链路(WSS 子进程 → loopback internal API → API 主进程内存 buffer;共享 token 双重校验)
- NEW 容器 created_at(id 复用区分锚)+ op log 按时间锚过滤 + SQLite PRAGMA foreign_keys=ON(级联对齐生产)
- FIX WSS delete 帧限定发送机器(跨机器同名容器不再误删,HIGH 安全修复)
- FIX bref 补 container_image/created_at 字段;detail 补 alloc 派生/端口映射去重
- REFACTOR 清退 container_tasks 顶部 24 个薄包装函数(调用点直连 repo + session_scope)
- NEW .env瘦身迁移
- ENHANCEMENT 修正了部分权限设计,使得manage具有“override”特性
 - REFACTOR 清退了 user.permission 单字段(建号与 seed 改为 auth_group 绑定)
 - NEW 新增了权限组操作接入 op-log 审计(失败带 why 诊断)
 - FIX 修复了容器删除残留的问题(node NOTFOUND 放行本地删库)
 - FIX 修复了单字符容器名漏到 docker 的问题(规则统一 + node 预检)
 - NEW 新增了容器轴 unknown 复核态(仿机器 collect_error,只落标记列)
 - FIX 修复了 alloc 响应 null 的问题(双层 pydantic 字段失配)
 - NEW 新增了 alloc 派生与 GPU 选卡的单元测试
 - ENHANCEMENT 心跳日志降噪(稳态 DEBUG / 异常 60s 复述 / 心跳 access 过滤)
- NEW 新增 log_success / log_failure / log_result 统一写入口,全部写点改经此收口
- NEW 邮件发送内置记账:send / send_batch 落审计,正文、验证码与 SMTP 配置不入档
- NEW 批量邮件按成功、失败各汇总至多一条,不再逐封写
- NEW 日志目标可读化:新增 target_display_name,目标已删时展示历史名称且不提供导航
- NEW 目标类型补齐 mail / announcement 的名称映射
- NEW 设置变更审计:新增 OperationType.UPDATE_SETTING,记 before / after / setting_keys
- NEW 容器、机器、用户、镜像、RBAC、公告、设置的失败分支统一留痕
- FIX 删除、恢复与挂载清理的入口校验失败也留档
- FIX 清理提醒的记账异常移出 session,避免提交时二次抛错中断扫描
- REFACTOR container_tasks 收敛为门户层
- NEW 动作按族下沉:creation / deletion / actions / collaborators / lifecycle / restore / long_term / mount_cleanup
- NEW 读侧分解:queries 收查询工具、information 收出参拼装、deleted_containers 收已删快照
- REFACTOR node_comms 拆为 node_comms_modules:门户身体收回 node_comms.py
- ENHANCEMENT 网络出口单点化:全仓统一走 node_comms.send,测试只需 patch 一处
- REFACTOR 机器建档收敛:删除 add_machine 人工入口与 AddMachine 请求/响应,统一走 TOFU Register_machine
- NEW Register_machine 编排落在 machine_tasks,接入步骤拆到 node_comms_modules.enrollment
- FIX 修复 _grant_unpause_grace 异常路径 freeze_state 未绑定(NameError 被吞成误导性告警)
- TEST 新增 31 个函数级单测:创建载荷 / 出参拼装 / 恢复改名 / mount 清理入参解析
- TEST 测试善后:补丁目标随接缝迁移、清理死常量与死导入、放宽过期验证码边界避免时钟回拨抖动
- COMMENT 门户与工具族补分隔符与中文注释,英文 docstring 回落中文
- FIX 修复了Ctrl离线时无法考察Node在线情况带来的清理时间变早问题
- NEW 补充了重新TOFU连接的能力
- FIX 修复了Ctrl离线时无法考察Node在线情况带来的清理时间变早问题
- NEW 补充了重新TOFU连接的能力
- FIX 测试网兜钉在 requests.post,带自定义适配器的 Session 路径静默漏网、测试里真的发出网络请求,改钉两者共同的唯一咽喉 requests.Session.request
- FIX 修复了由Proxy导致的SSL自签校验的异常问题
@ChesterNotChest
ChesterNotChest force-pushed the chester-next branch 3 times, most recently from a2f776f to b808fc6 Compare September 15, 2026 07:10
- NEW 容器留痕存输入而非渲染结果:base_image / dockerfile_body 两列
- NEW 平台注入不落库,渲染时取当下系统设置
- NEW 镜像模板移除改为停用:外键永不触发,归属永不改变
- NEW 恢复三分支:非 READY 或归属为空走容器留痕;版本符合走当前模板;落后默认留痕、按新须显式
- NEW 二选一时后端不恢复,随响应交回两份内容与分段差异
- NEW machine_image 观测表:记录 Ctrl 请求过的构建,不在执行链上
- FIX 恢复不再降级:无留痕一律拒绝,删掉 direct 漂移路径
- FIX 标签推不出时不再用 now() 编造
- AMEND runtime_image 与 image_dockerfile 两列退役
- REFACTOR 标签构造只留 format_image_build_tag 一处实现
- REFACTOR 分段差异改逐字段比对,删掉文本包含式启发式
- TEST 新增 test_container_image_id.py:旧库自愈 / 三分支 / 展示出口 / 派发记录
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant