← 返回周目标完成情况

测试资产导航

从业务功能找到验收标准、执行脚本和复跑命令。Feature 保留业务预期,BDD 框架按步骤绑定;本页提供模块入口,不复制场景正文或维护逐步骤映射。单元、接口和浏览器测试继续保存在原目录。AC 编号的含义查同目录的 AC 定义表,本页只给入口不解释编号。

2026-09-24 master 基线盘点:49 个 Feature、320 个场景定义(290 个 场景 + 30 个 场景大纲)。按层标签分布:30 个 Feature 的场景全部标 @e2e-only(只在浏览器层),6 个全部标 @integration-only(只在 API 层),其余 13 个两层都要。大纲展开后的运行次数由 runner 决定。本页不是运行通过报告,实际结果见验收矩阵(原文引用:docs/standards/验收矩阵.md)和本轮原始报告。

按功能定位

模块采用“业务域.能力”两级名称,仅作导航;没有给既有 Feature 强制添加一套新标签。检索先读本表,再查看完整场景、相关模块及共享 fixture。不能将此表当作代码行到测试的自动映射。同一个 Feature 可能出现在多行,浏览器步骤按步骤文本匹配、不按文件名绑定,表内只列主入口。

模块与常见表达 用例入口 API 绑定入口 浏览器步骤入口
identity.login / identity.session:登录、首登、管理员、撤权、401/403、账号菜单与登出 底座、后台用户管理、账号菜单 底座、用户角色 底座、用户角色、账号菜单
files.storage:封面、附件、图片类型、文件归属、内容与存储边界 文件边界,上传前置散见发布任务、交付与作品 共享上传步骤、发布任务;边界 Feature 不适用,按 @e2e-only 文件存储边界、历史工程件
tasks.publish:后台发布、必填、截止日期、幂等、报酬 发布任务、发布并发 发布、并发 发布;并发不适用,按 @integration-only
courses.certify:前台浏览、课程、认证截图、任务专属认证、读失败恢复 浏览与认证、认证并发、课程页恢复、任务专属认证 浏览与认证、并发;两个浏览器 Feature 不适用,按 @e2e-only 业务、页面、恢复、任务专属
claims.accept:承接、认证前置、预付、过期、任务冲突、今日行动跨页 承接与预付、承接并发、承接页恢复、跨页承接 承接与预付;两个浏览器 Feature 不适用,按 @e2e-only 业务、页面、跨页分页
deliveries.submit:草稿、保存、提交、完成、尾款、作品 交付与作品、交付并发、交付页恢复 交付与作品(同文件绑并发) 业务、页面、状态迁移、验收
deliveries.boundary:交付边界、交互补充、资源重命名、身份确认 边界恢复、交互补充、资源重命名、身份确认边界 不适用,按 @e2e-only 边界、交互、重命名、身份、阳光玻璃恢复
works.preview / deliveries.download:成果下载、作品帧封面、私有预览 成果下载、作品帧封面边界 不适用,按 @e2e-only 下载、作品帧、作品预览、私有资源
story.reflow:Story 成果回流、交付回流、审查回归 成果回流、交付回流、审查回归 成果、交付;审查回归不适用,按 @e2e-only 业务、页面、交付回流、审查
credits.ledger:积分接入、账户与档位、金币、积分线程生命周期 积分接入、线程生命周期、线程浏览器验收 积分接入(共享步骤 金币、可靠性)、线程生命周期 积分、金币、线程运行期(标 @runtime-browser,走 运行期配置);生命周期不适用,按 @integration-only
credits.recovery:积分异常、服务故障与并发、映射冲突、回执归属、核对档位、发布重试、轮询刷新 异常与恢复、服务故障与并发、映射冲突回滚、回执归属校验、核对与档位边界、发布重试与历史入口、轮询与刷新 不适用,按 @e2e-only 恢复、并发、轮询,其余 credits-*.steps.ts 同在 steps 下按同名查找
governance.manage:认证审核列表、作品显隐、流水、后台恢复 后台治理、治理页恢复 后台治理;页面恢复不适用,按 @e2e-only 治理、页面
dashboard.count:全量统计、提交后的计数 后台统计 后台统计 后台统计
workbench.layout / activity.feed:工作台布局保存、首页各模块按真实数据呈现(今日行动分组、我的任务两档、我能接的单、学习推荐、作品与积分)、换模板、看看别人在做什么、消息未读、今日行动放大、创业者模板占位与能力推荐、首读按有无承接写入起步或常规布局、只有团团的旧布局读出为空、组件编排、本人动态、未开放边界 布局保存、工作台组件、首页工作台模块 工作台;组件与首页模块 Feature 不适用,按 @e2e-only 工作台、回归、鉴权边界、首页模块、首页模板与动态、创业者模板
discovery.browse:发现页能力入口、任务卡、切页 发现能力、任务卡与切页 不适用,按 @e2e-only 任务卡、能力入口
shell.nav:v20 五导航、首次走查修正、交互覆盖纠偏 v20 五导航、首次走查修正、交互覆盖纠偏 不适用,按 @e2e-only 导航、外壳、走查、走查边界、覆盖纠偏
application.empty:初始空库、空列表、未发布状态、任务推荐空态、全新平台的首页空态 初始空状态 不适用,按 @e2e-only 初始空状态、任务推荐、首页空态
platform.config:共享平台配置启动并完成交付 共享平台配置 共享配置 共享配置,标 @shared-config、走独立的 共享配置 Playwright 配置
platform.logging:后端服务日志采集、目录切换 日志采集 日志采集 不适用,按 @integration-only

| tuantuan.projects:需求澄清、摘要确认、任务计划与恢复 | 需求到拆任务、协议与恢复、页面恢复、归档恢复 | 团团项目;后三份按场景 @e2e-only | 主流程、协议、恢复、归档恢复 | | tuantuan.conversations / projects.canvas:独立闲聊、立项前快捷回答(AC-156/157)、五轮问答至期限及刷新原文(AC-149/151/156)、显式立项、手改、原键恢复、生成计划离页返回(AC-154)与三视图 | 统一会话到画布 | 统一会话到画布 | 统一会话到画布、计划离页恢复 |

关联范围:登录与权限影响所有业务;上传影响发布、课程认证和交付;发布/认证影响承接;承接涉及结算及交付草稿;提交涉及工作流、验收、作品、结算、积分与统计;积分回执影响结算与工作台展示;Story 回流依赖交付完成;工作台与发现页聚合前述各域的读模型。变更共享准备或断言时检查所有调用方,不能只回归当前模块。

单元、接口与共享测试

层/资产 位置与定位方式 入口
API 单元 apps/api/app/<域>/tests/;域为 acceptances、activity、claims、common、courses、credits、dashboard、deliveries、files、identity、settlements、story、tasks、tuantuan、workbench、workflows、works 根目录 make unit 包含 API 与 Web;单独收集见下方
Web 单元 apps/web/src/features/<域>/*.test.ts(x),域为 activity、claims、courses、dashboard、deliveries、identity、projects、settlements、story、tasks、tuantuan、workbench、works;另有 src/lib/、src/routes/、src/test/ Web 目录 npm run test:coverage
API 集成 tests/integration;按域名查 test_*.py,同时覆盖真实数据库、接口和并发 根目录 make integration 同时运行集成及 API BDD
契约/接口文档 tests/contract、OpenAPI、Apifox 单接口模板 make contract、make spectral、make client;模板本地检查不代表远端执行
API 共享准备 tests/conftest.py、BDD conftest、helpers;按域拆分的前置与并发编排见 tests/acceptance 下的 *_helpers.py、*_concurrency.py、governance_probes.py、credits_*_steps.py,浏览器用数据构造见 tests 下的 *_browser_data.py、publish_data.py、seed_publish.py 真数据库、独立测试身份、事务与场景状态;共享前置自身的回归在 test_deliveries_helpers.py、test_governance_probes.py,改前置先跑这两条
Web 共享准备 fixtures、global-setup、support、主 Playwright 配置;另有复跑、运行期、共享配置三份专用配置 整轮重置专用库;initial-empty → business → global-count 有执行依赖;主配置排掉 @integration-only、@runtime-browser、@shared-config
工具自身测试 tools/tests 根目录 make tools-test,行与分支覆盖 100%
覆盖与变异 覆盖说明、API 变异配置、Web 变异配置 make coverage;make mutation 单独运行

查看实际收集的用例

从仓库根执行下面的 Bash/WSL 命令。先按 应用说明 安装锁定依赖;收集列表不是执行通过。

# API 的每条测试、参数化实例与 node ID。
(cd apps/api && ENV_FILE=.env.test uv run pytest app tests/integration tests/acceptance tests/contract --collect-only -q)

# Web 单元测试列表。
(cd apps/web && npx vitest list)

# 按实际 BDD 绑定、标签和项目依赖生成浏览器用例列表。
(cd apps/web && npm run test:e2e -- --list)

执行与复跑

迭代期改完一处用根目录 make check-changed(不算门禁),只复跑几条浏览器场景用 make e2e-recheck GREP='<正则>',改了可变异文件用 make mutation-changed;收口与合并前用 make check 加 make mutation。需要保存命令、版本和每轮结果时,使用 tools/testing/run.py 的记录入口。已有依赖安装、专用测试库与本地端口是前提;测试身份通过假登录建立,不读取生产凭据。先核对目标环境,端到端不能指向共享或业务数据库。

定向例子:

# 真实执行发布模块 API BDD。
(cd apps/api && ENV_FILE=.env.test uv run pytest tests/acceptance/test_后台发布任务.py -q)

# 真实执行发布标签的浏览器场景;Playwright 仍执行项目的前置依赖。
(cd apps/web && npm run test:e2e -- --project=business --grep '@tasks')

定向通过只代表所选范围,不能用它生成全量通过矩阵;某些全量统计用例依赖完整业务阶段,应执行完整套件。失败后先保留报告,按用例/脚本/数据/环境/程序区分根因,修复后使用新运行记录复测。任何新写或调整的脚本都要实际执行。

维护

新增、移动或废弃 Feature 时同步本页所属模块及入口,并确保每个 .feature 至少出现在一行;新增 AC 编号同步 AC 定义表;修改共享步骤/fixture 时同步影响范围。正常、异常、边界与权限预期仍写在 Feature,复用框架绑定。表内链接只负责找到实现入口,不替代 runner 的收集与绑定检查。检索零条或未定义步骤必须处理,不能当通过;新用例若先进行 AI 首测,首测证据与脚本实跑分别保留。

项目专家执行

executors.execution(AC-158~191、AC-197、AC-216,AC-187 已退役):派单、直接续话、恢复、用户验收与事实、目录同步、私有专家与团团整理专家回复,共118实例。原33实例与AC-189/190团团统一整理自然语言回复、AC-191私有专家保留API与浏览器双层;AC-188原CLI目录同步仍为@integration-only;新增管理员后台同步失败重试、先私有后市场去重和重复同步的浏览器场景(AC-188/191),步骤见 executor-catalog-sync.steps.ts;共80个@e2e-only实例补协议故障、本人交付、附件与DNS安全、读取/下载恢复、丢回执幂等重试、格式/编号边界、长历史分页、归档/真实404、写入口守卫、真实worker恢复、完整流回执、旧配置与附件网络/事务/取消接管边界。只有新版(v2)已规划项目的正式任务可派单,专家无需 JSON,团团将完整正文保存附件,摘要与阻塞事项单独整理(2026-10-16)。上游复用AC-127~134。

API绑定 apps/api/tests/acceptance/test_专家执行.py;浏览器主绑定 apps/web/e2e/steps/executions.steps.ts,补充步骤为同目录 execution-*.steps.ts,共享动作在 e2e/support/execution-*.ts。HTTP安全集成见 test_ndclaw_http.py、test_execution_remote_http.py、test_execution_upload_http_faults.py、test_execution_legacy_file_http.py。

故障装配位于 apps/api/tests/fake_executions/ 与 tests/fake_cs/:外部协议、DNS/传输、SQL登记及COMMIT回执边界可控,产品权限、事务与状态机保持真实;真实租约按服务器时钟到期,不改执行状态/token。预提交回执、首帧、权威查询及CS响应体屏障分别验证取消接管后的迟到请求不能出网、覆写状态或遗留未绑定对象。实际通过范围以当轮验收矩阵及任务4交付档案为准,场景绑定和定点通过不代替完整门禁。

团团计划任务人工维护

tuantuan.plan-maintenance(AC-192~196):人工新增、编辑、引用删除、执行历史保护、版本冲突与旧版兼容,5 个浏览器专属场景(@e2e-only)。绑定 浏览器步骤,共用动作和场景状态在 计划维护支持。前置项目由真实平台 API 与确定性测试模型持久化;被测维护和本人交付通过浏览器执行,外部服务与 PostgreSQL 为专用本机实例。定点通过仅表示本次维护范围,不代替全量门禁。

团团直播持续陪跑(2026-10-14)

tuantuan.live-accompaniment(AC-214):指派批准、依赖排队、精确版本预审、人工验收、继续规划、结项和下一项目,1 个浏览器专属场景(@e2e-only、@P0)。绑定直播陪跑步骤。自动场景使用两项依赖任务和受控专家,不替代九位真实私有专家的完整交付验收;真实验证进度与证据见实施计划。

任务隔离回归:外部专家 Feature 的“单项专家执行中仍可启动独立任务并验收其他交付”通过真实后端与专家首帧屏障验证跨任务启动、验收及迟到回执,绑定 execution-isolation.steps.ts。

预审恢复回归:外部专家 Feature 的“预审失败并遇版本变化后仍可派单并重新发送当前版本预审”,绑定 tuantuan-prereview-recovery.steps.ts,使用项目/会话隔离的受控模型失败与真实版本冲突,覆盖失败解锁、原键保存、新键重发及改动空态。同文件“另一项交付的预审失败后放弃原请求不再阻塞本项预审”(AC-215)覆盖放弃失败请求后输入框解锁、其他交付的预审入口恢复且服务端失败记录保留。

项目内提醒回归(AC-216):外部专家 Feature 的“用户在一项任务的工作间时另一任务交付由团团提醒并直达”,绑定 tuantuan-nudge.steps.ts:定位任务执行中停在其工作间,另一任务由受控专家真实交付,在五秒预算内断言全站一句话提醒并点开直达该版交付,工作间初始折叠团团。

notifications.delivery / notifications.welcome(AC-217~222):团团用户级通知,9 个浏览器实例(@e2e-only),绑定通知步骤。复用真实项目、受控专家与模型暂停入口;覆盖跨项目送达、真实任务编辑弹窗中的提醒与草稿、关闭与已读分离、账号引导、同批聚合、离页计划与预审、验收撤销。专家夹具共享队列,此轮与既有专家场景统一以单 worker 执行;时效证据在运行附件 notification-delivery-latency。

团团全流程升级

AC-223/224 复用直播陪跑 Feature,浏览器绑定为 tuantuan-upgrade.steps.ts。平台动作、整组变更与专业请求队列的真实事务回归见 test_platform_tools.py;任务会话与目标证据见 test_task_conversation_goals.py;真实文件保存、恢复、验收竞争与迟到预审见 test_artifact_edits.py。本轮仅选关键测试,完整范围及未跑项见交付档案,不据这些子集生成全量通过结论。

项目画布内闲聊(AC-151):闲聊到项目画布覆盖原项目内切换闲聊、显式创建其他项目、返回原项目保留计划与讨论草稿;浏览器绑定位于 tuantuan-v2.steps.ts。