# oiocns-data **Repository Path**: orginone/oiocns-data ## Basic Information - **Project Name**: oiocns-data - **Description**: 奥集能可信数据空间(数据核)C#代码实现,基于aspnetcore6.0,mongodb。 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: https://ocia.orginone.cn - **GVP Project**: No ## Statistics - **Stars**: 13 - **Forks**: 24 - **Created**: 2024-07-22 - **Last Updated**: 2026-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 奥集能可信数据空间(数据核) ![奥集能可信数据空间](https://user-images.githubusercontent.com/8328012/201800690-9f5e989e-4ed3-4817-85b9-b594ac89fd31.png) ## 简介 面向下一代互联网发展趋势,基于动态演化的复杂系统多主体建模方法,以所有权作为第一优先级,运用零信任安全机制,按自组织分形理念提炼和抽象"沟通、办事、门户、数据、关系"等通用本体,为 B 端和 C 端融合的全场景业务提供新一代分布式应用架构和数据网络操作系统。 本项目是奥集能数据核(可信数据空间)的 C# ASP.NET Core 实现,作为组织级通用数据服务平台,提供 REST API、SignalR 实时通信、文件存储和时序数据管理能力。 ## 架构概览 > 📖 **完整架构设计文档**:[`docs/architecture.md`](docs/architecture.md) > > 包含系统分层架构图、核心数据流、模块职责、ADR 决策记录等内容。 ``` 外部系统层 浏览器客户端 │ Kernel主服务 │ 外部HTTP API │ 对象存储 ↓ API 接入层 Controllers (REST) │ DataHub (SignalR 对内) │ KernelHubWorker (SignalR 对外) ↓ 业务调度层 DataProvider (中央调度器) │ Services (业务服务) │ Loaders (查询引擎) ↓ 数据存储层 MongoStorage (MongoDB) │ BucketManager (文件系统) ↓ 存储引擎 MongoDB (按组织分库) │ 文件系统 (按组织分目录) ``` **核心设计理念**: - **DataProvider 中央调度**:统一数据访问入口,集中处理横切关注点(认证、钩子、日志) - **按组织分库的多租户隔离**:`BelongId → DB{Base32}` 实现强数据隔离 - **标记接口自动 DI**:`ISingleton` / `IScoped` / `ITransient` 约定注册,降低手动配置成本 - **SignalR 双向实时通信**:前端 ↔ 服务 ↔ Kernel 主服务全链路实时联动 ## 架构特点 - **所有权优先**:用户对数据拥有绝对控制权,基于 `BelongId` 的数据库级隔离 - **零信任安全机制**:JWT Bearer Token 认证,密钥 `ogocns-organization`,每次请求解析 TokenModel - **自组织分形理念**:支持灵活的组织结构构建,动态表单和字段定义 - **多主体建模**:适应复杂业务场景,支持工作流实例与实体数据的自动完善(Perfect) ## 核心功能 ### 数据管理 - 通用 Key-Value 对象操作(`ObjectController`) - 集合数据完整 CRUD + 聚合管道(`CollectionController`) - 自定义数据标准和存储方式 - 支持无代码配置应用 - 提供便捷的数据迁移功能 ### 文件存储 - 分片上传 / 断点续传(`BucketController`) - 图片缩略图自动生成(ImageSharp) - 视频 HLS 切片(ffmpeg) - 按组织隔离的文件系统目录结构 - 公开分享链接(带加密验证) ### 业务处理 - 支持个人、组织及跨组织协同办事 - 工作流实例数据自动完善(Perfect)到物实体 - 资产折旧计算(年限平均法,支持确认/撤销/关账) - 资产加解锁(关联工作流状态) - 任务指派与状态同步 ### 时序数据 - 实时数据更新与推送 - 历史数据按小时/分钟/秒聚合查询 - 自动压缩存储(每小时触发) ### 关系与权限 - 支持个人和组织关系建立 - 支持好友和成员管理 - 支持灵活的权限、角色和岗位管理 ## 项目结构 ``` oiocns-data/ ├── Controllers/ # API 接入层(REST) ├── DataShare/ # 实时通信层(DataHub / KernelHub) ├── DataStorage/ # 数据存储层(MongoStorage / BucketManager) ├── Services/ # 业务服务层 ├── Loaders/ # 查询引擎(DevExtreme DSL → MongoDB 聚合管道) ├── Providers/ # DataProvider 部分类(对象/集合/时序数据) ├── Models/ # 领域模型与 DTO ├── Entitys/ # 数据实体(MongoDB 映射) ├── Workers/ # 后台服务(KernelHubWorker / TimeTiggerWorker) ├── Extensions/ # 扩展方法(DI / JWT / 配置) ├── Handlers/ # 请求处理(TokenHandler / ErrorHandler) ├── Interfaces/ # 钩子接口(IPostInsert / IPostReplace / IPostSetFields) ├── Utils/ # 工具类与常量 ├── Program.cs # 应用入口 ├── config.yaml # 配置文件 ├── Dockerfile # Docker 部署 └── docs/ # 设计文档 └── architecture.md # 系统架构设计文档 ``` ## 安装和运行 本项目基于 ASP.NET Core 6.0 实现,运行和开发环境要求如下: ### 环境要求 - 运行环境:安装 `aspnetcore-runtime-6.0` - 开发环境:安装 `aspnetcore-sdk-6.0` - VS Code 用户建议安装 .NET Install Tool 和 C# Dev Kit 插件 - MongoDB 4.4+ ### 配置步骤 1. **登录前端系统** 在关系模块中右键,设立存储 2. **获取 KernelAuth 字符串** 通过以下接口获取认证信息: ```http POST https://ocia.orginone.cn/orginone/kernel/rest/auth HTTP/1.1 Content-Type: application/json { "module": "auth", "action": "GetDataKey", "params": { "account": "账号", "password": "密码", "dynamicId": "短信编号(使用短信验证码时必填)", "dynamicCode": "短信验证码、动态验证码(短信编号为空字符串)", "storeCode": "存储群代码" } } ``` 3. **修改配置文件** 修改 `config.yaml` 中的 KernelAuth 配置内容 4. **运行项目** ```bash dotnet run ``` ### 配置说明 ```yaml WorkerId: 1 # 雪花ID工作节点ID KernelNum: 1 # 每个Kernel地址的SignalR连接数 LogLevel: "Information" # 日志级别 AllowedHosts: "*" Bucket: "/opt/bucket" # 文件存储根目录 KeepAliveInterval: 2000 # SignalR心跳间隔(ms) Urls: "http://localhost:80" # 服务监听地址 FfmpegPath: "/opt/ffmpeg.exe" ExecutorTimeout: 10000 # 执行超时(ms) KernelAddr: "http://orginone.cn/orginone/resource/hub" ConnectionString: "..." # MongoDB连接字符串(Base64编码) KernelAuth: "..." # Kernel认证令牌 ``` > ⚠️ `ConnectionString` 为 Base64 编码的 MongoDB 连接字符串,请勿直接暴露明文。 ## 技术架构 ### 技术栈 | 类别 | 技术 | |------|------| | 框架 | ASP.NET Core 6.0 / C# 10.0 | | 数据库 | MongoDB 4.4+ (MongoDB.Driver 3.4.2) | | 实时通信 | SignalR (ASP.NET Core) | | 身份认证 | JWT Bearer Token (System.IdentityModel.Tokens.Jwt) | | 公式计算 | Jint 4.0.3 (JavaScript 引擎) | | 图片处理 | SixLabors.ImageSharp 2.1.3 | | 视频处理 | ffmpeg (外部进程调用) | | 部署 | Docker / Linux | | 文档 | Swashbuckle.AspNetCore 6.4.0 (Swagger) | ### 主要组件 | 组件 | 职责 | |------|------| | `Controllers/` | REST API 接入:对象/集合/文件/公共接口 | | `DataHub` | SignalR Hub,前端实时通信 | | `KernelHubWorker` | 后台服务,对外连接 Kernel 主服务 | | `DataProvider` | 中央调度器:数据访问/钩子触发/实体完善 | | `Services/` | 业务服务:折旧/加解锁/字段转换/任务指派 | | `Loaders/` | 查询引擎:DevExtreme DSL → MongoDB 聚合管道 | | `MongoStorage` | MongoDB 客户端封装,按组织分库 | | `BucketManager` | 文件系统管理,按组织分目录隔离 | ## 开发贡献 ### 贡献流程 1. Fork 项目 2. 开发修改 3. 同步主项目更新 4. 提交 Pull Request 5. 等待审核 ### 开发组构成 - **贡献者 (Contributor)**:完成一次 PR 提交和合并 - **提交者 (Committer)**:完成至少 5 个 PR 的提交和合并,并得到 mentor 的邀请 - **维护者 (Maintainer)**:能长期维护项目,合并 PR 进入主分支 - **导师 (Mentor)**:指导项目发展方向 ### 本地开发 ```bash # 恢复依赖 dotnet restore # 启动开发服务器(支持热重载) dotnet watch run # 发布 dotnet publish -c Release -o publish ``` ## 参与方式 1. 访问 [体验地址](https://ocia.orginone.cn) 2. 注册账号后申请加入研发群组 3. Fork 项目进行开发 4. 提交 Pull Request ## 相关链接 - [奥集能官网](https://orginone.cn) - [体验地址](https://ocia.orginone.cn) - [GitHub 仓库](https://gitee.com/orginone/oiocns-data) - [系统架构设计文档](docs/architecture.md) ## 许可协议 本项目采用 [木兰宽松许可证,第 2 版](LICENSE) 许可协议。