# 互动课堂智能点阵笔系统 — 软件著作权规划

> **编制日期**：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端应用软件 | 自然写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 | 服务监控、日志采集、告警 |

```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） |
| 分析引擎层 | Python（Pandas/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/存储驱动 |
| 通信协议层 | BlueZ（BLE）+ lwIP | BLE 5.0 多连接管理 + TCP/IP网络通信 |
| 消息中间层 | Eclipse Mosquitto（MQTT Client） | 与云端MQTT Broker双向通信 |
| 业务逻辑层 | C++ / Python | 数据缓存调度、设备管理、协议转换 |
| 管理层 | 轻量Web Server（lighttpd） | 本地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 |
| **运行环境** | 嵌入式 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、集群管理、状态上报 |

```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和敏感数据使用 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 | 局域网内网关与终端设备自动发现 |

```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 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 / 自研投屏协议 | 屏幕镜像至大屏/智慧黑板 |

```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 + SurfaceView（C++ 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 Widget（Pad自适应布局） | 适配不同尺寸平板的响应式界面 |
| 状态管理层 | 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组件（笔迹画布、答题卡、字帖控件等） |

**输出形式：**
- 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控件（笔迹画布、答题卡） |

```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/.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） |

```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 | 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 日
