6.7 KiB
6.7 KiB
NixMsg 0.1.0 交付说明
| 项 | 内容 |
|---|---|
| 版本 | 0.1.0 |
| 日期 | 2026-09-30 |
| 功能合入 tip | 2ebcb6e1b85a8997c48de2711b013c83fa0440fc(W4 + Q4 已进 main) |
| 发布标签 | v0.1.0、sdk/go/v0.1.0(指向含本说明的提交;以 git rev-parse v0.1.0 为准) |
| 对应 | PRD.md、DEVELOPMENT.md、TASKS.md |
1. 已完成能力
- 服务端:端登录与会话令牌、在线目录、单聊/群发、离线保留、延迟/定时/撤回/回执、自助注册、管理 API、Prometheus
/metrics、SQLite 存储、单端口多协议(HTTP / WebSocket MQTT / TCP MQTT) - 管理后台网页:接真实
/api/admin,Playwright 主路径 e2e - SDK:Go、JS/TS、Python、Java/Android(源码与接入清单测试在仓库内;包未发布,见第 5 节)
- 部署文档:README 构建与启动、OPS.md 运维、Docker Compose / Dockerfile 定稿(镜像未推送)
2. F01–F23 验收结果
来源:test/accept/ACCEPTANCE.md(生成时间 2026-09-30T02:16:46Z)。对照表汇总:通过 23,失败 0,未测 0。
长时/环境限制项在对照表备注中保留「未测子项」说明,不单独占「未测」行:
- F03:未跑 1000 端全表 1s、真拔网线心跳超时(关连接模拟断线)
- F08:Linux netem 20% 丢包未测(本机 Windows)
- 压测:未跑 1000 连接保持 10 分钟
通过
| 编号 | 一句话 |
|---|---|
| F01 | 批量开通整批校验、停用、删除群主转让、删除后同编号重开不串数据 |
| F02 | 新设备登录后旧设备自动退出、换 IP 用令牌重连、两种密码锁定、重置密码后被踢、服务器故障不误报密码错误 |
| F03 | 断开后状态及时变离线,全表可列出 |
| F04 | 只通知订阅了的端 |
| F05 | 崩溃不丢已提交消息,消息号去重和冲突,密码门生效,配额生效 |
| F06 | 群成员收到同一份,入群前不补,发送者不收到自己的 |
| F07 | 256 KiB 通过,超出拒绝,接收上限生效 |
| F08 | 弱网最终送达且应用层不重复,重启后续传 |
| F09 | 保留时间从发送时刻起算,超时过期 |
| F10 | 短断线送到,长断线丢弃,服务器重启后宽限内重连送到 |
| F11 | 发送方离线后到点仍发送 |
| F12 | 延迟窗口内撤回对方收不到 |
| F13 | 未推送必撤成功;群部分确认得到部分撤回 |
| F14 | 回执能补送给当时离线的发送方 |
| F15 | 输一次记住、改密失效、回复免密、进群仍要密码、防多账号轮流猜 |
| F16 | 群主权限、退出后不再收到、解散后同编号新群不收旧消息 |
| F17 | 后台管端、管注册、管群、查记录,响应里没有正文;API 令牌可用且不能越权 |
| F18 | 送达后正文消失;记录天数 0 时连记录消失;防重仍在 |
| F19 | 四种 SDK 通过同一清单 |
| F20 | 裸 MQTT 能登录、收、确认、发 |
| F21 | 默认一个端口提供后台、WebSocket、TCP、注册;后台可分到单独端口 |
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 |
| F23 | 注册开关、安全码校验、换码不影响已注册、输错锁定 |
未测
无整行未测项。子项因长时间或环境限制未测的见上「长时/环境限制」与对照表备注。
失败
无。
3. 偏差(供负责人回来审阅)
完整正文见 DEVIATIONS.md。以下只列小节标题,不抄全文:
- T0.1 2026-09-30
- L-WIRE 2026-09-30
- L-UPLINK 2026-09-30
- T0.2 2026-09-30
- T0.3 2026-09-30
- T0.5 2026-09-30
- T0.4 2026-09-30
- P1 2026-09-30
- P2 2026-09-30
- P3 2026-09-30
- P4 2026-09-30
- N1 / N2 2026-09-30
- N3 2026-09-30
- M1 2026-09-30
- M2 / M3 / M4 2026-09-30
- I1 2026-09-30
- I2 / I3 / I4 2026-09-30
- I5 2026-09-30
- A1 2026-09-30
- A2 2026-09-30
- A3 2026-09-30
- 后台网页 W(W1–W3 假数据与分页等条目)
- W4 2026-09-30
- S1.1 传输层可注入假实现(Go / JS)
- S1.2 Go autopaho
OnConnectionUp内握手改异步 - S1.3 重连退避与「稳定在线 60s」状态机自管
- S1.4 Go 模块许可证标注
- S1.5 JS 回调命名与文档概念名
- S1.6 任务 1–3 当时未做范围(已被 S1.7 取代)
- S1.7 2026-09-30 任务 4–5 接入清单与打包文档
- S2-PY/JAVA 1–3 2026-09-30
- S2-PY/JAVA 4–5 2026-09-30
- Q1 / Q4 骨架 2026-09-30
- Q2 第一部分(已合并功能验收)2026-09-30
- Q2 补齐 + Q3(本机 Windows)2026-09-30
- Q4 定稿 + Q5 文档 2026-09-30
- Q accept-rest 补测 2026-09-30
4. 本轮验证
合并 feat/w4-e2e、feat/q-release-docs 后,在 main(功能 tip 2ebcb6e,含本说明的发布提交)执行:
| 项 | 结果 |
|---|---|
task check |
通过 |
go test ./test/... |
通过(accept / chaos / harness / load / report) |
task w:e2e(W4 合并后) |
通过(1 passed) |
sdk/go:go test ./... |
通过 |
sdk/js:npm test |
通过(23 passed) |
sdk/python:venv + pytest |
通过(22 passed);测完已删本地 .venv |
sdk/java:mvn test |
通过(scoop maven 3.9.16;测完已删 target) |
其后在 feat/accept-rest 补齐短时间验收并更新对照表:
| 项 | 结果 |
|---|---|
go test ./test/accept/ -count=1(含 F03/F04/F07/F10/F11/F14/F15/F18,F19 引用既有 SDK 清单) |
通过(约 24–27s) |
写入 ACCEPTANCE.md / q2_results.json |
通过 23,失败 0,未测 0 |
跳过:1000 连接 10 分钟浸泡、Linux netem 20% 丢包、F03 的 1000 端全表 1s 与真拔网线心跳超时。
5. 构建与启动
请直接按仓库文档操作,此处不重复步骤:
- 构建、交叉编译、Docker 本地构建与启动示例:README.md
- 配置项、备份、升级、证书、时钟、指标:docs/OPS.md
- 配置样例:
deploy/config.example.yaml、deploy/config.docker.yaml
常用入口:task check / task build,然后 admin init + serve(见 README)。
6. 未发布 SDK 包与镜像的原因
按本次总控收尾要求:不创建 Gitea package 令牌,因此:
- 未
npm/pip/ Maven 发布到 Gitea 包仓库(@nixevol/nixmsg、nixmsg、asia.asio.nixmsg:nixmsg-sdk) - 未
docker push(含git.asio.asia/nixevol/nixmsg的版本标签与latest) - 未 执行多架构
buildx正式推送
有 package 读写令牌且负责人授权后,再按 TASKS.md 第 3 节与 Z3、以及 README / OPS 中的发布命令补做。
7. 标签
在本交付说明提交(含 docs/RELEASE.md)上打附注标签 v0.1.0 与 sdk/go/v0.1.0 并推送到 origin(若远端已存在同名标签则不覆盖,见当时操作记录)。