【A11】拥有者模式平台架构笔记

一句话内核:每条数据只有一个拥有者;拥有者独占写,其他人只读;写入口唯一;所有权转移必须在线且原子;数据活在作用域内,作用域结束即冻结;服务器是这套规则的强制者。


一、核心思想

整个平台以 Rust 的所有权 / 借用 / 生命周期为唯一内核:

text 复制代码
任何时刻,任何一份数据,有且仅有一个拥有者(Owner)。
拥有者 = 唯一可写者 = 唯一责任人。
其他人对这份数据,只能"借用"(读)或"申请"(提案)。

所有模块、所有规则,都是这一条的直接推论。


二、概念映射

Rust 概念 平台对应 作用
所有权 T 数据的唯一负责人(人/角色/节点) 定归属
可变借用 &mut T 拥有者本人在写 独占写
共享借用 &T 其他人只读 共享读
移动 move 所有权移交(交接、审批流转) 换归属
生命周期 'a 数据存活的作用域 定生死

三、作用域层级(生命周期落地)

text 复制代码
'static   企业层    组织、人员、权限、行政规则        长期,滚动维护
'project  项目层    聊天、流程、计划                  明确起止,到期归档
'scope    计划层    周 / 月 / 年滚动计划              项目内滚动,定期更新

规则:内层数据不能比外层作用域活得久。

  • 项目归档 → 项目内一切转只读
  • 企业清理 → 按行政规则处理

四、四种数据形态(按可变性分)

形态 Rust 类比 平台实例 写规则
不可变追加 Vec::push 聊天消息 发出即不可改,撤回=追加
独占可变 &mut T 通讯录、当前计划 单一拥有者写
版本追加 Vec<Version> 计划滚动版本 每次更新追加,不覆盖
只读归档 &T 归档项目、历史流程 冻结,不可写

五、三种访问方式

text 复制代码
拥有者       →  &mut T    直接写
协作者       →  &T        只读
无权限者     →  无引用      看不见
提建议者     →  工作流消息  不进数据层,人工转达

关键 :提建议不产生数据层对象,只在流程层传递。数据层永远只有拥有者一个写入口。


六、所有权转移(move)

text 复制代码
移交 = 在线 + 锁定旧拥有者 + 快照 + 授予新拥有者 + 解锁
  • 必须是在线事务,不能离线移交
  • 锁定期间禁止任何写入(包括旧拥有者)
  • 移交记录本身是正式记录(所有权接替链)
  • 移交后旧拥有者 token 失效,任何残留本地编辑无法上行

七、服务器 = 编译器

Rust 的保证来自编译器;平台没有编译器,所以服务器端规则引擎就是 borrow checker。

Rust 编译期 平台服务器端
借用检查 权限校验
生命周期检查 作用域校验(项目是否归档)
移动后失效 移交后旧拥有者 token 失效
& / &mut 互斥 写锁 + 读版本

服务器必须"拒绝"违规请求,而不是"提示"或"警告"。


八、三模块 = 一个内核,三种形态

text 复制代码
            拥有者模式(唯一内核)
                   │
        ┌──────────┼──────────┐
        │          │          │
      聊天        流程       计划
   (追加日志)   (状态机)   (版本列表)
        │          │          │
        └──────────┼──────────┘
                   │
            服务器 = 编译器
       (强制所有权、借用、生命周期)

三模块差异只在于 T 的形态,所有权规则完全一致。

模块 Rust 类比 特征
聊天 append-only log 发出即不可变,可"提升"为正式记录
流程 move chain(状态机) 单据在节点间独占转移
计划 版本列表 + 当前视图 定期滚动,追加版本,不覆盖历史

九、模块联动关系

text 复制代码
计划(驱动)──触发──> 流程(必要 / 突发过程)──产生沟通──> 聊天(补充)
   ↑                                                          │
   └──────────────── 可提升为计划 / 流程 / 附件 ────────────────┘
  • 计划是主驱动:定义做什么、什么时候做
  • 流程是被触发的:计划节点触发(必要)或突发触发(变更/事故)
  • 聊天是补充:非正式协调,默认不长期保存
  • 聊天可提升:有价值的消息可"晋升"到正式层,保留证据链

十、计划滚动更新

text 复制代码
年计划 ──细化──> 月计划 ──细化──> 周计划
   ↑                                  │
   └────── 根据实际执行反馈修正 ───────┘
  • 粗粒度稳定,细粒度滚动
  • 越近越细,越远越粗
  • 建议追加版本而非原地覆盖(EPC 场景计划变更有追溯价值)
  • 当前视图 &T 只读,版本历史 append-only

十一、生命周期三态

状态 含义 可写 可查
进行中 项目活跃 ✅ ✅
归档 项目结束,冻结 ❌ ✅
清理 按策略删除 ❌ 仅元数据
  • 归档 ≠ 删除,中间态必须有
  • 清理需二次确认 + 高权限
  • 企业层行政规则用"固定时间滚动 + 人工清理"

十二、设计宪法(五条铁律)

  1. 唯一拥有者:每条数据只有一个拥有者,唯一可写者
  2. 借用分离 :其他人只读(&T),无权限者不可见
  3. 写入口唯一:建议走流程,不产生数据层对象
  4. 移交原子化:在线 + 锁定 + 快照 + 授权 + 解锁,一步不省
  5. 作用域约束:数据不能比作用域活得久,归档即冻结

十三、Rust 伪代码内核

rust 复制代码
// 数据 = 有拥有者的值
struct Owned<T> {
    owner: OwnerId,
    value: T,
    frozen: bool,
}

impl<T> Owned<T> {
    fn write(&mut self, actor: ActorId) -> Result<&mut T> {
        if actor != self.owner { return Err(NotOwner); }
        if self.frozen { return Err(Archived); }
        Ok(&mut self.value)
    }

    fn read(&self, actor: ActorId) -> Result<&T> {
        Ok(&self.value)
    }

    fn transfer(&mut self, new_owner: OwnerId) -> Result<()> {
        // 在线 + 原子 + 记录接替链
        self.owner = new_owner;
        Ok(())
    }
}

平台所有模块都是 Owned<T> 的不同 T。


十四、待定项(下一步)

  • 三种形态的 T 具体结构(消息 / 流程单 / 计划条目)
  • "计划如何触发流程"的接口定义(联动核心)
  • 所有权接替链的存储格式与查询接口
  • 聊天"提升"动作的留痕规范
  • 企业层行政规则的具体清单(滚动周期、清理策略)

附:核心类比速查

平台对象 Rust 类比
单位 / 企业 'static 模块
项目 'project 作用域内的结构体实例
计划 主状态字段 + 版本列表
流程 状态机,单据在节点间 move
聊天 append-only Vec<Message>,栈上临时值可提升到堆
拥有者 &mut 持有者
协作者 & 借用者
移交 Option::take / mem::replace
归档 转 &T
清理 drop
服务器 borrow checker
相关推荐
蒸蒸yyyyzwd1 小时前
后端学习笔记三个知识
笔记·八股
深圳行云创新1 小时前
智能体架构之争:单Agent加Skills,还是多加几个Agent
人工智能·架构·软件工程
这个DBA有点耶2 小时前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
Zhao-Jichao3 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
旖旎夜光4 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
ACP广源盛139246256734 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
FII工业富联科技服务4 小时前
工业智能体技术架构解析:六级部署、核心模块与制造场景实践
人工智能·架构·制造
李长渊哦5 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
pixelpilot6 小时前
Deta Surf:把笔记、文件和网页塞进同一个 AI 工作台
笔记·其他