# 互动课堂智能点阵笔系统 — 软件著作权规划 > **编制日期**: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 日