# 中国软件著作权申请要求(详细版) ## 目录 1. [申请材料清单](#申请材料清单) 2. [著作权人信息](#著作权人信息) 3. [申请表字段说明与字数限制](#申请表字段说明与字数限制) 4. [源程序文档要求](#源程序文档要求) 5. [源程序与文档对应规则](#源程序与文档对应规则) 6. [用户手册要求](#用户手册要求) 7. [设计说明书要求](#设计说明书要求) 8. [版本号规范](#版本号规范) 9. [版本号一致性核验](#版本号一致性核验) 10. [设计说明书与源代码对应规则](#设计说明书与源代码对应规则) 11. [日期填写规范](#日期填写规范) 12. [运行平台规范](#运行平台规范) 13. [截图管理](#截图管理) 14. [信息一致性校验清单](#信息一致性校验清单) 15. [LaTeX 排版规范](#latex-排版规范) 16. [LaTeX 环境依赖](#latex-环境依赖) --- ## 申请材料清单 提交四份材料: 1. **著作权登记申请表** — 软件基本信息、著作权人信息、软硬件环境、功能简介。**直接以 Markdown 文件提交(`.md`),无需编译为 PDF**,申请表本身没有格式硬要求。 2. **源程序** — 前 30 页 + 后 30 页,共 60 页(PDF,由 LaTeX 编译生成) 3. **用户手册** — 详细描述软件使用方法,不少于 10 页,应包含界面截图(PDF) 4. **设计说明书** — 详细描述软件设计思路和实现,不少于 10 页,应包含界面截图(PDF) > **为什么申请表用 Markdown**:旧版本走 LaTeX→PDF,PDF 文本提取时复制带换行(PDF 文本流的固有问题),审查员录入时容易出错。Markdown 既保留结构又能直接复制,且不受 LaTeX 环境约束,用户没装 LaTeX 也能拿到申请表。 --- ## 著作权人信息 著作权人信息在多次申请间保持不变。首次收集后保存为 `copyright-owner.json`,后续申请直接读取复用,仅需用户确认是否有变更。 ### 个人著作权人 | 字段 | 必填 | 说明 | |------|------|------| | 姓名 | 是 | 身份证上的姓名 | | 证件类型 | 是 | 身份证 | | 证件号码 | 是 | 身份证号码 | | 地址 | 是 | 详细联系地址 | | 邮编 | 是 | 邮政编码 | | 联系人 | 是 | 联系人姓名 | | 电话 | 是 | 联系电话 | | 邮箱 | 是 | 电子邮箱 | ### 企业著作权人 | 字段 | 必填 | 说明 | |------|------|------| | 公司全称 | 是 | 营业执照上的公司名称 | | 统一社会信用代码 | 是 | 18位,如 91110108MA01EXAMPLE | | 企业类型 | 是 | 如:有限责任公司、股份有限公司 | | 法定代表人 | 是 | 营业执照上的法定代表人姓名 | | 注册资本 | 是 | 如:壹佰万元整 | | 住所地址 | 是 | 营业执照上的地址 | | 登记机关 | 是 | 如:xx市xx区行政审批服务局 | | 营业执照登记日期 | 是 | 营业执照上的日期 | | 联系人 | 是 | 联系人姓名 | | 电话 | 是 | 联系电话 | | 邮箱 | 是 | 电子邮箱 | --- ## 申请表字段说明与字数限制 ### 第一部分:软硬件环境信息 以下所有字段的字数限制均为 **50 个字符以内**。 | 字段 | 说明 | 示例 | |------|------|------| | 开发的硬件环境 | 开发时使用的硬件配置 | Apple MacBook Pro, Apple M系列芯片, 16GB RAM | | 运行的硬件环境 | 运行所需最低或推荐配置 | 支持运行微信客户端的智能终端设备 | | 开发该软件的操作系统 | 开发时使用的操作系统 | macOS Sonoma | | 软件开发环境/开发工具 | 主要IDE或开发工具 | 微信开发者工具 Stable 1.06 | | 该软件的运行平台/操作系统 | 软件运行的系统或平台 | iOS、Android、Windows、macOS、HarmonyOS | | 软件运行支撑环境/支持软件 | 运行依赖的框架/运行时 | 微信客户端(支持小程序的任意版本) | ### 第二部分:软件基础信息 | 字段 | 字数限制 | 说明 | |------|----------|------| | 编程语言 | 120字符 | 从预设列表选择或自行填写 | | 源程序量 | — | 源代码总行数(单位:行),必须与源程序文档首页一致 | | 开发目的 | **50字** | 简要说明要解决什么问题 | | 面向领域/行业 | **50字** | 主要应用行业(如:零售商业服务) | | 软件的主要功能 | **500–1000 字(建议 500–600)** | 概括核心功能;按段落写,覆盖全部主要功能模块。**字数过少会被打回补正**,建议落在 500–600 字以减少出错风险 | ### 第三部分:软件技术特点 | 字段 | 字数限制 | 说明 | |------|----------|------| | 软件类型 | — | 从预设列表选择:APP、小程序、游戏软件、教育软件、金融软件、医疗软件、云计算软件、大数据软件、人工智能软件、VR软件、物联网软件等 | | 技术特点描述 | **100字** | 技术创新、特点或优势 | ### 其他必填字段 - 软件全称(**必须以"软件"二字结尾**,如"智慧记账软件"。用户提供的名称若未以"软件"结尾,自动补上) - 软件简称 - 版本号(V1.0,两位格式) - 开发完成日期 - 首次发表日期 - 软件性质(原创/修改/衍生) - 软件分类 --- ## 源程序文档要求 ### 页面规格 - 前 30 页 + 后 30 页 = **正好 60 页**(不能多也不能少) - 代码连续排列,由 LaTeX 自然分页 - 通过 `10pt` 字号 + `\small` + 窄边距(top=2cm,bottom=2cm,left=1.5cm,right=1.5cm)使每页自然排满约 50 行 - **禁止**每 50 行强制分页(会产生大量空白页) ### 首页信息 源程序文档首页需标注: - 软件名称 + 版本号 - 著作权人名称 - 生成日期 - 源程序量(行数,必须与申请表一致) - "本文档含前30页 + 后30页" ### 代码提取策略 1. 按文件优先级排序:入口文件 > 业务逻辑 > 工具函数 > 页面/组件 > 配置 2. 每个文件开头加注释标记:`// ========== path/to/file.js ==========` 3. 文件分隔注释行不计入源程序总量 4. 前 30 页从排序后的第一个文件开始连续取代码 5. 后 30 页从排序后的最后一个文件开始反向取代码 6. 如果代码不足 60 页,全部提供 ### 源程序量说明 - 申请表中的「源程序量」= 项目实际总行数 - 源程序文档中展示的代码 ≈ 3000 行(前后各约 1500 行的样本) - 两个数字不需要相等,但所有文档中引用的总行数必须一致 ### 60 页硬约束 - 源程序 PDF **必须正好 60 页**(不能 59、不能 61),唯一例外:项目源代码总量本就不足 60 页,此时全部提供。 - 编译完成后用 `pdfinfo`(或 macOS 上 `mdls -name kMDItemNumberOfPages`)核对页数;若页数不对,调整 `--front-lines` / `--back-lines` 参数微调每页代码量重新生成。 - 默认值:前 30 页目标 1490 行、后 30 页目标 1498 行(合计 2988 行去空行后的代码)。不同字体度量、不同 LaTeX 版本可能产生 ±1 行偏差,需按实测调整。 --- ## 源程序与文档对应规则 > 这是上次(集享 V1.0 软著流水号 2026R11L0626727)被打回补正的第二大原因,必须严格遵守。 **双向对应**: 1. **源代码 → 文档**:源程序鉴别材料(前 30 页 + 后 30 页)中出现的每个文件/模块,在设计说明书 §4 详细设计中**必须有对应小节**。审查员会拿源代码逐项核对设计说明书。 2. **文档 → 源代码**:设计说明书中提到的每个功能模块,**必须能在源程序 60 页内被审查员看到**对应代码。文档里写了一个模块,源代码里没出现,等于"虚构功能"。 **遗留代码必须排除**: 下列文件即使存在于项目中,也不应进入源程序鉴别材料;如果不可避免地进入了,文档里也不应该提及它们: - `mockData*.js` / `mock*.js` / `fakeData*.js` — 仅供开发期使用的假数据 - `utils/util.js` — 微信小程序默认模板生成的样板(仅含 `formatTime` 等空壳函数) - `pages/logs/*` — 微信开发者工具默认模板的日志页 - `miniprogram_npm/` — 编译产物,已在 EXCLUDE_DIRS 中 - 任何空文件、占位文件、临时调试代码 工具脚本会扫描出疑似遗留文件并通过 `legacy_candidates` 字段报告,由 Claude 与用户确认后通过 `--exclude-pattern` 排除。 --- ## 用户手册要求 ### 内容结构 1. **软件简介** — 软件概述 + 主要特点 2. **功能概述** — 功能列表 + 适用场景 3. **安装与使用说明** — 系统要求 + 进入方式 + 登录说明 + 使用指南入口 4. **主要功能说明** — 每个功能的详细说明 + 操作步骤 + 截图 5. **注意事项** — 网络要求 + 登录要求 + 会员权限 + 数据管理 6. **技术支持** — 联系方式 + 版本信息 ### 编写要求 - 语言简洁,步骤清晰 - 每个功能必须配截图 - 不少于 10 页 - 从用户角度描述,避免技术术语 --- ## 设计说明书要求 ### 内容结构 1. **软件概述** — 简介 + 开发背景 + 设计目标 2. **需求分析** — 功能需求 + 性能需求 + 安全需求 3. **总体设计** — 系统架构 + 模块划分 + 技术选型 + 运行环境 4. **详细设计** — 各模块功能、处理流程(配截图) 5. **数据结构设计** — 数据存储 + 数据格式 + 数据关系 6. **接口设计** — 内部接口 + 外部 API 列表(用表格展示) 7. **界面设计** — 整体布局 + 主要页面(配截图)+ 交互设计 8. **安全设计** — 认证机制 + 数据保护 + 访问控制 9. **测试设计** — 测试策略 + 测试环境 ### 编写要求 - 基于项目实际代码分析 - 模块划分对应项目实际目录结构 - 接口列表对应项目实际 API - 不少于 10 页 --- ## 版本号规范 - 格式:**V1.0**(大写 V + 两位版本号) - 首次申请一律填 V1.0 - 不要填 V1.0.0(三位格式) - 不要填 V2.0 或更高版本(可能被要求提供 V1.0 的登记证书) --- ## 版本号一致性核验 > 这是上次(集享 V1.0 软著)被打回补正的**首条意见**:申请表填 V1.0,但项目 `utils/config.js` 里写的是 `version: '1.1.1'`,连截图右下角也是 V1.1.1,被审查员第一眼抓到。 **核心规则**:申请表填的版本号、项目源代码里的版本字符串、运行截图上显示的版本号——三方必须完全一致。 ### 常见版本号出现位置 提交前用以下 grep 模板扫一遍项目,把所有命中位置和对应字符串列出来: ```bash # 扫描项目内的版本号字符串 grep -rEn '"version"\s*:\s*"[0-9]+(\.[0-9]+)+"' . \ --include='*.js' --include='*.ts' --include='*.json' \ --exclude-dir=node_modules --exclude-dir=miniprogram_npm # 扫描页面 footer / about 页里硬编码的版本号 grep -rEn 'V[0-9]+\.[0-9]+|版本.*[0-9]+\.[0-9]+' \ pages/ components/ src/ 2>/dev/null # 申请表与文档页眉 grep -n 'V[0-9]\+\.[0-9]\+' copyright-materials/*.md copyright-materials/*.tex ``` 需要核对的位置: - `package.json` 的 `version` 字段 - `utils/config.js` / `src/config.ts` 等配置文件里的 `version` 常量 - 个人中心页/关于页 footer 上硬编码的版本号 - 提交的运行截图(特别是设置页、关于页、启动页) - 申请表的「版本号」字段 - 用户手册、设计说明书的页眉(`{{软件全称}}V1.0`) - 源程序文档首页与页眉 **一旦发现不一致,必须停下来让用户裁决「最终申请使用哪个版本号」**,并指引用户在提交前把所有位置统一(包括重新截图)。 --- ## 设计说明书与源代码对应规则 > 详细规则见上一节[源程序与文档对应规则](#源程序与文档对应规则)。本节聚焦设计说明书 §4 的写作结构。 ### §4 详细设计的 6 段结构(强制) 每个模块的 `\subsection` 必须按以下 6 段结构展开,缺段会被打回。模板见 [design-doc-template.tex](design-doc-template.tex)。 | 段 | 标题 | 内容 | |---|---|---| | 1 | 模块职责 | 一句话定位 + 1–2 句展开 | | 2 | 输入与输出 | 用户操作、上游数据、跳转参数;渲染结果、下游消费、接口返回 | | 3 | 关键算法与处理逻辑 | 核心算法、判定规则、必要的伪代码 | | 4 | 状态与缓存管理 | 本地状态、持久化、失效与刷新策略 | | 5 | 与其他模块的依赖关系 | 依赖了谁、被谁依赖 | | 6 | 处理流程 | 编号步骤列表 | ### 模块覆盖双向原则 - 模块小节标题必须与项目实际目录或文件名对应(如 `pages/index`、`utils/api.js`),不要起架空的中文名 - 源代码出现 → 文档必须有;文档提到 → 源代码必须能找到 - 工具/适配器/帮助函数(utils/marketHelper.js、utils/lunar.js 等)也要写小节,不能跳过 --- ## 日期填写规范 | 日期字段 | 说明 | 约束 | |----------|------|------| | 开发完成日期 | 软件实际开发完成的日期 | 不是当前日期 | | 首次发表日期 | 软件首次上线/发布的日期 | ≥ 开发完成日期 | | 申请日期 | 提交申请的日期 | > 首次发表日期 | 逻辑约束:**开发完成日期 ≤ 首次发表日期 < 申请日期** --- ## 运行平台规范 运行平台字段必须列出所有实际支持的操作系统,不要遗漏。 ### 常见项目类型的运行平台 | 项目类型 | 运行平台 | |----------|----------| | 微信小程序 | iOS、Android、Windows、macOS、HarmonyOS(微信客户端) | | Web 应用 | Windows、macOS、Linux(浏览器) | | iOS App | iOS | | Android App | Android | | Flutter/React Native | iOS、Android(如支持桌面端则加上 Windows、macOS、Linux) | | Electron 应用 | Windows、macOS、Linux | | 桌面应用 | 列出实际支持的操作系统 | --- ## 截图管理 ### 截图清单生成 分析项目代码中的页面文件、弹窗组件、模态框,自动列出需要截图的界面。 截图清单格式: | 编号 | 文件名 | 描述 | 触发方式 | 使用位置 | |------|--------|------|----------|----------| | 01 | 图1-首页空状态.png | 首页空状态 | 首次进入首页 | 用户手册§1、设计说明书§4.1 | ### LaTeX 中的截图处理 - 图片统一放在 `images/` 目录下 - 使用 `\graphicspath{{images/}}` 指定图片路径 - 使用自定义 `\screenshot{文件名}{标题}` 宏插入截图 - 编译时如果图片文件不存在会报错,但可以先注释掉 `\screenshot` 行查看文字排版 --- ## 信息一致性校验清单 生成完所有文档后,必须逐项校验: | 校验项 | 必须一致的位置 | |--------|----------------| | **版本号一致性(首项)** | 项目源代码(package.json / config.js / 关于页 footer)、运行截图、申请表、各文档页眉与正文 | | 软件全称 | 申请表「软件全称」字段、源程序页眉和首页、用户手册标题/页眉、设计说明书标题/页眉 | | 版本号 | 申请表「版本号」字段、所有文档页眉中的 VX.X、所有文档正文中引用的版本号 | | 源程序量 | 申请表「源程序量」字段 = 源程序文档首页标注的行数 | | 著作权人名称 | 每个文档的首页都必须有著作权人名称 | | 开发完成日期 | 申请表中的日期 | | 首次发表日期 | 申请表和各文档中引用的发布日期 | | 运行平台 | 申请表、用户手册系统要求、设计说明书运行环境 | | 技术栈 | 申请表编程语言、设计说明书技术选型 | | 模块对应(双向) | 设计说明书 §4 各模块 ↔ 源程序前30页+后30页中出现的代码文件 | | 主要功能字数 | 申请表「软件的主要功能」字段,500 ≤ 字数 ≤ 1000 | --- ## LaTeX 排版规范 ### 通用文档(申请表、用户手册、设计说明书) ```latex \documentclass[a4paper,12pt]{article} \usepackage[UTF8,heading=true]{ctex} \usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm]{geometry} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage{graphicx} \usepackage{tabularx} \usepackage{enumitem} \usepackage{hyperref} \usepackage{xcolor} \usepackage{float} \usepackage{array} \hypersetup{hidelinks} \graphicspath{{images/}} \ctexset{ section/format = \Large\bfseries, subsection/format = \large\bfseries, subsubsection/format = \normalsize\bfseries, } \pagestyle{fancy} \fancyhf{} \fancyhead[C]{软件全称V1.0\quad 文档类型} \fancyfoot[C]{第 \thepage\ 页\quad 共 \pageref{LastPage} 页} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0.5pt} \fancypagestyle{plain}{\pagestyle{fancy}} \setlength{\parindent}{2em} \setlength{\parskip}{0.3em} \renewcommand{\baselinestretch}{1.3} \newcommand{\screenshot}[2]{% \begin{figure}[H] \centering \includegraphics[width=0.35\textwidth]{#1} \caption{#2} \end{figure} } ``` ### 源程序文档 ```latex \documentclass[a4paper,10pt]{article} \usepackage[UTF8]{ctex} \usepackage[top=2cm,bottom=2cm,left=1.5cm,right=1.5cm]{geometry} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage{hyperref} \usepackage{fancyvrb} \hypersetup{hidelinks} \pagestyle{fancy} \fancyhf{} \fancyhead[C]{软件全称V1.0\quad 源程序} \fancyfoot[C]{第 \thepage\ 页\quad 共 \pageref{LastPage} 页} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0.5pt} \fancypagestyle{plain}{\pagestyle{fancy}} \setlength{\parindent}{0em} ``` 代码使用 `\begin{Verbatim}[fontsize=\small]...\end{Verbatim}` 排版。 --- ## LaTeX 环境依赖 > 注意:**申请表是 Markdown,不需要 LaTeX**,可独立完成。下面的 LaTeX 环境只用于源程序、用户手册、设计说明书三份 PDF 的编译。 ### 安装指引 **macOS**: ```bash brew install --cask basictex sudo tlmgr update --self sudo tlmgr install ctex xecjk fancyhdr lastpage fancyvrb tabularx enumitem float xcolor longtable collection-fontsrecommended ``` **Ubuntu/Debian**: ```bash sudo apt install texlive-xetex texlive-lang-chinese texlive-latex-extra texlive-fonts-recommended ``` **Windows**: 安装 TeX Live 完整版(https://www.tug.org/texlive/),或 MiKTeX ### 必需宏包 ctex, xecjk, fancyhdr, lastpage, fancyvrb, tabularx, enumitem, float, xcolor, longtable, graphicx, hyperref, array, geometry ### 编译命令 ```bash xelatex -interaction=nonstopmode 文件名.tex # 第一遍 xelatex -interaction=nonstopmode 文件名.tex # 第二遍(确保页码正确) ``` 需运行两遍以确保 `\pageref{LastPage}` 等交叉引用正确。