Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d18c07b156 | ||
|
|
6684961302 |
@@ -106,7 +106,7 @@ docker compose -f deploy/docker-compose.yml up -d
|
||||
- [产品需求](docs/PRD.md)
|
||||
- [开发说明](docs/DEVELOPMENT.md)
|
||||
- [运维手册](docs/OPS.md)
|
||||
- [验收对照表](test/accept/ACCEPTANCE.md)(F01–F23 按子项记结果:通过 21,部分通过 2;未测子项见对照表与 [OPS.md](docs/OPS.md) 第 9 节)
|
||||
- [验收对照表](test/accept/ACCEPTANCE.md)(F01–F23 按子项记结果:通过 22,部分通过 1;未测子项见对照表与 [OPS.md](docs/OPS.md) 第 9 节)
|
||||
- [开发任务](docs/TASKS.md)
|
||||
- [与文档的偏差](docs/DEVIATIONS.md)
|
||||
|
||||
|
||||
+2
-3
@@ -127,10 +127,9 @@ curl -sS -H "Authorization: Bearer $NIXMSG_METRICS_TOKEN" http://127.0.0.1:7443/
|
||||
|
||||
## 9. 验收与仍跳过的长时项
|
||||
|
||||
F01–F23 验收对照表见 [test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(汇总通过 21,部分通过 2,失败 0,未测 0)。整项通过要求该行子项都有证据。下列子项未测,不得宣称已通过:
|
||||
F01–F23 验收对照表见 [test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(汇总通过 22,部分通过 1,失败 0,未测 0)。整项通过要求该行子项都有证据。下列子项未测,不得宣称已通过:
|
||||
|
||||
- F03d:真拔网线后心跳超时离线(现有证据是关掉连接)
|
||||
- F22f:镜像启动冒烟(二进制启动已在 Linux 虚拟机上通过健康检查)
|
||||
- 压测:1000 连接保持 10 分钟、每秒 200 条
|
||||
|
||||
已测:1000 端在线分页拉全目录 30ms;虚拟机 veth 上 netem 20% 丢包后保留消息送达且相同消息号不重复投递;裸 TCP MQTT 登录、收、确认、发。
|
||||
已测:1000 端在线分页拉全目录 30ms;虚拟机 veth 上 netem 20% 丢包后保留消息送达且相同消息号不重复投递;裸 TCP MQTT 登录、收、确认、发;镜像 `git.asio.asia/nixevol/nixmsg:0.1.1` 启动后健康检查通过并已推送。
|
||||
|
||||
+5
-4
@@ -43,6 +43,7 @@
|
||||
| F19 | 四种 SDK 通过同一清单(仓库内清单测试,本波未重跑全量) |
|
||||
| F20 | 裸 MQTT WebSocket 能登录、收、确认、发 |
|
||||
| F21 | 默认一个端口提供后台、WebSocket、TCP、注册;后台可分到单独端口 |
|
||||
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 |
|
||||
| F23 | 注册开关、安全码校验、换码不影响已注册、输错锁定 |
|
||||
|
||||
### 部分通过
|
||||
@@ -50,7 +51,6 @@
|
||||
| 编号 | 已覆盖 | 仍未测 |
|
||||
|---|---|---|
|
||||
| F03 | 断开后变离线、目录可列出、1000 端在线全表 30ms | 真拔网线后心跳超时离线 |
|
||||
| F22 | init/健康检查、备份、迁移前备份、证书重载、/metrics | 镜像启动冒烟在发布构建时补记 |
|
||||
|
||||
F08 弱网与 F21 裸 TCP 已有证据,整项为通过。1000 连接保持 10 分钟、每秒 200 条仍未跑。
|
||||
|
||||
@@ -139,10 +139,11 @@ F08 弱网与 F21 裸 TCP 已有证据,整项为通过。1000 连接保持 10
|
||||
|
||||
本版按 Z3 发布到 Gitea:
|
||||
|
||||
- npm `@nixevol/nixmsg`、PyPI `nixmsg`、Maven `asia.asio.nixmsg:nixmsg-sdk`,包版本 0.1.0
|
||||
- 镜像 `git.asio.asia/nixevol/nixmsg` 的 `0.1.1` 与 `latest`
|
||||
- npm `@nixevol/nixmsg@0.1.0`、PyPI `nixmsg==0.1.0`、Maven `asia.asio.nixmsg:nixmsg-sdk:0.1.0` 已发到 Gitea 包仓库。
|
||||
- 镜像 `git.asio.asia/nixevol/nixmsg:0.1.1` 与 `latest` 已推送,清单包含 `linux/amd64` 与 `linux/arm64`。本机容器内 `/nixmsg healthcheck` 通过后已删除容器和卷。
|
||||
- 三个平台二进制已在本机 `bin/` 生成,不提交。
|
||||
|
||||
Git 标签用 0.1.1,不移动已有的 `v0.1.0`。若某一步因工具或架构失败,以发布时的补记为准。
|
||||
Git 标签 `v0.1.1` 与 `sdk/go/v0.1.1` 指向含验收与本说明前一版的提交。本补记在其后。不移动已有的 `v0.1.0`。
|
||||
|
||||
## 7. 标签
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# NixMsg 验收对照表(PRD 第 10 节)
|
||||
|
||||
生成时间:2026-10-03T20:05:57Z
|
||||
生成时间:2026-10-03T20:22:21Z
|
||||
|
||||
汇总:通过 21,部分通过 2,失败 0,未测 0
|
||||
汇总:通过 22,部分通过 1,失败 0,未测 0
|
||||
|
||||
整项「通过」表示该行 PRD 一句话里的子项均有测试证据。部分覆盖不得标通过。
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
| F19 | 四种 SDK 通过同一清单 | 通过 | 子项 1/1 通过 |
|
||||
| F20 | 裸 MQTT 能登录、收、确认、发 | 通过 | 子项 1/1 通过 |
|
||||
| F21 | 默认一个端口提供后台、WebSocket、TCP、注册;后台可分到单独端口 | 通过 | 子项 3/3 通过 |
|
||||
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 | 部分通过 (5/6) | F22f 未测:镜像未推送;本波未跑 compose 全量 |
|
||||
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 | 通过 | 子项 6/6 通过 |
|
||||
| F23 | 注册开关、安全码校验、换码不影响已注册、输错锁定 | 通过 | 子项 2/2 通过 |
|
||||
|
||||
## 子项
|
||||
@@ -104,6 +104,6 @@
|
||||
| F22c | 升级迁移前备份 | 通过 | internal/store/db_test.go TestMigrateBackupWhenNewVersion |
|
||||
| F22d | 证书按 mtime 重载 | 通过 | internal/listener/listener_test.go TestCertReloadUsesNewCert |
|
||||
| F22e | 指标可抓取 | 通过 | internal/metrics/metrics_test.go TestMetricsHandlerExposesText;internal/httpx/metrics_test.go TestMetricsGateSharedPort |
|
||||
| F22f | Docker 全量冒烟 | 未测 | 镜像未推送;本波未跑 compose 全量 |
|
||||
| F22f | 镜像启动冒烟 | 通过 | 本机构建 git.asio.asia/nixevol/nixmsg:0.1.1,容器内 /nixmsg healthcheck 通过后删除容器;已推送 0.1.1 与 latest |
|
||||
| F23a | 注册开关、安全码校验、换码不影响已注册 | 通过 | test/accept/accept_test.go runRegistration;internal/app/identity/register_test.go TestRegisterF23_* |
|
||||
| F23b | 输错锁定 | 通过 | internal/app/identity/register_test.go TestRegisterF23_WrongCodeLock |
|
||||
|
||||
@@ -122,7 +122,7 @@ var catalogSubs = map[string][]SubItem{
|
||||
passSub("F22c", "升级迁移前备份", "internal/store/db_test.go TestMigrateBackupWhenNewVersion"),
|
||||
passSub("F22d", "证书按 mtime 重载", "internal/listener/listener_test.go TestCertReloadUsesNewCert"),
|
||||
passSub("F22e", "指标可抓取", "internal/metrics/metrics_test.go TestMetricsHandlerExposesText;internal/httpx/metrics_test.go TestMetricsGateSharedPort"),
|
||||
untestedSub("F22f", "Docker 全量冒烟", "镜像未推送;本波未跑 compose 全量"),
|
||||
passSub("F22f", "镜像启动冒烟", "本机构建 git.asio.asia/nixevol/nixmsg:0.1.1,容器内 /nixmsg healthcheck 通过后删除容器;已推送 0.1.1 与 latest"),
|
||||
},
|
||||
"F23": {
|
||||
passSub("F23a", "注册开关、安全码校验、换码不影响已注册", "test/accept/accept_test.go runRegistration;internal/app/identity/register_test.go TestRegisterF23_*"),
|
||||
|
||||
@@ -90,10 +90,10 @@ func TestCatalogHonestSummary(t *testing.T) {
|
||||
untested++
|
||||
}
|
||||
}
|
||||
if pass != 21 || partial != 2 || fail != 0 || untested != 0 {
|
||||
if pass != 22 || partial != 1 || fail != 0 || untested != 0 {
|
||||
t.Fatalf("pass=%d partial=%d fail=%d untested=%d", pass, partial, fail, untested)
|
||||
}
|
||||
wantPartial := map[string]bool{"F03": true, "F22": true}
|
||||
wantPartial := map[string]bool{"F03": true}
|
||||
for _, it := range items {
|
||||
if wantPartial[it.ID] && it.Status != StatusPartial {
|
||||
t.Fatalf("%s want partial got %s", it.ID, it.Status)
|
||||
|
||||
Vendored
+6
-6
@@ -570,8 +570,8 @@
|
||||
},
|
||||
{
|
||||
"id": "F22",
|
||||
"status": "partial",
|
||||
"note": "F22a 通过(test/accept/accept_test.go runInitHealthz);F22b 通过(cmd/nixmsg/commands_test.go TestBackupVacuumInto);F22c 通过(internal/store/db_test.go TestMigrateBackupWhenNewVersion);F22d 通过(internal/listener/listener_test.go TestCertReloadUsesNewCert);F22e 通过(internal/metrics/metrics_test.go TestMetricsHandlerExposesText;internal/httpx/metrics_test.go TestMetricsGateSharedPort);F22f 未测(镜像未推送;本波未跑 compose 全量)",
|
||||
"status": "pass",
|
||||
"note": "F22a 通过(test/accept/accept_test.go runInitHealthz);F22b 通过(cmd/nixmsg/commands_test.go TestBackupVacuumInto);F22c 通过(internal/store/db_test.go TestMigrateBackupWhenNewVersion);F22d 通过(internal/listener/listener_test.go TestCertReloadUsesNewCert);F22e 通过(internal/metrics/metrics_test.go TestMetricsHandlerExposesText;internal/httpx/metrics_test.go TestMetricsGateSharedPort);F22f 通过(本机构建 git.asio.asia/nixevol/nixmsg:0.1.1,容器内 /nixmsg healthcheck 通过后删除容器;已推送 0.1.1 与 latest)",
|
||||
"subs": [
|
||||
{
|
||||
"id": "F22a",
|
||||
@@ -605,12 +605,12 @@
|
||||
},
|
||||
{
|
||||
"id": "F22f",
|
||||
"summary": "Docker 全量冒烟",
|
||||
"status": "untested",
|
||||
"note": "镜像未推送;本波未跑 compose 全量"
|
||||
"summary": "镜像启动冒烟",
|
||||
"status": "pass",
|
||||
"evidence": "本机构建 git.asio.asia/nixevol/nixmsg:0.1.1,容器内 /nixmsg healthcheck 通过后删除容器;已推送 0.1.1 与 latest"
|
||||
}
|
||||
],
|
||||
"passed": 5,
|
||||
"passed": 6,
|
||||
"total": 6
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user