docs: 确认全部默认项并补充发布、许可证和最低版本要求

This commit is contained in:
Nixevol
2026-09-30 05:22:15 +08:00
parent 2ab09507ff
commit 6daaa95f1f
5 changed files with 74 additions and 38 deletions
+17 -9
View File
@@ -2,9 +2,9 @@
| 项 | 内容 |
|---|---|
| 版本 | 0.4 |
| 版本 | 0.5 |
| 日期 | 2026-09-30 |
| 状态 | 待复核后交给开发 |
| 状态 | 已确认,可交给开发 |
| 读者 | 产品负责人、开发组、后续审核 |
| 配套 | [DEVELOPMENT.md](./DEVELOPMENT.md) 是实现规范。两者冲突时,以本文已确认的产品行为为准,并在 `docs/DEVIATIONS.md` 记录 |
| 修订 | 见第 11 节 |
@@ -358,7 +358,7 @@ NixMsg 是一套自建的消息中转服务。设备、程序、App 都作为「
网页后台,界面中文。功能:
- 登录、修改管理员自己的密码、退出。
- 登录、修改管理员自己的密码(至少 12 位)、退出。页面上的时间都按浏览器本地时区显示。
- 概览:端数量(其中自助注册的数量)、在线数、群数量、待投递数、版本。
- 端:查询(可按来源筛选:后台开通、自助注册)、开通、批量开通、编辑、启停、删除、重置登录密码、设置或清除对话密码、踢下线、解除登录锁定。列表显示是否在线、最近上下线时间、来源;支持多选后批量停用、删除,方便清理异常注册。
- 注册:开启或关闭自助注册;查看、手填或生成注册安全码。
@@ -400,6 +400,8 @@ NixMsg 是一套自建的消息中转服务。设备、程序、App 都作为「
- 修改自己的名称、默认延迟、登录密码(需要旧密码)、对话密码。
- 发送方暂时连不上服务器时,发送进入内存队列,重连后按原消息号再交;已经发出但没等到结果的也一样。进程退出则队列丢失。除发送以外的请求在离线时直接失败。
- 本机时间与服务器偏差由 SDK 校正后再计算定时发送。
- 最低支持:Node.js 20、近两年发布的主流浏览器、Python 3.10、Java 8、Android API 24(D30)。
- 发布:npm 包 `@nixevol/nixmsg`、PyPI 包 `nixmsg`、Maven 包 `asia.asio.nixmsg:nixmsg-sdk` 发布到 Gitea 包仓库(git.asio.asia);Go SDK 直接从代码仓库获取,模块 `git.asio.asia/nixevol/NixMsg/sdk/go`。
验收:每种语言都通过 DEVELOPMENT.md 里的同一份接入清单。清单覆盖注册、登录、收发、去重、重连、离线队列、撤回、定时、群、对话密码、改密、被踢、超限。
@@ -425,10 +427,11 @@ NixMsg 是一套自建的消息中转服务。设备、程序、App 都作为「
### F22 部署与运维
- 一个 Go 程序,一个可执行文件,内置 MQTT 和网页。不另外部署数据库、消息队列或缓存。
- 同时提供 Docker 镜像(amd64、arm64)和 docker-compose 示例,装有 1Panel 的服务器可以直接用它的容器编排部署。
- 同时提供 Docker 镜像(amd64、arm64,发布在 `git.asio.asia/nixevol/nixmsg`)和 docker-compose 示例,装有 1Panel 的服务器可以直接用它的容器编排部署。
- 数据在一个目录里的 SQLite 文件。
- 首次使用先运行初始化命令生成管理员密码(只在终端显示一次,不写日志),再启动服务。
- 提供备份命令。升级时自动迁移数据库;迁移前自动把库复制一份。
- 提供备份命令。程序本身不做定时备份,用 1Panel 计划任务或 cron 定时调用(D32)。升级时自动迁移数据库;迁移前自动把库复制一份。
- 源码、SDK 包和镜像都公开可读;许可证为专有,见仓库根目录的 LICENSE(D33)。
- 提供健康检查接口,以及 Prometheus 格式的监控指标(在线数、待投递数、投递耗时等,不含正文和编号明细)。指标只在后台端口上开放;后台和端共用端口时,要带配置的令牌才能访问。
验收:
@@ -507,7 +510,7 @@ stateDiagram-v2
## 9. 写进本文的默认
下面是写文档时定下的默认规则。「已确认」是负责人已经认可的;「待确认」的在交给开发前还可以改,改的话同步改本文和 DEVELOPMENT.md 对应小节。D14 起是 0.2 新增,D26 起是 0.3 新增,D28 起是 0.4 新增。
下面是写文档时定下的默认规则,已全部由负责人确认。以后要改,同步改本文和 DEVELOPMENT.md 对应小节,并在第 11 节记录。D14 起是 0.2 新增,D26 起是 0.3 新增,D28 起是 0.4 新增,D30 起是 0.5 新增。
| 编号 | 默认 | 状态 |
|---|---|---|
@@ -528,7 +531,7 @@ stateDiagram-v2
| D15 | 注册时编号可以自选也可以留空生成;登录密码留空则服务器生成并只返回一次;注册不需要审核 | 已确认 2026-09-30 |
| D16 | 不做忘记密码自助找回和端自己注销,都由管理员处理 | 已确认 2026-09-30 |
| D17 | 端编号和群编号只允许小写字母、数字、`_`、`.`、`-`;消息号区分大小写 | 已确认 2026-09-30 |
| D18 | 登录密码失败按「编号 + 来源 IP」锁定(5 分钟 10 次),另按编号计总数暂停密码登录(1 小时 50 次);会话令牌重连不受锁定影响;注册安全码按来源 IP 锁定 | 按 2026-09-30 反馈修改,待确认 |
| D18 | 登录密码失败按「编号 + 来源 IP」锁定(5 分钟 10 次),另按编号计总数暂停密码登录(1 小时 50 次);会话令牌重连不受锁定影响;注册安全码按来源 IP 锁定 | 已确认 2026-09-30 |
| D19 | 不保留的消息推给在线端后,确认超时(5 分钟)仍未确认就按已丢弃结束,不再重推;保留的消息在保留期内继续重推 | 已确认 2026-09-30 |
| D20 | 撤回不单独发回执,结果看撤回请求的返回 | 已确认 2026-09-30 |
| D21 | 停用或删除端时,它发出、还没推送的消息一并作废 | 已确认 2026-09-30 |
@@ -537,9 +540,13 @@ stateDiagram-v2
| D24 | 对话密码另按被猜的端限总数:1 小时错 50 次后暂停新的验证 1 小时,已有授权不受影响 | 已确认 2026-09-30 |
| D25 | 每个端未完成的发出消息最多 10000 条,排队待收的投递最多 10000 条;都可配置,设为 0 表示不设上限 | 已确认 2026-09-30 |
| D26 | 开放自助注册后,目录仍对所有端可见,谁都能列出全部端 | 已确认 2026-09-30 |
| D27 | 管理 API 令牌不过期,停用或删除后立即失效;权限等同管理员,但不能改管理员密码、不能管理令牌;令牌只在创建时显示一次 | 待确认 |
| D27 | 管理 API 令牌不过期,停用或删除后立即失效;权限等同管理员,但不能改管理员密码、不能管理令牌;令牌只在创建时显示一次 | 已确认 2026-09-30 |
| D28 | 每次用密码登录都换新的会话令牌,旧令牌立即作废,旧设备自动退出 | 已确认 2026-09-30(负责人提出) |
| D29 | 用令牌重连不换令牌;令牌 30 天没用自动失效(可配置,0 表示不失效);登录密码不能以 `nst_` 开头;端可以主动退出登录、作废令牌 | 待确认 |
| D29 | 用令牌重连不换令牌;令牌 30 天没用自动失效(可配置,0 表示不失效);登录密码不能以 `nst_` 开头;端可以主动退出登录、作废令牌 | 已确认 2026-09-30 |
| D30 | SDK 最低支持 Node.js 20、近两年发布的主流浏览器、Python 3.10、Java 8、Android API 24;Go SDK 和服务端的 Go 版本要求相同 | 已确认 2026-09-30 |
| D31 | 管理员密码至少 12 位;后台所有时间按浏览器本地时区显示 | 已确认 2026-09-30 |
| D32 | 程序本身不做定时备份,用 1Panel 计划任务或 cron 定时调用备份命令 | 已确认 2026-09-30 |
| D33 | 源码仓库、SDK 包、Docker 镜像都公开可读;许可证为专有,公开不代表授权使用 | 已确认 2026-09-30 |
## 10. 验收总表
@@ -579,3 +586,4 @@ stateDiagram-v2
| 0.2 | 2026-09-30 | 端口改为「端只用一个固定端口,后台可用单独端口」(F21)。新增端自助注册(F23),从「本期不做」中移除。按审查补充和修正:编号只允许小写(F01、F16);批量开通整批校验(F01);停用或删除端时作废它发出的消息,删除后编号可复用(F01);登录锁定按编号加 IP,并区分服务器故障(F02);消息号按请求内容判冲突,防重标记与记录并存(F05、F18);请求频率上限写入需求(F05);接收上限按整条数据计算(F07);不保留消息的确认超时(F08、F09);服务器重启后的宽限和补发(F10、F11);撤回结果的判定和不发回执(F13、F14);解散群时作废定时消息(F16);后台批量停用、删除和注册设置(F17);首次启动先初始化(F22);单位统一为 KiB;重试先认防重再校验(F05);每个端未完成消息和排队投递的上限(F05);对话密码另按被猜的端限总数(F15);后台端列表显示在线状态(F17);注册安全码和明文传输的提醒(F23);手机 App 在后台收不到提醒的说明(5.2);新增默认 D14–D25 |
| 0.3 | 2026-09-30 | 负责人确认第 9 节 D1–D26(D27 待确认):开放注册后目录仍对所有端可见(D26),配额可设为 0 表示不设上限(D25)。新增管理 API 令牌和管理操作日志(F17)。F22 增加 Docker 镜像和 Prometheus 监控指标。F21 写明证书文件自动重载、生产环境用 1Panel 申请和续签。技术栈写入 DEVELOPMENT.md 第 2 节:Go + 标准库 net/http、SQLite + 手写 SQL、不用 Redis、Vue 3 + TypeScript + Naive UI 打包嵌入程序 |
| 0.4 | 2026-09-30 | 登录改为会话令牌(F02):首次用密码登录后发令牌,重连用令牌、和 IP 无关;每次用密码登录都换新令牌,旧设备自动退出(D28);令牌闲置 30 天失效,可以主动退出登录(D29)。密码锁定改为按编号加 IP、按编号总数两种,只拦密码登录,不拦令牌重连(D18);后台可以解除锁定(F01、F17);登录密码不能以 `nst_` 开头。新增 docs/TASKS.md 开发任务拆分 |
| 0.5 | 2026-09-30 | 负责人确认 D18、D27、D29,第 9 节全部确认,状态改为可交给开发。新增 D30–D33:SDK 最低支持版本、管理员密码至少 12 位和后台时间显示、定时备份方式、源码和发布物公开可读但许可证为专有。F19 写明 SDK 包名和发布到 Gitea 包仓库;F22 写明镜像地址、备份方式和许可证 |