【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
相关推荐
Xudde.2 小时前
AI-Web1 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
盛世宏博北京2 小时前
十二防档案库房总线架构设计:恒湿消毒净化一体机 RS485 组网实战笔记
开发语言·笔记·php·恒湿机·档案八防温湿度
zyseo82 小时前
谷歌SEO 站点地图优化实战:sitemap 是索引候选清单的运营工具
网络·数据库·经验分享·笔记·搜索引擎
浅念-2 小时前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
跨知易知识产权2 小时前
申请过程中如果需要调整策略(如加快 / 延迟审查),流程管理可以同步调整排期吗?
笔记
霖霖7142 小时前
【ESP32笔记】蓝牙BLE连接与广播
笔记·单片机·mcu·物联网
sayang_shao2 小时前
用 Rust 开发 STM32H743:从零搭建一个能烧录、能看日志的项目
stm32·单片机·rust
额额额对了2 小时前
Linux 驱动学习笔记(部分)
linux·笔记·学习
霍格沃兹测试学院-小舟畅学3 小时前
Playwright MCP:AI Agent 驱动 Web 自动化测试的架构与执行机制
前端·人工智能·架构