Files
jiahong-doc/education/著作权相关.md
T
jiahong 00bd6eef13 up
2026-03-25 23:08:58 +08:00

2018 lines
73 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 互动课堂智能点阵笔系统 — 软件著作权规划
> **编制日期**2026 年 2 月 14 日
> **权利人**:深圳自然写科技有限公司
> **品牌**:自然写 / Writech
---
## 一、系统架构总览
互动课堂智能点阵笔系统由**终端应用层、网关与算力层、云服务层**三层架构组成,覆盖从笔端数据采集到云端智能分析的完整链路。
```
┌─────────────────────────────────────────────────────────────────┐
│ 云服务层(Cloud) │
│ ┌──────────┐ ┌────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 数据存储 │ │ AI识别 │ │ 学情分析 │ │ 教学资源管理中心 │ │
│ └──────────┘ └────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 网关与算力层(Gateway + Edge AI
│ ┌──────────────┐ ┌────────────────┐ ┌────────────────────┐ │
│ │ 教室网关设备 │ │ 协议转换与路由 │ │ 设备管理与固件升级 │ │
│ └──────────────┘ └────────────────┘ └────────────────────┘ │
│ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
│ │ 智能算力盒 │ │ 端侧AI推理 │ │ 离线识别与缓存 │ │
│ └────────────┘ └────────────┘ └────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 终端应用层(APP) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ ┌────────┐ │
│ │ 手机 │ │ 电视机 │ │ PC │ │ 智慧黑板 │ │ Pad │ │
│ └────────┘ └────────┘ └────────┘ └──────────┘ └────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ SDK(供第三方集成与客户化定制) │ │
│ └──────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 硬件设备层(Device) │
│ ┌────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 智能点阵笔 │ │ 点阵纸张 │ │ 充电底座 │ │ 网关硬件 │ │
│ └────────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
```plantuml
@startuml 系统架构总览
skinparam componentStyle rectangle
skinparam packageStyle frame
package "云服务层 (Cloud)" as Cloud #E8F5E9 {
[教学管理云平台] as CMP
[AI识别引擎] as AIE
[学情诊断系统] as LDS
[教学资源管理中心] as RMS
CMP -[hidden]right- AIE
AIE -[hidden]right- LDS
LDS -[hidden]right- RMS
}
package "网关与算力层 (Gateway Edge AI)" as Gateway #FFF3E0 {
[教室网关设备] as GW
[协议转换与路由] as PTR
[设备管理与固件升级] as DFU
[智能算力盒] as EB
[端侧AI推理] as EAI
[离线识别与缓存] as OFC
GW -[hidden]right- PTR
PTR -[hidden]right- DFU
EB -[hidden]right- EAI
EAI -[hidden]right- OFC
}
package "硬件设备层 (Device)" as Device #F3E5F5 {
[智能点阵笔] as Pen
[点阵纸张] as Paper
[充电底座] as Dock
[网关硬件] as GWH
Pen -[hidden]right- Paper
Paper -[hidden]right- Dock
Dock -[hidden]right- GWH
}
package "终端应用层 (APP)" as APP #E3F2FD {
[手机APP] as Phone
[电视APP] as TV
[PC APP] as PC
[智慧黑板APP] as Board
[Pad APP] as Pad
Phone -[hidden]right- TV
TV -[hidden]right- PC
PC -[hidden]right- Board
Board -[hidden]right- Pad
[SDK(供第三方集成与客户化定制)] as SDK
}
Device -up-> Gateway : BLE数据上传
Gateway -up-> Cloud : MQTT HTTPS
Cloud -right-> APP : REST API WebSocket
Gateway -right-> APP : 局域网推送
@enduml
```
---
## 二、软件著作权登记清单
根据系统架构,规划以下 **13 项**软件著作权登记:
### 2.1 登记清单总览
| 序号 | 软件全称 | 软件简称 | 版本 | 分类 |
|:----:|---------|---------|:----:|:----:|
| 1 | 自然写互动课堂教学管理云平台软件 | 自然写云平台 | V1.0 | 云服务 |
| 2 | 自然写手写识别与AI分析引擎软件 | 自然写AI引擎 | V1.0 | 云服务 |
| 3 | 自然写教学数据分析与学情诊断系统软件 | 自然写学情系统 | V1.0 | 云服务 |
| 4 | 自然写教室智能网关管理软件 | 自然写网关软件 | V1.0 | 网关 |
| 5 | 自然写教室智能算力盒边缘计算软件 | 自然写算力盒软件 | V1.0 | 边缘算力 |
| 6 | 自然写互动课堂手机端应用软件 | 自然写APP(手机版) | V1.0 | APP |
| 7 | 自然写互动课堂电视端应用软件 | 自然写APP(电视版) | V1.0 | APP |
| 8 | 自然写互动课堂PC端应用软件 | 自然写APPPC版) | V1.0 | APP |
| 9 | 自然写互动课堂智慧黑板端应用软件 | 自然写APP(黑板版) | V1.0 | APP |
| 10 | 自然写互动课堂平板端应用软件 | 自然写APP(Pad版) | V1.0 | APP |
| 11 | 自然写互动课堂应用开发SDK软件 | 自然写SDK | V1.0 | SDK |
| 12 | 自然写智能点阵笔嵌入式固件软件 | 自然写笔固件 | V1.0 | 固件 |
| 13 | 自然写教学资源管理与内容分发系统软件 | 自然写资源平台 | V1.0 | 云服务 |
### 2.2 分类统计
| 分类 | 数量 | 包含项 |
|------|:----:|-------|
| 云服务 | 4 项 | 云平台、AI引擎、学情系统、资源平台 |
| 网关 | 1 项 | 网关管理软件 |
| 边缘算力 | 1 项 | 智能算力盒边缘计算软件 |
| APP | 5 项 | 手机/电视/PC/智慧黑板/Pad 五端 |
| SDK | 1 项 | 应用开发SDK |
| 固件 | 1 项 | 点阵笔嵌入式固件 |
---
## 三、各软件著作权详细说明
### 3.1 云服务层
#### 1. 自然写互动课堂教学管理云平台软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂教学管理云平台软件 |
| **版本号** | V1.0 |
| **开发语言** | Java / Python / JavaScript |
| **运行环境** | Linux 服务器 / Docker 容器 |
| **软件用途** | 为互动课堂场景提供统一的教学管理、用户管理、设备管理、数据存储及业务调度服务 |
**功能模块:**
- 用户与权限管理(教师/学生/管理员/家长多角色)
- 班级与课程管理
- 设备注册与绑定管理(点阵笔、网关、终端设备)
- 笔迹数据接收与存储
- 作业/试卷发布与回收
- 教学过程数据记录
- 多终端消息推送与同步
- 系统运维监控与日志管理
- 开放API接口(供APP和SDK调用)
**技术架构:**
采用微服务架构,主要分为以下层次:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 接入层 | Nginx / Kong API Gateway | 负载均衡、限流、路由分发 |
| 服务层 | Spring BootJava/ FastAPIPython | 业务微服务,按领域拆分(用户/课堂/作业/设备/消息) |
| 消息层 | RabbitMQ / Kafka | 异步消息、事件驱动、笔迹数据流接收 |
| 缓存层 | Redis | 会话管理、热数据缓存、实时状态 |
| 存储层 | MySQL + MongoDB + OSS | 结构化数据 / 笔迹文档数据 / 文件对象存储 |
| 监控层 | Prometheus + Grafana + ELK | 服务监控、日志采集、告警 |
```plantuml
@startuml 云平台技术架构
skinparam componentStyle rectangle
package "接入层" as L1 #E8EAF6 {
[Nginx] as NG
[Kong API Gateway] as KG
NG -[hidden]right- KG
}
package "服务层(微服务)" as L2 #E3F2FD {
[用户服务] as US
[课堂服务] as CS
[作业服务] as AS
[设备服务] as DS
[消息服务] as MS
US -[hidden]right- CS
CS -[hidden]right- AS
AS -[hidden]right- DS
DS -[hidden]right- MS
}
package "消息层" as L3 #FFF3E0 {
[RabbitMQ] as RMQ
[Kafka] as KFK
RMQ -[hidden]right- KFK
}
package "缓存层" as L4 #FFFDE7 {
[Redis] as RDS
}
package "存储层" as L5 #E8F5E9 {
[MySQL] as SQL
[MongoDB] as MDB
[OSS对象存储] as OSS
SQL -[hidden]right- MDB
MDB -[hidden]right- OSS
}
package "监控层" as L6 #FCE4EC {
[Prometheus] as PM
[Grafana] as GF
[ELK] as ELK
PM -[hidden]right- GF
GF -[hidden]right- ELK
}
L1 -down-> L2
L2 -down-> L3
L2 -down-> L4
L3 -down-> L5
L4 -down-> L5
L2 -down-> L6
@enduml
```
**数据设计:**
核心数据表:
| 数据表 | 存储引擎 | 主要字段 | 说明 |
|-------|---------|---------|------|
| user | MySQL | id, role, name, school_id, phone | 用户主表(教师/学生/家长/管理员) |
| class | MySQL | id, name, grade, teacher_id, school_id | 班级信息 |
| device | MySQL | id, type, mac_addr, bindUser, status | 设备注册表(笔/网关/终端) |
| assignment | MySQL | id, class_id, title, type, deadline | 作业/试卷发布表 |
| stroke_data | MongoDB | student_id, assignment_id, strokes[], timestamp | 笔迹原始数据(JSON文档) |
| recognition_result | MongoDB | stroke_id, ocr_text, score, ai_feedback | AI识别与批改结果 |
| learning_record | MySQL | id, student_id, subject, score, date | 学习记录 |
| message | MySQL | id, from, to, type, content, read_status | 消息通知表 |
数据流向:`点阵笔 → 网关/算力盒 → Kafka消息队列 → 云平台数据接收服务 → MongoDB存储 → AI引擎处理 → 结果回写`
**接口设计:**
| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 用户登录 | POST | /api/v1/auth/login | JWT令牌签发 |
| 设备注册 | POST | /api/v1/device/register | 绑定笔/网关设备 |
| 发布作业 | POST | /api/v1/assignment/publish | 教师端发布作业 |
| 提交笔迹 | POST | /api/v1/stroke/upload | 批量上传笔迹数据 |
| 获取批改结果 | GET | /api/v1/result/{assignment_id} | 查询AI批改结果 |
| 学情报告 | GET | /api/v1/report/student/{id} | 学生学情报告 |
| 消息推送 | WebSocket | /ws/v1/notify | 实时消息通道 |
统一响应格式:`{"code": 200, "msg": "success", "data": {...}}`
**安全设计:**
- 身份认证:JWT Token + Refresh Token 双令牌机制,Token有效期2小时
- 权限控制:RBAC角色权限模型(管理员/教师/学生/家长四级权限)
- 数据传输:全链路 HTTPS/TLS 1.3 加密
- 数据存储:敏感字段(手机号、身份信息)AES-256加密存储
- 隐私保护:学生数据脱敏展示,符合《个人信息保护法》及《儿童个人信息网络保护规定》
- 接口安全:请求签名校验、频率限流、SQL注入/XSS防护
**部署架构:**
- 容器化部署:Docker + Kubernetes 集群编排
- 数据库:主从读写分离 + 定时备份
- 弹性扩缩:基于CPU/内存使用率自动扩容
- 多环境:开发 → 测试 → 预生产 → 生产四级环境隔离
- 灾备:数据库异地备份,服务多可用区部署
```plantuml
@startuml 云平台部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
node "可用区A" as AZA {
node "K8s集群" as K8SA {
[微服务Pod x N] as POD_A
}
database "MySQL主库" as MYSQL_M
database "MongoDB副本集" as MDB_A
}
node "可用区B" as AZB {
node "K8s集群" as K8SB {
[微服务Pod x N] as POD_B
}
database "MySQL从库" as MYSQL_S
database "MongoDB副本集" as MDB_B
}
cloud "CDN / 负载均衡" as LB
cloud "OSS对象存储" as OSS
storage "异地备份" as BACKUP
LB -down-> K8SA
LB -down-> K8SB
MYSQL_M -right-> MYSQL_S : 主从复制
MDB_A -right-> MDB_B : 副本同步
MYSQL_M -down-> BACKUP : 定时备份
POD_A -down-> MYSQL_M
POD_A -down-> MDB_A
POD_B -down-> MYSQL_S
POD_B -down-> MDB_B
POD_A --> OSS
@enduml
```
---
#### 2. 自然写手写识别与AI分析引擎软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写手写识别与AI分析引擎软件 |
| **版本号** | V1.0 |
| **开发语言** | Python / C++ |
| **运行环境** | Linux 服务器(GPU 加速) |
| **软件用途** | 对智能点阵笔采集的笔迹数据进行OCR识别、数学列式识别、笔顺分析及AI智能批改 |
**功能模块:**
- 中英文手写文字OCR识别(基于PaddleOCR
- 数学列式与公式识别
- 中文汉字笔顺识别与评分
- 书写质量评测(结构/间距/规范性)
- AI作文评分与批改
- 选择题/填空题/简答题自动批改
- 识别结果置信度评估
- 模型版本管理与热更新
- RESTful API / gRPC 服务接口
**技术架构:**
采用模型推理管道(Pipeline)架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 接口层 | FastAPI + gRPC | HTTP REST接口(轻量调用)+ gRPC(高性能流式传输) |
| 调度层 | Celery + Redis | 异步任务队列,按优先级调度识别请求 |
| 推理层 | PaddleOCR / PyTorch / ONNX Runtime | OCR引擎 + 数学识别 + 笔顺模型 + 作文评分模型 |
| GPU管理 | NVIDIA Triton Inference Server | 多模型并发推理,GPU资源池化调度 |
| 模型仓库 | MinIO + MLflow | 模型版本管理、A/B测试、灰度发布 |
```plantuml
@startuml AI引擎技术架构
skinparam componentStyle rectangle
package "接口层" as IL #E8EAF6 {
[FastAPI REST] as REST
[gRPC Server] as GRPC
REST -[hidden]right- GRPC
}
package "调度层" as SL #FFF3E0 {
[Celery任务队列] as CEL
[Redis Broker] as RB
CEL -right-> RB
}
package "推理层" as INF #E3F2FD {
[PaddleOCR] as OCR
[PyTorch数学识别] as MATH
[笔顺分析模型] as STROKE
[作文评分模型] as ESSAY
OCR -[hidden]right- MATH
MATH -[hidden]right- STROKE
STROKE -[hidden]right- ESSAY
}
package "GPU管理" as GPU #E8F5E9 {
[NVIDIA Triton\nInference Server] as TRITON
}
package "模型仓库" as MR #F3E5F5 {
[MinIO] as MINIO
[MLflow] as MLF
MINIO -[hidden]right- MLF
}
IL -down-> SL
SL -down-> INF
INF -down-> GPU
GPU --> MR : 模型加载
@enduml
```
推理管道流程:`笔迹坐标 → 预处理(归一化/去噪) → 笔画分割 → 模型推理(OCR/数学/笔顺) → 后处理(置信度过滤/结果合并) → 结果输出`
**数据设计:**
| 数据结构 | 格式 | 说明 |
|---------|------|------|
| 笔迹输入 | JSON | `{strokes: [{x, y, pressure, timestamp}], page_id, pen_id}` |
| OCR结果 | JSON | `{text, confidence, bbox: [x1,y1,x2,y2], char_details[]}` |
| 数学识别结果 | JSON | `{latex, result, is_correct, steps[]}` |
| 笔顺评分 | JSON | `{char, stroke_order[], correct_order[], score, errors[]}` |
| 作文评分 | JSON | `{total_score, dimensions: {structure, grammar, content, rhetoric}}` |
| 模型元数据 | MySQL | 模型名称、版本、精度指标、部署状态、更新时间 |
**接口设计:**
| 接口 | 协议 | 路径/方法 | 说明 |
|------|------|---------|------|
| 文字识别 | REST | POST /api/v1/ocr/recognize | 手写文字OCR,返回识别文本 |
| 数学识别 | REST | POST /api/v1/math/recognize | 数学列式/公式识别 |
| 笔顺评分 | REST | POST /api/v1/stroke-order/evaluate | 笔顺正确性评分 |
| 书写质量评测 | REST | POST /api/v1/writing/quality | 书写规范性评分 |
| 作文批改 | REST | POST /api/v1/essay/review | AI作文评分与批改建议 |
| 批量识别 | gRPC | RecognitionService.BatchRecognize | 高性能批量识别(流式) |
| 模型状态 | REST | GET /api/v1/model/status | 查询各模型加载状态与版本 |
**安全设计:**
- 服务鉴权:内部服务间 mTLS 双向认证
- 请求校验:输入数据格式校验与大小限制(防恶意攻击)
- 模型保护:模型文件加密存储,推理时内存解密加载
- 数据隔离:学生笔迹数据处理完毕后不在推理服务中持久化
- 审计日志:所有识别请求记录调用方、时间、模型版本
**部署架构:**
- GPU集群:NVIDIA T4/A10 GPU服务器,Triton Inference Server管理
- 弹性扩缩:根据识别请求队列深度自动扩容GPU Pod
- 模型热更新:新模型通过灰度发布逐步替换,支持秒级回滚
- 监控:推理延迟P99、GPU利用率、模型准确率实时监控
```plantuml
@startuml AI引擎部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
node "GPU服务器集群" as GPUC {
node "GPU Node 1" as GN1 {
[Triton Server] as T1
[T4 A10 GPU] as G1
}
node "GPU Node N" as GNN {
[Triton Server] as TN
[T4 A10 GPU] as GN
}
}
node "调度节点" as SCH {
[Celery Worker] as CW
[Redis Queue] as RQ
}
storage "模型仓库\n(MinIO+MLflow)" as MODEL
cloud "API Gateway" as API
API -down-> SCH : 识别请求
SCH -down-> GPUC : 分发推理任务
MODEL -left-> GPUC : 模型版本下发
@enduml
```
---
#### 3. 自然写教学数据分析与学情诊断系统软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写教学数据分析与学情诊断系统软件 |
| **版本号** | V1.0 |
| **开发语言** | Python / Java |
| **运行环境** | Linux 服务器 |
| **软件用途** | 对学生书写及答题数据进行大数据分析,生成学情诊断报告,辅助教学决策 |
**功能模块:**
- 学生个人学情画像(知识点掌握度、薄弱环节)
- 班级/年级学情统计与对比
- 作业/考试成绩分析与趋势报告
- 书写能力成长轨迹
- 错题归因与知识图谱关联
- 教学效果评估
- 可视化报表与数据导出
- 家长端学情推送
**技术架构:**
采用数据仓库 + 分析引擎架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 数据采集层 | Kafka + Flink | 实时数据流采集与ETL处理 |
| 数据仓库层 | ClickHouse + MySQL | 分析型存储(OLAP + 业务数据(OLTP |
| 分析引擎层 | PythonPandas/Scikit-learn | 学情诊断算法、知识图谱推理、趋势预测 |
| 知识图谱层 | Neo4j | 知识点关联关系、错题归因推理 |
| 可视化层 | ECharts + 自研报表引擎 | 多维度数据可视化 |
| 推送层 | WebSocket + 消息队列 | 实时学情推送至各终端 |
```plantuml
@startuml 学情系统技术架构
skinparam componentStyle rectangle
package "数据采集层" as DC #E8EAF6 {
[Kafka] as KFK
[Flink ETL] as FLINK
KFK -right-> FLINK
}
package "数据仓库层" as DW #E3F2FD {
[ClickHouse\n(OLAP分析)] as CH
[MySQL\n(OLTP业务)] as SQL
CH -[hidden]right- SQL
}
package "分析引擎层" as AE #FFF3E0 {
[学情诊断算法\n(Pandas Scikit learn)] as ALG
}
package "知识图谱层" as KG #E8F5E9 {
[Neo4j\n知识点关系图谱] as NEO
}
package "可视化层" as VIS #F3E5F5 {
[ECharts] as EC
[自研报表引擎] as RPT
EC -[hidden]right- RPT
}
package "推送层" as PUSH #FFFDE7 {
[WebSocket] as WS
[消息队列] as MQ
WS -[hidden]right- MQ
}
DC -right-> DW : ETL写入
DW -down-> AE : 数据查询
AE -right-> KG : 错题归因
AE -down-> VIS : 分析结果
VIS -left-> PUSH : 报告推送
@enduml
```
**数据设计:**
核心数据模型:
| 数据表/集合 | 存储 | 说明 |
|-----------|------|------|
| knowledge_point | Neo4j | 知识点节点(科目/年级/章节/知识点层级) |
| knowledge_relation | Neo4j | 知识点前驱/后继/包含关系边 |
| student_profile | ClickHouse | 学生画像宽表(知识掌握度向量) |
| exam_analysis | ClickHouse | 考试/作业分析结果(得分率、区分度、难度系数) |
| error_record | MySQL | 错题记录(题目ID、错因分类、知识点关联) |
| writing_growth | ClickHouse | 书写能力时序数据(笔顺正确率、规范性评分) |
| report_snapshot | MongoDB | 生成的报告快照(PDF/JSON |
ETL流程:`原始笔迹/批改数据 → Kafka → Flink实时计算 → 聚合指标写入ClickHouse → 定时生成诊断报告`
**接口设计:**
| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 学生画像 | GET | /api/v1/profile/student/{id} | 获取学生知识掌握度画像 |
| 班级学情 | GET | /api/v1/report/class/{id} | 班级学情统计(平均/分布/对比) |
| 错题分析 | GET | /api/v1/error/analysis/{student_id} | 错题归因与知识薄弱点 |
| 成长轨迹 | GET | /api/v1/growth/{student_id} | 书写能力成长时序数据 |
| 报告导出 | POST | /api/v1/report/export | 生成PDF报告并返回下载链接 |
| 家长推送 | POST | /api/v1/push/parent | 触发学情推送至家长端 |
**安全设计:**
- 数据脱敏:报表展示中学生姓名可选脱敏,仅管理员可查看完整信息
- 数据权限:教师仅可查看本班数据,家长仅可查看本人子女数据
- 数据留存:学生数据留存策略符合教育部门数据管理规范
- 传输加密:内部服务间数据传输 TLS 加密
- 审计追踪:数据查询与导出操作全程记录审计日志
**部署架构:**
- ClickHouse 集群:分片 + 副本,支撑大规模分析查询
- Flink 集群:Standalone / YARN 模式,实时流处理
- Neo4j:主从备份,知识图谱数据定期快照
- 定时任务:每日/每周自动生成学情诊断报告
```plantuml
@startuml 学情系统部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
queue "Kafka" as KFK
node "Flink集群" as FLC {
[JobManager] as JM
[TaskManager x N] as TM
}
node "ClickHouse集群" as CHC {
[分片1 副本] as S1
[分片N 副本] as SN
}
node "Neo4j" as NEO {
[主节点] as NM
[从节点(备份)] as NS
NM -right-> NS : 数据复制
}
node "定时调度\n(CronJob)" as CRON
KFK -down-> FLC : 数据流
FLC -down-> CHC : 聚合写入
CHC -down-> CRON : 定时报告生成
NEO -down-> CRON : 错题归因查询
@enduml
```
---
#### 13. 自然写教学资源管理与内容分发系统软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写教学资源管理与内容分发系统软件 |
| **版本号** | V1.0 |
| **开发语言** | Java / JavaScript |
| **运行环境** | Linux 服务器 / CDN |
| **软件用途** | 管理和分发教学课件、字帖模板、试卷、点阵码资源等教学内容 |
**功能模块:**
- 课件/字帖/试卷模板管理
- 点阵码资源生成与管理
- 内容审核与版本控制
- 多终端资源分发与缓存
- 教师自定义内容上传
- 按年级/学科/出版社分类检索
- CDN 加速分发
- 资源使用统计
**技术架构:**
采用 CMS 内容管理 + CDN 分发架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 内容管理层 | Spring Boot + Vue.js | 后台管理系统(上传/审核/编辑/分类) |
| 存储层 | 对象存储(OSS/MinIO + MySQL | 文件资源存储 + 元数据管理 |
| 生成层 | Python(点阵码生成引擎) | 点阵码图案生成、PDF合成、字帖排版 |
| 分发层 | CDN + 边缘缓存 | 全国节点加速分发教学资源 |
| 检索层 | Elasticsearch | 按年级/学科/出版社/关键词全文检索 |
```plantuml
@startuml 资源平台技术架构
skinparam componentStyle rectangle
package "内容管理层" as CMS #E8EAF6 {
[Spring Boot后端] as SB
[Vue.js管理前端] as VUE
SB -right-> VUE
}
package "存储层" as STORE #E3F2FD {
[OSS MinIO\n对象存储] as OSS
[MySQL\n元数据] as SQL
OSS -[hidden]right- SQL
}
package "生成层" as GEN #FFF3E0 {
[点阵码生成引擎\n(Python)] as DOT
[PDF合成 字帖排版] as PDF
DOT -[hidden]right- PDF
}
package "分发层" as CDN_L #E8F5E9 {
[CDN加速] as CDN
[边缘缓存] as EDGE
CDN -[hidden]right- EDGE
}
package "检索层" as SEARCH #F3E5F5 {
[Elasticsearch] as ES
}
CMS -down-> STORE : 上传/审核
CMS -down-> GEN : 点阵码生成
STORE -down-> CDN_L : 资源分发
CMS -right-> SEARCH : 索引建立
@enduml
```
**数据设计:**
| 数据表 | 存储 | 说明 |
|-------|------|------|
| resource | MySQL | 资源元数据(名称、类型、学科、年级、出版社、版本号) |
| resource_file | OSS | 资源文件本体(PDF/图片/模板/点阵码文件) |
| dot_pattern | MySQL + OSS | 点阵码资源(码ID范围、绑定页面、生成参数) |
| audit_record | MySQL | 审核记录(审核人、状态、意见、时间) |
| usage_stat | ClickHouse | 资源使用统计(下载量、使用次数、终端分布) |
| category | MySQL | 分类目录树(年级/学科/出版社三级分类) |
**接口设计:**
| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 资源检索 | GET | /api/v1/resource/search | 按条件检索资源(分类/关键词) |
| 资源下载 | GET | /api/v1/resource/download/{id} | 获取资源下载地址(CDN签名URL) |
| 资源上传 | POST | /api/v1/resource/upload | 教师上传自定义资源 |
| 点阵码生成 | POST | /api/v1/dotcode/generate | 生成点阵码资源包 |
| 内容审核 | PUT | /api/v1/resource/audit/{id} | 审核通过/驳回 |
| 版本管理 | GET | /api/v1/resource/versions/{id} | 获取资源历史版本 |
| 使用统计 | GET | /api/v1/stat/resource/{id} | 查询资源使用数据 |
**安全设计:**
- 内容审核:教师上传资源需管理员审核通过后方可分发
- 防盗链:CDN资源通过 Referer 校验 + 签名URL 防止非法访问
- 版权保护:资源文件添加数字水印(水印包含学校/教师标识)
- 权限控制:资源按学校/区域授权,教师仅可访问本校已授权资源
- 点阵码安全:点阵码ID范围全局唯一分配,防冲突
**部署架构:**
- OSS对象存储:多副本冗余,99.99%数据持久性
- CDN:全国多节点就近接入,资源预热机制
- Elasticsearch:集群部署,索引按学科/年级分片
- 定时任务:CDN缓存刷新、资源使用报表生成
```plantuml
@startuml 资源平台部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
cloud "CDN网络" as CDN {
[华东节点] as N1
[华南节点] as N2
[华北节点] as N3
}
node "应用服务器" as APP {
[Spring Boot\nCMS服务] as CMS
[Python\n点阵码引擎] as DOT
}
database "OSS对象存储\n(多副本冗余)" as OSS
database "MySQL" as SQL
database "Elasticsearch\n集群" as ES
APP -down-> SQL : 元数据
APP -down-> OSS : 文件存储
APP -right-> ES : 全文索引
OSS -up-> CDN : 资源预热分发
@enduml
```
---
### 3.2 网关与边缘算力层
#### 4. 自然写教室智能网关管理软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写教室智能网关管理软件 |
| **版本号** | V1.0 |
| **开发语言** | C / C++ / Python |
| **运行环境** | 嵌入式 Linux(网关硬件设备) |
| **软件用途** | 运行于教室网关设备,负责蓝牙/WiFi接收点阵笔数据,协议转换后上传至云端,并管理教室内设备互联 |
**功能模块:**
- 蓝牙多笔同时连接管理(支持 40+ 支笔并发)
- 笔迹数据实时接收与缓存
- 通信协议转换(BLE → TCP/MQTT
- 数据压缩与加密上传
- 断网离线缓存与自动续传
- 设备发现与自动配对
- 固件远程升级(OTA
- 设备状态上报与心跳监测
- 本地数据临时存储
- 与云平台双向通信
**技术架构:**
采用嵌入式分层架构,运行于网关硬件设备:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 硬件抽象层(HAL) | C | 蓝牙芯片/WiFi模块/GPIO/存储驱动 |
| 通信协议层 | BlueZBLE+ lwIP | BLE 5.0 多连接管理 + TCP/IP网络通信 |
| 消息中间层 | Eclipse MosquittoMQTT Client | 与云端MQTT Broker双向通信 |
| 业务逻辑层 | C++ / Python | 数据缓存调度、设备管理、协议转换 |
| 管理层 | 轻量Web Serverlighttpd | 本地Web配置页面、状态查询 |
```plantuml
@startuml 网关技术架构
skinparam componentStyle rectangle
package "管理层" as MGR #F3E5F5 {
[lighttpd\n本地Web管理] as WEB
}
package "业务逻辑层" as BIZ #FFF3E0 {
[数据缓存调度] as CACHE
[设备管理] as DEV
[协议转换] as CONV
CACHE -[hidden]right- DEV
DEV -[hidden]right- CONV
}
package "消息中间层" as MSG #E8F5E9 {
[MQTT Client\n(Mosquitto)] as MQTT
}
package "通信协议层" as COM #E3F2FD {
[BlueZ (BLE 5.0)\n多连接管理] as BLE
[lwIP\nTCP IP通信] as NET
BLE -[hidden]right- NET
}
package "硬件抽象层 (HAL)" as HAL #E8EAF6 {
[蓝牙芯片驱动] as BT
[WiFi模块驱动] as WIFI
[GPIO 存储驱动] as GPIO
BT -[hidden]right- WIFI
WIFI -[hidden]right- GPIO
}
HAL -up-> COM
COM -up-> BIZ
BIZ -up-> MSG : MQTT上报
BIZ -up-> MGR
@enduml
```
数据流:`点阵笔(BLE) → BLE协议栈接收 → 数据解包 → 环形缓冲区 → MQTT编码 → 云平台`
**数据设计:**
| 数据结构 | 存储方式 | 说明 |
|---------|---------|------|
| 笔迹缓冲区 | 内存环形Buffer | 实时笔迹数据循环缓冲(容量2MB) |
| 离线缓存队列 | SQLite / Flash文件 | 断网时笔迹数据持久化队列(FIFO,容量64MB) |
| 设备列表 | SQLite | 已配对笔设备MAC地址、名称、电量、最后连接时间 |
| 配置数据 | JSON配置文件 | 网关WiFi配置、MQTT服务器地址、心跳间隔等 |
| OTA包缓存 | Flash分区 | 固件升级包双分区存储(A/B分区) |
| 日志文件 | 轮转日志(logrotate) | 运行日志、错误日志、通信日志 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 笔迹数据上报 | 网关→云端 | MQTT | Topic: `pen/{gateway_id}/stroke` |
| 设备状态上报 | 网关→云端 | MQTT | Topic: `gateway/{id}/status`(心跳/电量/在线笔数) |
| 远程指令下发 | 云端→网关 | MQTT | Topic: `gateway/{id}/command`(重启/配置更新/OTA |
| OTA固件下载 | 云端→网关 | HTTPS | 下载固件升级包到本地Flash |
| BLE笔连接 | 笔→网关 | BLE GATT | 自定义Service UUID,笔迹数据通过Notify方式传输 |
| 本地管理页面 | 用户→网关 | HTTP | `http://192.168.x.x:8080` 本地配置管理Web页面 |
**安全设计:**
- 通信加密:MQTT over TLS,云端通信全程加密
- BLE配对:采用安全配对模式(Numeric Comparison),防止非法笔连接
- OTA安全:固件包RSA签名校验,防止恶意固件注入
- 设备认证:网关首次上线需通过设备证书(X.509)认证
- 数据完整性:离线缓存数据CRC校验,防止Flash损坏导致数据丢失
**部署架构:**
- 每间教室部署1台网关设备
- 支持40+支点阵笔同时连接
- 固件A/B双分区:升级失败自动回滚至上一版本
- 看门狗机制:软件异常时自动重启恢复
```plantuml
@startuml 网关部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
node "教室" as ROOM {
node "网关设备" as GW {
[App分区A\n(当前运行)] as PA
[App分区B\n(备份 升级)] as PB
[Bootloader] as BL
[NVS配置] as NVS
}
collections "点阵笔 x 40" as PENS
}
cloud "云平台" as CLOUD {
[MQTT Broker] as MQTT
[OTA服务] as OTA
}
PENS -up-> GW : BLE连接
GW -up-> CLOUD : MQTT over TLS
OTA -down-> GW : 固件下载(HTTPS)
PA .right. PB : A/B分区切换
@enduml
```
---
#### 5. 自然写教室智能算力盒边缘计算软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写教室智能算力盒边缘计算软件 |
| **版本号** | V1.0 |
| **开发语言** | C++ / Python |
| **运行环境** | 嵌入式 LinuxARM/x86 算力盒硬件,搭载 NPU/GPU 加速模块) |
| **软件用途** | 运行于教室智能算力盒设备,在本地完成手写识别、笔顺分析等AI推理任务,降低云端依赖,实现低延迟实时响应与离线可用 |
**功能模块:**
- 端侧AI推理引擎(手写OCR、数学列式识别、笔顺分析本地运行)
- 轻量化模型管理(模型加载、版本切换、云端同步更新)
- 笔迹数据本地预处理(去噪、坐标归一化、笔画分割)
- 实时识别结果分发(将识别结果推送至教室内各终端)
- 离线模式支持(断网环境下完整AI识别能力不降级)
- 本地数据缓存与批量上传(网络恢复后自动同步至云端)
- 与教室网关协同工作(接收网关转发的笔迹数据流)
- 多教室算力盒集群管理(校级统一调度与负载均衡)
- NPU/GPU 硬件加速调度
- 设备运行状态监控与远程运维
- OTA 固件与模型远程升级
**技术架构:**
采用边缘AI推理分层架构,运行于ARM/x86算力盒硬件:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 硬件加速层 | RKNN(瑞芯微)/ CUDANVIDIA / OpenCL | NPU/GPU硬件推理加速驱动 |
| 推理框架层 | ONNX Runtime / TensorRT / PaddleLite | 模型加载与推理执行引擎 |
| 模型管理层 | 自研(C++ / Python) | 模型版本管理、动态加载、量化压缩、云端同步 |
| 业务服务层 | Python / C++ | 笔迹预处理、推理调度、结果分发、离线缓存 |
| 通信层 | gRPC + MQTT | 与网关数据交互(gRPC) + 与云端状态同步(MQTT |
| 管理层 | Flask + SQLite | 本地管理API、集群管理、状态上报 |
```plantuml
@startuml 算力盒技术架构
skinparam componentStyle rectangle
package "管理层" as MGR #F3E5F5 {
[Flask管理API] as FLASK
[SQLite] as SQLT
FLASK -right-> SQLT
}
package "通信层" as COM #FFFDE7 {
[gRPC\n(网关数据交互)] as GRPC
[MQTT\n(云端状态同步)] as MQTT
GRPC -[hidden]right- MQTT
}
package "业务服务层" as BIZ #FFF3E0 {
[笔迹预处理] as PRE
[推理调度] as SCH
[结果分发] as DIST
[离线缓存] as OFC
PRE -[hidden]right- SCH
SCH -[hidden]right- DIST
DIST -[hidden]right- OFC
}
package "模型管理层" as MODEL #E3F2FD {
[模型版本管理] as VER
[动态加载 量化] as LOAD
[云端同步更新] as SYNC
VER -[hidden]right- LOAD
LOAD -[hidden]right- SYNC
}
package "推理框架层" as INF #E8F5E9 {
[ONNX Runtime] as ONNX
[TensorRT] as TRT
[PaddleLite] as PL
ONNX -[hidden]right- TRT
TRT -[hidden]right- PL
}
package "硬件加速层" as HW #E8EAF6 {
[RKNN (NPU)] as NPU
[CUDA (GPU)] as CUDA
[OpenCL] as OCL
NPU -[hidden]right- CUDA
CUDA -[hidden]right- OCL
}
COM -down-> BIZ
BIZ -down-> MODEL
MODEL -down-> INF
INF -down-> HW
BIZ -right-> MGR
@enduml
```
推理流程:`网关笔迹数据(gRPC) → 数据预处理(去噪/归一化/笔画分割) → NPU/GPU推理 → 后处理 → 结果推送各终端`
**数据设计:**
| 数据结构 | 存储方式 | 说明 |
|---------|---------|------|
| 推理模型文件 | 本地Flash/opt/models/ | ONNX/TRT模型文件(OCR/数学/笔顺各一套) |
| 模型元信息 | SQLite | 模型名称、版本、大小、精度指标、启用状态 |
| 推理任务队列 | 内存优先级队列 | 待推理任务(按实时/批量优先级排序) |
| 笔迹预处理缓存 | 内存 + tmpfs | 预处理后的笔迹张量数据(推理完即释放) |
| 离线结果缓存 | SQLite | 断网期间推理结果暂存,恢复后上传云端 |
| 运行日志 | 轮转日志文件 | 推理耗时、GPU利用率、错误记录 |
| OTA包 | Flash A/B分区 | 固件升级包 + 模型升级包分区存储 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 笔迹数据接收 | 网关→算力盒 | gRPC | `InferenceService.ProcessStroke` 流式接收笔迹 |
| 识别结果推送 | 算力盒→终端 | gRPC/WebSocket | 将识别结果实时推送至黑板/PC/Pad |
| 模型同步 | 云端→算力盒 | HTTPS | 检查并下载新版本模型文件 |
| 状态上报 | 算力盒→云端 | MQTT | Topic: `edgebox/{id}/status`GPU利用率/温度/推理QPS |
| 远程管理 | 云端→算力盒 | MQTT | Topic: `edgebox/{id}/command`(重启/模型切换/OTA |
| 集群管理 | 算力盒↔算力盒 | mDNS + gRPC | 多台算力盒校级发现与负载均衡调度 |
**安全设计:**
- 模型加密:模型文件AES-256加密存储,推理时内存解密加载
- 通信安全:gRPC 启用 mTLS 双向认证,MQTT over TLS
- OTA安全:升级包RSA签名 + SHA-256校验,防篡改
- 运行隔离:推理进程与管理进程独立沙箱,异常不互相影响
- 物理安全:设备唯一序列号绑定,非授权设备无法接入网络
**部署架构:**
- 每间教室部署1台算力盒(可选,与网关配合使用)
- 或按年级/楼层部署1台算力盒服务多间教室
- 支持NPU推理延迟 < 200ms(单次OCR识别)
- A/B双分区升级:固件与模型分别独立升级通道
- 看门狗 + 心跳机制:异常自动重启,云端监控报警
```plantuml
@startuml 算力盒部署架构
skinparam componentStyle rectangle
skinparam nodeStyle rectangle
node "教室A" as RA {
node "算力盒" as EB_A {
[AI推理引擎] as AI_A
[NPU GPU] as GPU_A
}
node "网关" as GW_A
collections "点阵笔" as PEN_A
}
node "教室B" as RB {
node "算力盒" as EB_B {
[AI推理引擎] as AI_B
[NPU GPU] as GPU_B
}
node "网关" as GW_B
}
cloud "云平台" as CLOUD {
[模型仓库] as MODEL
[MQTT Broker] as MQTT
[OTA服务] as OTA
}
PEN_A -up-> GW_A : BLE
GW_A -right-> EB_A : gRPC笔迹流
EB_A -up-> CLOUD : MQTT状态上报
MODEL -down-> EB_A : 模型同步(HTTPS)
EB_A <-right-> EB_B : mDNS+gRPC\n集群调度
@enduml
```
---
### 3.3 终端应用层
#### 6. 自然写互动课堂手机端应用软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂手机端应用软件 |
| **版本号** | V1.0 |
| **开发语言** | Kotlin / Swift / Flutter |
| **运行环境** | Android 8.0+ / iOS 14.0+ |
| **软件用途** | 面向教师和家长的手机端应用,提供教学管理、作业查看、学情报告、笔迹回放等功能 |
**功能模块:**
- 教师端:课堂互动控制、实时收笔、作业布置与批改
- 家长端:学情报告查看、作业完成通知、书写回放
- 蓝牙连接点阵笔(教师端移动教学场景)
- 拍照搜题与答案对比
- 消息通知与家校沟通
- 学习数据统计图表
**技术架构:**
采用跨平台 MVVM 架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| UI层 | Flutter Widget / Native UI | 界面渲染与交互(教师端/家长端双入口) |
| 状态管理层 | Bloc / Provider | MVVM模式,响应式数据绑定 |
| 业务逻辑层 | Dart / Kotlin / Swift | 教学管理、作业查看、蓝牙通信等核心业务 |
| 数据层 | SQLite + SharedPreferences | 本地数据缓存、用户配置存储 |
| 网络层 | Dio / Retrofit | HTTP API调用 + WebSocket实时通信 |
| 蓝牙层 | flutter_blue / CoreBluetooth | BLE连接点阵笔(教师移动教学场景) |
```plantuml
@startuml 手机端技术架构
skinparam componentStyle rectangle
package "UI层" as UI #E8EAF6 {
[Flutter Widget\n(教师端 家长端)] as FW
}
package "状态管理层" as SM #E3F2FD {
[Bloc Provider\nMVVM响应式] as BLC
}
package "业务逻辑层" as BIZ #FFF3E0 {
[教学管理] as TM
[作业查看] as HW
[蓝牙通信] as BT
TM -[hidden]right- HW
HW -[hidden]right- BT
}
package "数据层" as DATA #E8F5E9 {
[SQLite] as SQL
[SharedPreferences] as SP
SQL -[hidden]right- SP
}
package "网络层" as NET #FFFDE7 {
[Dio HTTP] as DIO
[WebSocket] as WS
DIO -[hidden]right- WS
}
package "蓝牙层" as BLE #F3E5F5 {
[flutter_blue\nCoreBluetooth] as FB
}
UI -down-> SM
SM -down-> BIZ
BIZ -down-> DATA
BIZ -down-> NET
BIZ -down-> BLE
@enduml
```
**数据设计:**
| 数据 | 存储方式 | 说明 |
|------|---------|------|
| 用户信息 | SQLite + 加密存储 | 登录凭证、角色信息、绑定设备 |
| 作业列表 | SQLite | 作业/试卷缓存(支持离线查看) |
| 笔迹数据 | SQLite + 本地文件 | 蓝牙接收的笔迹数据(教师端) |
| 学情报告 | SQLite | 学生学情报告缓存 |
| 消息记录 | SQLite | 家校沟通消息本地存储 |
| 应用配置 | SharedPreferences | 推送开关、语言设置、主题偏好 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 云平台API | APP→云端 | HTTPS REST | 登录/作业/学情/消息等全部业务API |
| 实时通知 | 云端→APP | WebSocket | 新作业、批改完成、消息通知 |
| 推送服务 | 云端→APP | APNs / FCM | 系统级推送(APP后台时) |
| BLE通信 | APP↔点阵笔 | BLE GATT | 教师端蓝牙连接笔进行移动教学 |
**安全设计:**
- 身份认证:OAuth 2.0 + JWT,支持手机号/微信/钉钉一键登录
- 本地加密:Token和敏感数据使用 KeychainiOS/ KeyStoreAndroid)加密存储
- 传输安全:全链路 HTTPS,证书锁定(Certificate Pinning
- 隐私合规:遵循《APP收集使用个人信息最小必要评估规范》,敏感权限按需申请
- 儿童保护:学生相关数据展示遵循《儿童个人信息网络保护规定》
---
#### 7. 自然写互动课堂电视端应用软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂电视端应用软件 |
| **版本号** | V1.0 |
| **开发语言** | Java / Kotlin |
| **运行环境** | Android TV / 智能电视操作系统 |
| **软件用途** | 运行于家庭电视或教室电视,大屏展示学生书写过程、课堂互动内容及学情报告 |
**功能模块:**
- 笔迹实时大屏投射与回放
- 多学生书写同屏对比展示
- 课堂互动答题结果大屏展示
- 字帖临摹大屏辅助(放大范字+实时书写对比)
- 学情报告大屏浏览
- 遥控器/语音操控适配
- WiFi 局域网设备发现与连接
**技术架构:**
采用 Android TV Leanback 架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| UI层 | Leanback Library + 自定义View | 适配遥控器D-Pad焦点导航的TV界面 |
| 笔迹渲染层 | Canvas / OpenGL ES | 大屏实时笔迹渲染(60fps低延迟) |
| 业务逻辑层 | Kotlin + ViewModel | MVVM架构,课堂展示/互动/学情浏览 |
| 数据层 | Room(SQLite | 课堂数据本地缓存 |
| 网络层 | OkHttp + WebSocket | 云平台API调用 + 实时笔迹数据接收 |
| 发现层 | mDNS / SSDP | 局域网内网关与终端设备自动发现 |
```plantuml
@startuml 电视端技术架构
skinparam componentStyle rectangle
package "UI层" as UI #E8EAF6 {
[Leanback Library\n(D-Pad焦点导航)] as LB
[自定义View] as CV
LB -[hidden]right- CV
}
package "笔迹渲染层" as RENDER #FCE4EC {
[Canvas OpenGL ES\n(60fps大屏渲染)] as GL
}
package "业务逻辑层" as BIZ #FFF3E0 {
[Kotlin ViewModel\nMVVM架构] as VM
}
package "数据层" as DATA #E8F5E9 {
[Room (SQLite)] as ROOM
}
package "网络层" as NET #E3F2FD {
[OkHttp] as OK
[WebSocket] as WS
OK -[hidden]right- WS
}
package "发现层" as DISC #F3E5F5 {
[mDNS SSDP] as MDNS
}
UI -down-> BIZ
RENDER -down-> BIZ
BIZ -down-> DATA
BIZ -down-> NET
BIZ -down-> DISC
@enduml
```
**数据设计:**
| 数据 | 存储方式 | 说明 |
|------|---------|------|
| 课堂笔迹缓存 | 内存 + Room | 当前课堂的实时笔迹数据 |
| 课件资源 | 本地文件缓存 | 预加载的课件/字帖图片资源 |
| 学情报告 | Room | 大屏浏览用的学情数据缓存 |
| 设备配置 | SharedPreferences | WiFi连接、网关绑定、显示设置 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 笔迹数据流 | 网关/算力盒→TV | WebSocket | 接收实时笔迹坐标进行大屏渲染 |
| 云平台API | TV→云端 | HTTPS | 获取课堂信息、学情报告 |
| 设备发现 | TV↔网关 | mDNS | 自动发现同一局域网内的网关设备 |
| 遥控指令 | 遥控器→TV | IR / BLE | 遥控器按键映射为应用操作 |
| 投屏接收 | PC/手机→TV | Miracast / DLNA | 接收教师端投屏内容 |
**安全设计:**
- 自动登录:设备绑定后免密登录,Token安全存储于系统KeyStore
- 局域网隔离:仅接受同一教室网段内的连接请求
- 内容安全:大屏展示内容过滤敏感信息(学生个人隐私数据不展示)
- 防截屏:课堂内容播放时禁止系统截屏(FLAG_SECURE
---
#### 8. 自然写互动课堂PC端应用软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂PC端应用软件 |
| **版本号** | V1.0 |
| **开发语言** | Electron / C++ / JavaScript |
| **运行环境** | Windows 10+ / macOS 12+ |
| **软件用途** | 面向教师的PC端教学工具,提供备课、课堂授课、批改、数据管理等全流程功能 |
**功能模块:**
- 备课工具(课件制作、试卷编辑、字帖模板设计)
- 课堂授课模式(实时接收笔迹、互动答题、随机点名)
- 作业/试卷批改(AI辅助+人工复核)
- 学生笔迹回放与书写分析
- 班级学情数据管理与导出
- 点阵码内容编辑与打印
- USB/蓝牙连接点阵笔
- 投屏至大屏/智慧黑板
**技术架构:**
采用 Electron 跨平台桌面架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 主进程 | Electron Main ProcessNode.js | 窗口管理、系统API调用、文件操作、蓝牙/USB驱动 |
| 渲染进程 | Vue.js 3 + TypeScript | 界面渲染、状态管理(Pinia)、组件化UI |
| 笔迹渲染引擎 | Canvas 2D / WebGL + C++ Addon | 高性能笔迹渲染(支持压感/笔锋效果) |
| 数据层 | SQLitebetter-sqlite3 + IndexedDB | 本地课件/作业/笔迹数据持久化 |
| 网络层 | Axios + WebSocketws | 云平台API + 实时通信 |
| 设备层 | node-bluetooth / node-usb | USB有线 + BLE无线连接点阵笔 |
| 投屏层 | WebRTC / 自研投屏协议 | 屏幕镜像至大屏/智慧黑板 |
```plantuml
@startuml PC端技术架构
skinparam componentStyle rectangle
package "主进程 (NodeJS)" as MAIN #E8EAF6 {
[窗口管理] as WIN
[系统API] as SYS
[文件操作] as FILE
WIN -[hidden]right- SYS
SYS -[hidden]right- FILE
}
package "渲染进程" as RENDERER #E3F2FD {
[Vue3 TypeScript] as VUE
[Pinia状态管理] as PINIA
VUE -right-> PINIA
}
package "笔迹渲染引擎" as STROKE #FCE4EC {
[Canvas2D WebGL] as CANVAS
[Native Addon\n(压感笔锋)] as CPP
CANVAS -right-> CPP
}
package "数据层" as DATA #E8F5E9 {
[SQLite\n(better sqlite3)] as SQL
[IndexedDB] as IDB
SQL -[hidden]right- IDB
}
package "设备层" as DEV #FFF3E0 {
[BLE\n(node bluetooth)] as BLE
[USB HID\n(node usb)] as USB
BLE -[hidden]right- USB
}
package "网络层" as NET #FFFDE7 {
[Axios] as AX
[WebSocket] as WS
AX -[hidden]right- WS
}
package "投屏层" as CAST #F3E5F5 {
[WebRTC] as RTC
}
MAIN <--> RENDERER : IPC通信
RENDERER --> STROKE
RENDERER --> NET
MAIN --> DATA
MAIN -up-> DEV
MAIN -up-> CAST
@enduml
```
**数据设计:**
| 数据 | 存储方式 | 说明 |
|------|---------|------|
| 课件文件 | 本地文件系统 | 备课创建的课件/试卷/字帖(JSON + 资源文件) |
| 学生笔迹 | SQLite + 本地文件 | 收集的学生笔迹原始数据与渲染缓存 |
| 批改记录 | SQLite | AI批改结果 + 教师人工批改标注 |
| 班级数据 | SQLite | 班级/学生列表、成绩记录、学情缓存 |
| 点阵码映射 | SQLite | 点阵码ID与课件页面的对应关系 |
| 应用配置 | JSON文件 + electron-store | 用户偏好、窗口状态、设备连接记录 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 云平台API | PC→云端 | HTTPS | 全部业务API(登录/作业/学情/资源) |
| 实时同步 | 云端→PC | WebSocket | 笔迹实时流、课堂互动指令 |
| USB笔通信 | 笔→PC | USB HID | USB有线连接点阵笔数据传输 |
| BLE笔通信 | 笔→PC | BLE GATT | 蓝牙无线连接点阵笔 |
| 投屏输出 | PC→大屏 | WebRTC / HDMI | 课堂内容镜像至智慧黑板/电视 |
| 打印输出 | PC→打印机 | 系统打印API | 点阵码内容/试卷/字帖打印 |
**安全设计:**
- 本地数据加密:SQLite数据库文件加密(SQLCipher),防止本地数据泄露
- 自动更新:Electron auto-updater,签名校验防止恶意更新
- 代码保护:ASAR打包 + 代码混淆,关键逻辑C++ Addon保护
- 权限隔离:渲染进程沙箱化,敏感操作通过IPC调用主进程执行
- 文件安全:课件导出支持加密PDF,限制传播
---
#### 9. 自然写互动课堂智慧黑板端应用软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂智慧黑板端应用软件 |
| **版本号** | V1.0 |
| **开发语言** | Java / Kotlin / C++ |
| **运行环境** | Android(智慧黑板定制系统) |
| **软件用途** | 运行于教室智慧黑板/交互式一体机,作为课堂教学的主显示终端与交互中心 |
**功能模块:**
- 全班笔迹实时接收与大屏展示
- 触控白板书写(教师黑板端直接书写)
- 学生作品展示墙(选取学生笔迹投屏对比)
- 课堂互动答题系统(发题→收卷→统计→展示)
- 随机抽取与分组展示
- 课堂录制与回放
- 与教室网关联动(自动发现笔设备)
- 第三方课件兼容(PPT/PDF/图片)
**技术架构:**
采用 Android 全屏交互式应用架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| UI层 | 自定义全屏View + Android Framework | 全屏触控交互界面,多点触控支持 |
| 白板引擎 | Canvas 2D + SurfaceViewC++ JNI加速) | 高性能触控书写与笔迹渲染引擎 |
| 笔迹接收层 | Kotlin + BLE/WiFi | 接收网关/算力盒推送的学生笔迹数据 |
| 课件解析层 | Apache POI + PDFRenderer + Glide | PPT/PDF/图片课件加载与渲染 |
| 业务逻辑层 | Kotlin + ViewModel + LiveData | 课堂互动、答题系统、展示控制 |
| 数据层 | Room + 本地文件 | 课堂记录、课件缓存、配置存储 |
| 录制层 | MediaCodec + MediaMuxer | 课堂屏幕录制与回放(H.264编码) |
```plantuml
@startuml 黑板端技术架构
skinparam componentStyle rectangle
package "UI层" as UI #E8EAF6 {
[全屏触控View\n(多点触控)] as TOUCH
}
package "白板引擎" as WB #FCE4EC {
[Canvas 2D\nSurfaceView] as CANVAS
[Native JNI加速] as JNI
CANVAS -right-> JNI
}
package "笔迹接收层" as PEN #FFF3E0 {
[BLE WiFi接收\n网关推送笔迹] as RCV
}
package "课件解析层" as COURSE #FFFDE7 {
[Apache POI\n(PPT)] as POI
[PDFRenderer] as PDFR
[Glide\n(图片)] as IMG
POI -[hidden]right- PDFR
PDFR -[hidden]right- IMG
}
package "业务逻辑层" as BIZ #E3F2FD {
[ViewModel LiveData\n(课堂互动 答题 展示)] as VM
}
package "数据层" as DATA #E8F5E9 {
[Room] as ROOM
[本地文件] as FS
ROOM -[hidden]right- FS
}
package "录制层" as REC #F3E5F5 {
[MediaCodec\n(H.264编码)] as MC
[MediaMuxer] as MX
MC -right-> MX
}
UI -down-> WB
UI -down-> PEN
BIZ -up-> WB
BIZ -up-> COURSE
BIZ -down-> DATA
BIZ -down-> REC
@enduml
```
**数据设计:**
| 数据 | 存储方式 | 说明 |
|------|---------|------|
| 白板画布数据 | 内存 + 序列化文件 | 教师白板书写笔迹(支持撤销/重做) |
| 学生笔迹 | Room + 内存缓存 | 全班学生实时笔迹数据(按学生ID索引) |
| 课件文件 | 本地文件缓存 | 预下载的PPT/PDF课件 |
| 课堂录像 | MP4本地文件 | 课堂录制视频 |
| 互动答题数据 | Room | 题目、学生答案、统计结果 |
| 设备配置 | SharedPreferences | 网关绑定、显示分辨率、触控校准参数 |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 笔迹数据流 | 网关/算力盒→黑板 | WebSocket | 接收全班学生实时笔迹 |
| 互动指令 | 黑板→网关 | WebSocket | 发题、收卷、分组等课堂控制指令 |
| 云平台API | 黑板→云端 | HTTPS | 课件下载、录像上传、数据同步 |
| 设备发现 | 黑板↔网关 | mDNS | 自动发现并绑定教室网关 |
| 触控输入 | 触控屏→黑板 | Android TouchEvent | 多点触控映射为白板操作 |
**安全设计:**
- 应用锁定:Kiosk模式运行,防止学生退出应用访问系统设置
- 内容安全:课堂录像本地加密存储,上传云端后自动清理本地文件
- 自动登录:设备证书认证,无需教师手动登录
- 网络隔离:仅允许访问指定云平台域名和教室局域网
- 定时清理:课堂结束后自动清理内存缓存,防止数据残留
---
#### 10. 自然写互动课堂平板端应用软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂平板端应用软件 |
| **版本号** | V1.0 |
| **开发语言** | Kotlin / Swift / Flutter |
| **运行环境** | Android 8.0+ / iPadOS 14.0+ |
| **软件用途** | 面向学生和教师的平板端应用,提供课堂互动、作业书写、练字训练、学习管理等功能 |
**功能模块:**
- 学生端:接收作业/试卷、配合点阵笔纸上作答、提交与查看批改结果
- 教师端:移动授课、巡堂查看、即时点评
- 蓝牙连接点阵笔
- 触屏直接书写(无笔时备选模式)
- 字帖练习与笔顺指导
- 错题本自动整理
- 学习计划与进度管理
- 护眼模式与使用时长管控
**技术架构:**
采用跨平台 MVVM 架构(与手机端共享核心模块):
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| UI层 | Flutter WidgetPad自适应布局) | 适配不同尺寸平板的响应式界面 |
| 状态管理层 | Bloc / Provider | MVVM架构,学生端/教师端双模式 |
| 笔迹渲染层 | CustomPainter + Skia | 触屏直写与点阵笔笔迹渲染 |
| 业务逻辑层 | Dart / Kotlin / Swift | 作业作答、练字训练、学习管理 |
| 数据层 | SQLite + Hive | 离线作业缓存、错题本、学习进度 |
| 网络层 | Dio + WebSocket | 云平台API + 课堂实时交互 |
| 蓝牙层 | flutter_blue / CoreBluetooth | BLE连接点阵笔 |
| 护眼层 | 自研护眼模块 | 色温调节、使用时长提醒、距离检测(前置摄像头) |
```plantuml
@startuml 平板端技术架构
skinparam componentStyle rectangle
package "UI层" as UI #E8EAF6 {
[Flutter Widget\n(Pad自适应布局)] as FW
}
package "状态管理层" as SM #E3F2FD {
[Bloc Provider\n(学生端 教师端双模式)] as BLC
}
package "笔迹渲染层" as RENDER #FCE4EC {
[CustomPainter Skia\n(触屏直写 点阵笔)] as SKI
}
package "业务逻辑层" as BIZ #FFF3E0 {
[作业作答] as HW
[练字训练] as WRT
[学习管理] as LRN
HW -[hidden]right- WRT
WRT -[hidden]right- LRN
}
package "数据层" as DATA #E8F5E9 {
[SQLite] as SQL
[Hive] as HIVE
SQL -[hidden]right- HIVE
}
package "网络层" as NET #FFFDE7 {
[Dio] as DIO
[WebSocket] as WS
DIO -[hidden]right- WS
}
package "蓝牙层" as BLE #F3E5F5 {
[flutter_blue\nCoreBluetooth] as FB
}
package "护眼层" as EYE #F1F8E9 {
[色温调节] as CT
[时长提醒] as TR
[距离检测] as DIST
CT -[hidden]right- TR
TR -[hidden]right- DIST
}
UI -down-> SM
SM -down-> RENDER
SM -down-> BIZ
BIZ -down-> DATA
BIZ -down-> NET
BIZ -down-> BLE
UI -right-> EYE
@enduml
```
**数据设计:**
| 数据 | 存储方式 | 说明 |
|------|---------|------|
| 作业/试卷 | SQLite + 本地文件 | 已下载的作业内容(支持离线作答) |
| 书写笔迹 | SQLite + 文件 | 学生作答笔迹数据(BLE采集或触屏直写) |
| 错题本 | SQLite | 自动整理的错题(题目+错误答案+正确答案+知识点) |
| 学习计划 | SQLite | 每日/每周学习任务与完成进度 |
| 字帖练习 | 本地缓存 | 字帖模板与练习记录 |
| 使用时长 | SQLite | 每日使用时长记录(按应用/科目分类) |
| 离线队列 | SQLite | 离线操作暂存队列(恢复网络后自动同步) |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 云平台API | Pad→云端 | HTTPS | 登录/作业下载/提交/学情查看 |
| 课堂实时 | 网关→Pad | WebSocket | 课堂互动指令、教师点评推送 |
| BLE笔通信 | 笔→Pad | BLE GATT | 蓝牙连接点阵笔接收笔迹数据 |
| 离线同步 | Pad→云端 | HTTPS | 网络恢复后批量上传离线数据 |
**安全设计:**
- 学生账户:简化登录(班级+姓名/学号),无需手机号等隐私信息
- 使用管控:家长可远程设置使用时段和时长上限
- 内容过滤:仅展示学校授权的教学内容,无广告、无外部链接
- 隐私保护:前置摄像头护眼检测仅本地处理,不上传图像数据
- 本地加密:学生作答数据本地加密存储,防止平板丢失后数据泄露
---
### 3.4 SDK
#### 11. 自然写互动课堂应用开发SDK软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写互动课堂应用开发SDK软件 |
| **版本号** | V1.0 |
| **开发语言** | Java / Kotlin / Swift / C / JavaScript |
| **运行环境** | Android / iOS / Windows / macOS / Linux / Web |
| **软件用途** | 为第三方开发者和教育集成商提供点阵笔数据接入、笔迹渲染、AI识别调用等核心能力,支持客户化集成到自身应用中 |
**SDK 模块:**
| 模块 | 功能 |
|------|------|
| **PenConnect SDK** | 蓝牙/WiFi连接点阵笔,接收实时笔迹坐标数据流 |
| **StrokeRender SDK** | 笔迹实时渲染与回放(支持压感、颜色、动画) |
| **OCR SDK** | 调用云端/本地手写识别能力(文字、数学、笔顺) |
| **Gateway SDK** | 对接教室网关,批量管理多支笔数据 |
| **Cloud SDK** | 对接自然写云平台API(用户认证、数据存取、学情查询) |
| **UI Component** | 预制UI组件(笔迹画布、答题卡、字帖控件等) |
**输出形式:**
- AndroidAAR 包 + Maven 仓库
- iOSFramework / CocoaPods / Swift Package
- PCDLL / .so 动态库
- WebJavaScript / TypeScript NPM 包
- 配套:API 文档、示例工程、集成指南
**技术架构:**
采用分层模块化架构,核心逻辑跨平台复用:
```
┌─────────────────────────────────────────────────────────────┐
│ 上层:应用集成层(第三方开发者调用) │
├──────────┬──────────┬──────────┬──────────┬──────────────────┤
│ PenConnect│StrokeRender│ OCR SDK │Gateway SDK│ Cloud SDK │
│ SDK │ SDK │ │ │ │
├──────────┴──────────┴──────────┴──────────┴──────────────────┤
│ 中间层:平台适配层(Platform Abstraction Layer
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Android│ │ iOS │ │Windows│ │macOS │ │ Web │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
├─────────────────────────────────────────────────────────────┤
│ 底层:核心引擎层(C/C++ 跨平台内核) │
│ BLE协议解析 │ 笔迹平滑算法 │ 坐标变换 │ 数据编解码 │
└─────────────────────────────────────────────────────────────┘
```
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| 核心引擎 | C / C++(跨平台) | 蓝牙协议解析、笔迹平滑、坐标变换等底层算法 |
| 平台适配 | JNIAndroid/ ObjC BridgeiOS/ FFIWeb | 各平台原生API桥接 |
| 业务模块 | Java/Kotlin/Swift/JS | 各SDK模块的业务封装 |
| UI组件 | Android View / UIKit / HTML5 Canvas | 预制UI控件(笔迹画布、答题卡) |
```plantuml
@startuml SDK技术架构
skinparam componentStyle rectangle
package "应用集成层" as APP #E8EAF6 {
[PenConnect\nSDK] as PEN
[StrokeRender\nSDK] as STROKE
[OCR SDK] as OCR
[Gateway\nSDK] as GW
[Cloud SDK] as CLD
[UI Component] as UIC
PEN -[hidden]right- STROKE
STROKE -[hidden]right- OCR
OCR -[hidden]right- GW
GW -[hidden]right- CLD
CLD -[hidden]right- UIC
}
package "平台适配层 (PAL)" as PAL #FFF3E0 {
[Android\n(JNI)] as ANDR
[iOS\n(ObjC Bridge)] as IOS
[Windows\n(DLL)] as WIN
[macOS\n(dylib)] as MAC
[Web\n(FFI WASM)] as WEB
ANDR -[hidden]right- IOS
IOS -[hidden]right- WIN
WIN -[hidden]right- MAC
MAC -[hidden]right- WEB
}
package "核心引擎层 (Native)" as CORE #E8F5E9 {
[BLE协议解析] as BLE
[笔迹平滑算法] as SMOOTH
[坐标变换] as COORD
[数据编解码] as CODEC
BLE -[hidden]right- SMOOTH
SMOOTH -[hidden]right- COORD
COORD -[hidden]right- CODEC
}
APP -down-> PAL
PAL -down-> CORE
@enduml
```
**数据设计:**
SDK内部数据结构:
| 数据结构 | 类型 | 说明 |
|---------|------|------|
| PenDevice | Class | 笔设备对象(MAC/名称/电量/连接状态/协议版本) |
| StrokePoint | Struct | 笔迹点(x, y, pressure, timestamp, penUp |
| StrokePath | Class | 笔画路径(points[], color, width, penId |
| RecognitionResult | Class | 识别结果(type, text, confidence, bbox |
| SDKConfig | Class | SDK配置(服务器地址、AppKey、日志级别) |
**接口设计:**
核心 API 示例:
```
// PenConnect SDK
PenManager.startScan() // 扫描周围点阵笔
PenManager.connect(device: PenDevice) // 连接指定笔
PenManager.onStrokeData(callback) // 笔迹数据回调
// StrokeRender SDK
StrokeCanvas.bindView(view) // 绑定画布View
StrokeCanvas.drawStroke(strokePath) // 渲染笔迹
StrokeCanvas.replay(strokes[], speed) // 回放笔迹动画
// OCR SDK
OCREngine.recognize(strokes) → Result // 文字识别
MathEngine.recognize(strokes) → Result // 数学列式识别
StrokeOrderEngine.evaluate(char, strokes) // 笔顺评分
// Cloud SDK
CloudClient.init(appKey, secret) // 初始化
CloudClient.auth.login(token) // 认证
CloudClient.data.uploadStroke(data) // 上传笔迹
CloudClient.report.getStudentReport(id) // 获取学情
```
**安全设计:**
- 接入认证:AppKey + AppSecret 签名认证,防止未授权调用
- 数据保护:SDK本地不持久化业务数据,仅缓存必要配置
- 代码保护:C++核心库编译为 .so/.dylibJava层ProGuard混淆
- 版本管理:语义化版本(SemVer),大版本不兼容变更有迁移指南
- 沙箱隔离:SDK运行在独立线程/进程,异常不影响宿主应用
---
### 3.5 固件
#### 12. 自然写智能点阵笔嵌入式固件软件 V1.0
| 项目 | 内容 |
|------|------|
| **软件全称** | 自然写智能点阵笔嵌入式固件软件 |
| **版本号** | V1.0 |
| **开发语言** | C |
| **运行环境** | 嵌入式 MCU(点阵笔主控芯片) |
| **软件用途** | 运行于智能点阵笔内部,控制点阵摄像头采集、笔迹坐标解析、蓝牙数据传输及电源管理 |
**功能模块:**
- 点阵摄像头图像采集与解码
- 点阵码坐标实时解析
- 压力传感器数据采集
- 蓝牙 BLE 数据发送(笔迹坐标流)
- 设备配对与连接管理
- 低功耗电源管理(休眠/唤醒策略)
- 电池电量监测与上报
- LED 状态指示控制
- OTA 固件升级支持
- 本地数据缓存(离线书写暂存)
**技术架构:**
采用 RTOS 实时操作系统 + 分层驱动架构:
| 层次 | 技术选型 | 说明 |
|------|---------|------|
| RTOS内核 | FreeRTOS / RT-Thread | 实时任务调度、内存管理、中断管理 |
| 硬件驱动层 | C(寄存器级) | CMOS摄像头驱动、压力传感器ADC驱动、SPI/I2C总线 |
| BLE协议栈 | SoftDeviceNordic/ Nimble | 蓝牙5.0 BLE协议栈(GATT Server |
| 图像处理层 | C(定点数优化) | 点阵码图像解码、坐标解算算法 |
| 应用层 | C | 业务逻辑(配对/数据发送/状态管理/OTA) |
| 电源管理层 | C | 低功耗状态机(Active/Idle/Sleep/DeepSleep |
```plantuml
@startuml 固件技术架构
skinparam componentStyle rectangle
package "应用层" as APP #E8EAF6 {
[配对管理] as PAIR
[数据发送] as SEND
[OTA升级] as OTA
[状态管理] as STATUS
PAIR -[hidden]right- SEND
SEND -[hidden]right- OTA
OTA -[hidden]right- STATUS
}
package "图像处理层" as IMG #FFF3E0 {
[点阵码图像解码\n(定点数优化)] as DEC
[坐标解算算法] as COORD
DEC -right-> COORD
}
package "BLE协议栈" as BLE #E3F2FD {
[SoftDevice Nimble\nBLE 5 GATT Server] as SD
}
package "硬件驱动层" as DRV #E8F5E9 {
[CMOS摄像头\n驱动] as CAM
[压力传感器\nADC驱动] as ADC
[SPI I2C\n总线] as BUS
CAM -[hidden]right- ADC
ADC -[hidden]right- BUS
}
package "RTOS内核" as RTOS #F3E5F5 {
[FreeRTOS RT Thread\n任务调度 内存管理 中断] as KERN
}
package "电源管理层" as PWR #FFFDE7 {
[Active] as ACT
[Idle] as IDL
[Sleep] as SLP
[DeepSleep] as DSP
ACT -right-> IDL
IDL -right-> SLP
SLP -right-> DSP
}
APP -down-> IMG
APP -down-> BLE
IMG -down-> DRV
BLE -down-> DRV
DRV -down-> RTOS
RTOS -right-> PWR
@enduml
```
任务调度模型:
| 任务 | 优先级 | 周期 | 说明 |
|------|-------|------|------|
| 图像采集任务 | 最高 | 100Hz | 摄像头图像采集与点阵码解码 |
| 坐标计算任务 | 高 | 100Hz | 图像→坐标变换、压感数据融合 |
| BLE发送任务 | 高 | 触发式 | 笔迹坐标数据BLE Notify发送 |
| 电源监测任务 | 中 | 1Hz | 电池电压ADC采样、电量百分比计算 |
| LED控制任务 | 低 | 事件式 | 状态指示灯控制(连接/电量/充电) |
| OTA任务 | 低 | 触发式 | 固件升级包接收与Flash写入 |
**数据设计:**
| 数据结构 | 存储位置 | 说明 |
|---------|---------|------|
| 坐标数据帧 | RAM(环形缓冲区) | `{x:uint16, y:uint16, pressure:uint8, timestamp:uint32}` 每帧7字节 |
| 离线缓存区 | 外部Flash(SPI NOR) | 断开连接时笔迹数据FIFO缓存(容量4MB,约10万个坐标点) |
| 配对信息 | 内部Flash(NVS) | 已绑定设备的MAC地址和LTK密钥(最多4个设备) |
| 设备配置 | 内部Flash(NVS) | 设备名称、序列号、出厂校准参数 |
| 固件分区 | 内部Flash | Bootloader16KB+ App A256KB+ App B256KB+ NVS8KB |
**接口设计:**
| 接口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| 笔迹数据 | 笔→网关/终端 | BLE GATT Notify | 自定义CharacteristicMTU=247,每包最多34个坐标点 |
| 设备信息 | 终端→笔 | BLE GATT Read | 电量、固件版本、序列号、在线状态 |
| 配对连接 | 终端→笔 | BLE SMP | Secure Connection配对流程 |
| 离线数据同步 | 笔→终端 | BLE GATT Indicate | 连接后自动上传离线缓存数据(需ACK确认) |
| OTA升级 | 终端→笔 | BLE DFU | 固件包分包传输→校验→写入Flash B分区→重启切换 |
| 配置写入 | 终端→笔 | BLE GATT Write | 设备命名、校准参数、功耗模式设置 |
**安全设计:**
- BLE安全:LE Secure ConnectionsECDH密钥交换),加密通信
- 固件保护:Flash读保护启用(防止固件被非法读取/逆向)
- OTA安全:升级包CRC32校验 + RSA签名验证,失败则保留旧版本
- 数据完整性:离线缓存数据每页写入CRC校验,读取时验证
- 看门狗:硬件看门狗定时器防止固件死机(超时自动复位)
---
## 四、登记申请材料准备
### 4.1 每项著作权需准备的材料
| 序号 | 材料 | 说明 |
|------|------|------|
| 1 | 软件著作权登记申请表 | 在中国版权保护中心网站在线填写 |
| 2 | 软件鉴别材料 — 源程序 | 前后各连续 30 页(不足 60 页全部提交),共约 3000 行 |
| 3 | 软件鉴别材料 — 文档 | 设计说明书或用户手册(前后各连续 30 页) |
| 4 | 申请人身份证明 | 营业执照副本复印件(加盖公章) |
| 5 | 委托书 | 如委托代理机构办理 |
### 4.2 源程序文档要求
| 要求 | 说明 |
|------|------|
| **格式** | A4 纸打印,单面,每页不少于 50 行 |
| **内容** | 源程序前 30 页 + 后 30 页(去除空行和注释后有效代码) |
| **页眉** | 标注软件全称和版本号 |
| **页脚** | 标注页码 |
| **字体** | 宋体或等宽字体,字号不小于五号 |
---
## 五、登记费用与时间
### 5.1 费用估算
| 项目 | 单价(元) | 数量 | 小计(元) | 备注 |
|------|-----------|:----:|-----------|------|
| 官方登记费 | 0 | 13 | 0 | 2017年起免征登记费 |
| 代理服务费(普通) | 500-800 | 13 | 6,500-10,400 | 审查周期约 30-40 个工作日 |
| 代理服务费(加急) | 1,500-3,000 | — | — | 可缩短至 1-5 个工作日 |
**自主申请 vs 委托代理:**
| 方式 | 13 项总费用 | 优缺点 |
|------|-----------|-------|
| **自主申请** | **0 元**(免官费) | 需自行准备材料、在线填报、邮寄/现场提交;耗时较多但零成本 |
| **委托代理(普通)** | **6,500-10,400 元** | 代理全程办理,省时省力,30-40 个工作日取证 |
| **委托代理(加急)** | **19,500-39,000 元** | 1-5 个工作日加急出证,适合融资/投标急需 |
### 5.2 时间规划
| 阶段 | 事项 | 时间 |
|------|------|------|
| **准备期** | 整理12项软件的源程序和文档材料 | 2-4 周 |
| **提交期** | 分批提交登记申请(建议每批 3-4 项) | 1-2 周 |
| **审查期** | 中国版权保护中心审查 | 30-40 个工作日(普通) |
| **取证期** | 领取软件著作权登记证书 | 审查通过后 5-10 个工作日 |
| **预计全部完成** | 13 项全部取证 | 提交后约 2-3 个月 |
---
## 六、登记优先级建议
根据产品上市节奏和商业需要,建议分三批次提交:
### 第一批(优先,核心产品)
| 序号 | 软件 | 理由 |
|:----:|------|------|
| 1 | 自然写互动课堂教学管理云平台软件 | 系统核心,所有终端依赖 |
| 2 | 自然写手写识别与AI分析引擎软件 | 核心技术壁垒,优先保护 |
| 5 | 自然写教室智能算力盒边缘计算软件 | 端侧AI核心能力,技术差异化壁垒 |
| 11 | 自然写互动课堂应用开发SDK软件 | 对外输出能力,商务合作需要 |
| 12 | 自然写智能点阵笔嵌入式固件软件 | 硬件配套必备 |
### 第二批(紧跟,主要终端)
| 序号 | 软件 | 理由 |
|:----:|------|------|
| 4 | 自然写教室智能网关管理软件 | 教室部署核心组件 |
| 9 | 自然写互动课堂智慧黑板端应用软件 | 学校采购主要交付物 |
| 8 | 自然写互动课堂PC端应用软件 | 教师日常使用频率最高 |
### 第三批(补全,完善矩阵)
| 序号 | 软件 | 理由 |
|:----:|------|------|
| 6 | 手机端应用 | 家校互动场景 |
| 7 | 电视端应用 | 家庭学习场景 |
| 10 | 平板端应用 | 学生端补充 |
| 3 | 学情诊断系统 | 数据增值服务 |
| 13 | 资源管理平台 | 内容运营支撑 |
---
## 七、著作权与商标的协同保护
| 保护类型 | 覆盖范围 | 保护对象 |
|---------|---------|---------|
| **商标权**(已规划) | "自然写" / "Writech" / 图形商标 | 品牌名称与标识 |
| **软件著作权**(本文) | 13 项软件系统 | 软件源代码与文档 |
| **专利权**(建议后续) | 手写识别算法、笔迹分析方法等 | 技术方案与算法 |
> 三者形成**品牌 + 代码 + 技术**的立体知识产权保护体系。
---
**编制人**:(待填写)
**审核人**:(待填写)
**日期**2026 年 2 月 14 日