项目简介
ImmersingLinker 是一款专为班级教学一体机设计的信息整合平台,旨在打破智教软件之间的数据孤岛,为智教软件与服务开发者提供统一、高效的数据管理体验。
作为本软件的开发者预览版,我们开放了核心 API 和 SDK,邀请开发者共同参与生态建设。
核心特性
班级信息管理
完整的班级数据 CRUD 能力,支持:
- 班级的创建、查询、修改、删除
- 学生信息管理(学号、姓名、性别)
- 灵活的扩展属性系统 - 支持按应用维度存储自定义数据
- 分组规则管理 - 支持多分组策略和小组划分
// 通过 SDK 快速访问班级数据
var client = new ClassServiceClient("5800");
var classes = await client.GetAllClassesAsync();
var students = await client.GetStudentsByClassGuidAsync(classGuid);
课程时间感知
与 ClassIsland 深度集成,提供:
- 当前课程信息(科目、时间状态、时间轴)
- 上下节课程查询
- 精确的课程/课间倒计时
- 当前课堂计划状态
自动化引擎
可扩展的触发器-规则-动作管道架构:
| 组件 | 说明 |
| Trigger | 事件触发器(URL 触发器已内置) |
| Rule | 条件规则(支持嵌套组合) |
| Action | 执行动作 |
{
"name": "课前自动准备",
"revertable": true,
"trigger": { "key": "url", "properties": { "tag": "prepare" } },
"actions": [
{ "key": "show-notifications", "properties": { "content": "即将上课" } }
]
}
技术架构
┌─────────────────────────────────────────────────────────┐
│ CLI (F#) │
│ 命令行交互界面 │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ SDK (C#) │
│ 面向开发者的信息获取客户端 │
│ ┌──────────────┬──────────────┬──────────────┐ │
│ │ ClassService │ LessonService│AutomationService │
│ └──────────────┴──────────────┴──────────────┘ │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ Server (ASP.NET) │
│ RESTful API 服务 │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ Core (C#) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Models │ │ Services │ │ Abstractions│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────┬───────────────────────────────┘
│
▼
┌───────────────────────┐
│ ClassIsland (IPC) │
│ 第三方集成 │
└───────────────────────┘
技术栈
| 技术 | 用途 |
| .NET 10.0 | 运行时框架 |
| ASP.NET Core | Web API 服务 |
| ClassIsland.Shared.IPC | ClassIsland 进程间通信 |
| Scalar | API 文档可视化 |
| System.CommandLine | CLI 命令解析 |
| xUnit | 单元测试 |
快速开始
1. 启动服务
dotnet run --project ImmersingLinker.Server
服务默认监听 http://localhost:5800
2. 使用 SDK
// 连接服务
var appClient = new AppServiceClient("5800");
var isConnected = await appClient.TestConnection();
// 获取班级列表
var classClient = new ClassServiceClient("5800");
var classes = await classClient.GetAllClassesAsync();
// 获取当前课程
var lessonClient = new LessonServiceClient("5800");
var currentSubject = await lessonClient.GetCurrentSubjectAsync();
3. CLI 工具
# 测试连接
ilinker-cli test-connection --port 5800
API 端点一览
班级管理 /class
| 方法 | 路径 | 说明 |
| GET | /class | 获取所有班级 |
| GET | /class/infos | 获取班级列表 |
| GET | /class/{guid} | 获取指定班级 |
| POST | /class | 创建班级 |
| PUT | /class/{guid} | 更新班级 |
| DELETE | /class/{guid} | 删除班级 |
学生管理 /class/{classGuid}/student
| 方法 | 路径 | 说明 |
| GET | /student | 获取所有学生 |
| GET | /student/{id} | 获取指定学生 |
| POST | /student | 添加学生 |
| PUT | /student/{id} | 更新学生 |
| DELETE | /student/{id} | 删除学生 |
自动化管理 /automation
| 方法 | 路径 | 说明 |
| GET | /automation | 获取所有计划 |
| GET | /automation/{guid} | 获取指定计划 |
| POST | /automation | 创建计划 |
| PUT | /automation/{guid} | 更新计划 |
| DELETE | /automation/{guid} | 删除计划 |
| POST | /automation/{guid}/trigger | 手动触发 |
开发者预览版说明
已包含功能
- 班级信息 CRUD 完整 API
- 学生信息管理
- 扩展属性系统(支持多应用隔离)
- 分组规则管理
- 课程时间感知(ClassIsland 集成)
- 自动化管道基础架构
- URL 触发器
- C# SDK 客户端
- F# CLI 工具
已知限制
- 数据存储仅支持本地文件系统
- 自动化动作类型有限,需扩展
- 设置系统未完全实现
- 仅提供 C#.NET 语言 SDK
- 暂无身份认证机制
- 文档和示例仍在完善中
参与贡献
我们欢迎开发者参与项目贡献:
- 提交 Issue 报告问题或建议
- 提交 Pull Request 贡献代码
项目地址
点击前往 GitHub 项目仓库
许可证
本项目采用 MIT 许可证开源。