73 KiB
互动课堂智能点阵笔系统 — 软件著作权规划
编制日期:2026 年 2 月 14 日 权利人:深圳自然写科技有限公司 品牌:自然写 / Writech
一、系统架构总览
互动课堂智能点阵笔系统由终端应用层、网关与算力层、云服务层三层架构组成,覆盖从笔端数据采集到云端智能分析的完整链路。
┌─────────────────────────────────────────────────────────────────┐
│ 云服务层(Cloud) │
│ ┌──────────┐ ┌────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 数据存储 │ │ AI识别 │ │ 学情分析 │ │ 教学资源管理中心 │ │
│ └──────────┘ └────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 网关与算力层(Gateway + Edge AI) │
│ ┌──────────────┐ ┌────────────────┐ ┌────────────────────┐ │
│ │ 教室网关设备 │ │ 协议转换与路由 │ │ 设备管理与固件升级 │ │
│ └──────────────┘ └────────────────┘ └────────────────────┘ │
│ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
│ │ 智能算力盒 │ │ 端侧AI推理 │ │ 离线识别与缓存 │ │
│ └────────────┘ └────────────┘ └────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 终端应用层(APP) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ ┌────────┐ │
│ │ 手机 │ │ 电视机 │ │ PC │ │ 智慧黑板 │ │ Pad │ │
│ └────────┘ └────────┘ └────────┘ └──────────┘ └────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ SDK(供第三方集成与客户化定制) │ │
│ └──────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 硬件设备层(Device) │
│ ┌────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 智能点阵笔 │ │ 点阵纸张 │ │ 充电底座 │ │ 网关硬件 │ │
│ └────────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
@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端应用软件 | 自然写APP(PC版) | 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 Boot(Java)/ FastAPI(Python) | 业务微服务,按领域拆分(用户/课堂/作业/设备/消息) |
| 消息层 | RabbitMQ / Kafka | 异步消息、事件驱动、笔迹数据流接收 |
| 缓存层 | Redis | 会话管理、热数据缓存、实时状态 |
| 存储层 | MySQL + MongoDB + OSS | 结构化数据 / 笔迹文档数据 / 文件对象存储 |
| 监控层 | Prometheus + Grafana + ELK | 服务监控、日志采集、告警 |
@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/内存使用率自动扩容
- 多环境:开发 → 测试 → 预生产 → 生产四级环境隔离
- 灾备:数据库异地备份,服务多可用区部署
@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测试、灰度发布 |
@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利用率、模型准确率实时监控
@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) |
| 分析引擎层 | Python(Pandas/Scikit-learn) | 学情诊断算法、知识图谱推理、趋势预测 |
| 知识图谱层 | Neo4j | 知识点关联关系、错题归因推理 |
| 可视化层 | ECharts + 自研报表引擎 | 多维度数据可视化 |
| 推送层 | WebSocket + 消息队列 | 实时学情推送至各终端 |
@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:主从备份,知识图谱数据定期快照
- 定时任务:每日/每周自动生成学情诊断报告
@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 | 按年级/学科/出版社/关键词全文检索 |
@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缓存刷新、资源使用报表生成
@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/存储驱动 |
| 通信协议层 | BlueZ(BLE)+ lwIP | BLE 5.0 多连接管理 + TCP/IP网络通信 |
| 消息中间层 | Eclipse Mosquitto(MQTT Client) | 与云端MQTT Broker双向通信 |
| 业务逻辑层 | C++ / Python | 数据缓存调度、设备管理、协议转换 |
| 管理层 | 轻量Web Server(lighttpd) | 本地Web配置页面、状态查询 |
@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双分区:升级失败自动回滚至上一版本
- 看门狗机制:软件异常时自动重启恢复
@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 |
| 运行环境 | 嵌入式 Linux(ARM/x86 算力盒硬件,搭载 NPU/GPU 加速模块) |
| 软件用途 | 运行于教室智能算力盒设备,在本地完成手写识别、笔顺分析等AI推理任务,降低云端依赖,实现低延迟实时响应与离线可用 |
功能模块:
- 端侧AI推理引擎(手写OCR、数学列式识别、笔顺分析本地运行)
- 轻量化模型管理(模型加载、版本切换、云端同步更新)
- 笔迹数据本地预处理(去噪、坐标归一化、笔画分割)
- 实时识别结果分发(将识别结果推送至教室内各终端)
- 离线模式支持(断网环境下完整AI识别能力不降级)
- 本地数据缓存与批量上传(网络恢复后自动同步至云端)
- 与教室网关协同工作(接收网关转发的笔迹数据流)
- 多教室算力盒集群管理(校级统一调度与负载均衡)
- NPU/GPU 硬件加速调度
- 设备运行状态监控与远程运维
- OTA 固件与模型远程升级
技术架构:
采用边缘AI推理分层架构,运行于ARM/x86算力盒硬件:
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 硬件加速层 | RKNN(瑞芯微)/ CUDA(NVIDIA) / OpenCL | NPU/GPU硬件推理加速驱动 |
| 推理框架层 | ONNX Runtime / TensorRT / PaddleLite | 模型加载与推理执行引擎 |
| 模型管理层 | 自研(C++ / Python) | 模型版本管理、动态加载、量化压缩、云端同步 |
| 业务服务层 | Python / C++ | 笔迹预处理、推理调度、结果分发、离线缓存 |
| 通信层 | gRPC + MQTT | 与网关数据交互(gRPC) + 与云端状态同步(MQTT) |
| 管理层 | Flask + SQLite | 本地管理API、集群管理、状态上报 |
@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双分区升级:固件与模型分别独立升级通道
- 看门狗 + 心跳机制:异常自动重启,云端监控报警
@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连接点阵笔(教师移动教学场景) |
@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和敏感数据使用 Keychain(iOS)/ KeyStore(Android)加密存储
- 传输安全:全链路 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 | 局域网内网关与终端设备自动发现 |
@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 Process(Node.js) | 窗口管理、系统API调用、文件操作、蓝牙/USB驱动 |
| 渲染进程 | Vue.js 3 + TypeScript | 界面渲染、状态管理(Pinia)、组件化UI |
| 笔迹渲染引擎 | Canvas 2D / WebGL + C++ Addon | 高性能笔迹渲染(支持压感/笔锋效果) |
| 数据层 | SQLite(better-sqlite3) + IndexedDB | 本地课件/作业/笔迹数据持久化 |
| 网络层 | Axios + WebSocket(ws) | 云平台API + 实时通信 |
| 设备层 | node-bluetooth / node-usb | USB有线 + BLE无线连接点阵笔 |
| 投屏层 | WebRTC / 自研投屏协议 | 屏幕镜像至大屏/智慧黑板 |
@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 + SurfaceView(C++ JNI加速) | 高性能触控书写与笔迹渲染引擎 |
| 笔迹接收层 | Kotlin + BLE/WiFi | 接收网关/算力盒推送的学生笔迹数据 |
| 课件解析层 | Apache POI + PDFRenderer + Glide | PPT/PDF/图片课件加载与渲染 |
| 业务逻辑层 | Kotlin + ViewModel + LiveData | 课堂互动、答题系统、展示控制 |
| 数据层 | Room + 本地文件 | 课堂记录、课件缓存、配置存储 |
| 录制层 | MediaCodec + MediaMuxer | 课堂屏幕录制与回放(H.264编码) |
@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 Widget(Pad自适应布局) | 适配不同尺寸平板的响应式界面 |
| 状态管理层 | Bloc / Provider | MVVM架构,学生端/教师端双模式 |
| 笔迹渲染层 | CustomPainter + Skia | 触屏直写与点阵笔笔迹渲染 |
| 业务逻辑层 | Dart / Kotlin / Swift | 作业作答、练字训练、学习管理 |
| 数据层 | SQLite + Hive | 离线作业缓存、错题本、学习进度 |
| 网络层 | Dio + WebSocket | 云平台API + 课堂实时交互 |
| 蓝牙层 | flutter_blue / CoreBluetooth | BLE连接点阵笔 |
| 护眼层 | 自研护眼模块 | 色温调节、使用时长提醒、距离检测(前置摄像头) |
@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组件(笔迹画布、答题卡、字帖控件等) |
输出形式:
- Android:AAR 包 + Maven 仓库
- iOS:Framework / CocoaPods / Swift Package
- PC:DLL / .so 动态库
- Web:JavaScript / 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++(跨平台) | 蓝牙协议解析、笔迹平滑、坐标变换等底层算法 |
| 平台适配 | JNI(Android)/ ObjC Bridge(iOS)/ FFI(Web) | 各平台原生API桥接 |
| 业务模块 | Java/Kotlin/Swift/JS | 各SDK模块的业务封装 |
| UI组件 | Android View / UIKit / HTML5 Canvas | 预制UI控件(笔迹画布、答题卡) |
@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/.dylib,Java层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协议栈 | SoftDevice(Nordic)/ Nimble | 蓝牙5.0 BLE协议栈(GATT Server) |
| 图像处理层 | C(定点数优化) | 点阵码图像解码、坐标解算算法 |
| 应用层 | C | 业务逻辑(配对/数据发送/状态管理/OTA) |
| 电源管理层 | C | 低功耗状态机(Active/Idle/Sleep/DeepSleep) |
@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 | Bootloader(16KB)+ App A(256KB)+ App B(256KB)+ NVS(8KB) |
接口设计:
| 接口 | 方向 | 协议 | 说明 |
|---|---|---|---|
| 笔迹数据 | 笔→网关/终端 | BLE GATT Notify | 自定义Characteristic,MTU=247,每包最多34个坐标点 |
| 设备信息 | 终端→笔 | BLE GATT Read | 电量、固件版本、序列号、在线状态 |
| 配对连接 | 终端→笔 | BLE SMP | Secure Connection配对流程 |
| 离线数据同步 | 笔→终端 | BLE GATT Indicate | 连接后自动上传离线缓存数据(需ACK确认) |
| OTA升级 | 终端→笔 | BLE DFU | 固件包分包传输→校验→写入Flash B分区→重启切换 |
| 配置写入 | 终端→笔 | BLE GATT Write | 设备命名、校准参数、功耗模式设置 |
安全设计:
- BLE安全:LE Secure Connections(ECDH密钥交换),加密通信
- 固件保护: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 日