Project

General

Profile

QA验收 #1 » bff-case-results.md

Redmine Admin, 10/06/2026 04:14 PM

 

QA 测试结果 - 预约纪要统一意图 - 独立自动化第1轮 - BFF - 2026-10-07

  • QA:Mindsetech Agent Team / NDB QA Agent
  • Redmine:NDB #1(会议管理与话题管理功能验收,含 Markdown/BFF 跨端验证)
  • 环境与共同前置:pg-mem 渠道 SQL fixture;mock NDB/微信/Notification HTTP;无真实邮件
  • 候选:Backend 444afbe / BFF cb70aee / Mini dda1473,加本次未提交实现;HEAD 本身不包含实现,最终差异摘要需协调方绑定。
  • 操作:npm test -- --verbose --json;每行用例名称与源码文件定位对应实际断言。
  • 执行日期:2026-10-07 Asia/Shanghai;各框架原始时间/耗时保留于本地日志。
  • 汇总:Pass 118 / Fail 0 / Blocked 0 / Skipped 0。
  • 预期:对应命名用例的所有断言成立;实际记录仅对应此层级。
编号 用例 源码/层级 预期 实际 状态 证据/缺陷
BFF-001 HTTP channel flow runs health checks and Swagger http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-002 HTTP channel flow logs in using wx.login code without leaking WeChat identifiers or session_key http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-003 HTTP channel flow rejects forged login identity fields http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-004 HTTP channel flow distinguishes missing session from missing contact binding http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-005 HTTP channel flow binds a WeChat-verified phone then resolves contact server-side http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-006 HTTP channel flow returns 503 without connection details when the channel database is unavailable http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-007 HTTP channel flow clears contact on phone change and rejects stale contact resolver responses http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-008 HTTP channel flow submits a verified email and business card and queues the review notification http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-009 HTTP channel flow rejects a spoofed business-card MIME type http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-010 HTTP channel flow invalidates binding if NDB no longer resolves the contact http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-011 HTTP channel flow projects public meetings without private links or Task data http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-012 HTTP channel flow returns the NDB-derived meeting banners without authentication http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-013 HTTP channel flow forwards validated date and month calendar filters to NDB http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-014 HTTP channel flow serves the V2 content, topic and public expert catalog without private fields http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-015 HTTP channel flow derives a unique industry list from the public V2 catalog http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-016 HTTP channel flow creates an expert interview request from the authenticated bound contact http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-017 HTTP channel flow rejects an invalid interview idempotency key before calling NDB http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-018 HTTP channel flow returns my meetings from NDB using bound contact http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-019 HTTP channel flow forwards user idempotency key and derives contact from session http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-020 HTTP channel flow cancels via NDB and keeps local finance absent http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-021 HTTP channel flow keeps favorites and reminder preferences separate from registration/Task calls http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-022 HTTP channel flow uses unified NDB minutes GET, PUT and mine DTOs without financial state or attend mutations http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-023 HTTP channel flow projects one registration and Task across minutes-only, both intents, and attendance cancellation http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-024 HTTP channel flow returns null from NDB despite a legacy minutes preference http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-025 HTTP channel flow requires authenticated bound identity, validates keys, and refuses cancellation on /api/v2/meetings/1/minutes-subscription http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-026 HTTP channel flow requires authenticated bound identity, validates keys, and refuses cancellation on /api/v2/notifications/subscriptions/1/minutes http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-027 HTTP channel flow rejects a wrong-intent or wrong-owner mine result on /api/v2/meetings/my http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-028 HTTP channel flow rejects a wrong-intent or wrong-owner mine result on /api/v2/meetings/minutes-reservations/mine http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-029 HTTP channel flow rejects a wrong-intent or wrong-owner mine result on /api/v2/meetings/my http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-030 HTTP channel flow passes explicit minutes keys and rejects stale identity and cross-contact upstream responses http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-031 HTTP channel flow persists one no-contract refusal notice across both minutes paths without masking the rejection http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-032 HTTP channel flow does not impose BFF time or pricing gates and preserves the NDB human-minutes refusal http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-033 HTTP channel flow preserves NO_ACTIVE_CONTRACT even if the refusal cannot be persisted http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-034 HTTP channel flow enforces ownership on favorites and message read operations http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-035 HTTP channel flow retrieves join link with meeting:join scope only for a bound session http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-036 HTTP channel flow hides join link on REGISTRATION_REQUIRED http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-037 HTTP channel flow hides join link on MEETING_NOT_OPEN http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-038 HTTP channel flow hides join link on JOIN_LINK_UNAVAILABLE http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-039 HTTP channel flow guides contract errors and upstream downtime without exposing provider messages http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-040 HTTP channel flow revokes all prior tokens on logout http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-041 HTTP channel flow rejects expired JWT and legacy conference routes http.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-042 SQLite source preservation and database guard reads version 1 without upgrading it, preserving identities and defaulting new fields sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-043 SQLite source preservation and database guard preserves version 3 binary cards, verification state and retry counters sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-044 SQLite source preservation and database guard refuses an unsupported source version and never creates a missing file sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-045 SQLite source preservation and database guard rejects missing required source columns rather than inventing identity fields sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-046 SQLite source preservation and database guard refuses a non-channel connection target sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-047 SQLite source preservation and database guard refuses a non-channel connection target sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-048 SQLite source preservation and database guard refuses a non-channel connection target sqlite-import.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-049 NDB minutes business adapter uses a separate stable business key, fresh nonces and only the verified contact payload minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-050 NDB minutes business adapter rejects malformed or cross-owner business facts {"meeting_id": 2} minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-051 NDB minutes business adapter rejects malformed or cross-owner business facts {"client_contact_id": 21} minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-052 NDB minutes business adapter rejects malformed or cross-owner business facts {"task_id": null} minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-053 NDB minutes business adapter rejects malformed or cross-owner business facts {"minutes_requested": false} minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-054 NDB minutes business adapter rejects malformed or cross-owner business facts {"created_at": "invalid"} minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-055 NDB minutes business adapter returns authoritative null and read scope for state without writes minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-056 NDB minutes business adapter projects attend-only as no minutes and retains minutes when attendance is cancelled minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-057 NDB minutes business adapter maps published human-minutes and no-contract refusals without rewriting them minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-058 NDB minutes business adapter does not automatically retry a timed-out business mutation minutes-adapter.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-059 identity state and contact events auto binds an initial or newly added number only after current NDB resolution identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-060 identity state and contact events requires a full application after a WeChat phone change before accepting replacement number identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-061 identity state and contact events blocks proactive auto binding during delayed MQ delivery of a replacement event identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-062 identity state and contact events rejects a later replacement even when the same number was previously fully authenticated identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-063 identity state and contact events does not let an old contact event revoke a newer completed authentication identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-064 identity state and contact events keeps an unmatched application pending, then authorizes it when NDB adds the number identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-065 identity state and contact events handles added and replaced contact events idempotently without undoing later full authentication identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-066 identity state and contact events rejects an application if the verified phone changes away and back during NDB resolution identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-067 identity state and contact events retries review notification submission with the same idempotency key identity.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-068 minutes refusal durable outbox marks missing configuration and resumes after restart without changing the refusal identity minutes-outbox.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-069 minutes refusal durable outbox persists missing service configuration across a retry tick, with no delivery claim minutes-outbox.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-070 minutes refusal durable outbox retries failures with the same dedup key after restart, applies backoff and honors the minutes recipient minutes-outbox.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-071 minutes refusal durable outbox deduplicates by meeting/contact across users without merging distinct meetings minutes-outbox.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-072 minutes refusal durable outbox additively upgrades version 4 without migrating legacy minutes into Tasks or notices minutes-outbox.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-073 WeChat boundary discards session_key and rejects absent openid wechat-storage.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-074 WeChat boundary maps expired codes and upstream network failure wechat-storage.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-075 WeChat boundary verifies phone watermark appid before binding wechat-storage.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-076 WeChat boundary coalesces token acquisition for concurrent phone requests wechat-storage.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-077 channel-only versioned PostgreSQL SQL contract preserves channel identities and favorite state over migration rerun wechat-storage.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-078 NDB transport and typed adapter accepts the real NDB envelope and strips Task state ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-079 NDB transport and typed adapter sends a fresh nonce and stable business key for retries ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-080 NDB transport and typed adapter returns original registration on duplicate conflict ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-081 NDB transport and typed adapter fails closed on a cross-contact registration ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-082 NDB transport and typed adapter returns null for no registration ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-083 NDB transport and typed adapter maps MEETING_NOT_OPEN without leaking upstream text ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-084 NDB transport and typed adapter maps NO_ACTIVE_CONTRACT without leaking upstream text ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-085 NDB transport and typed adapter maps AMBIGUOUS_PROJECT without leaking upstream text ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-086 NDB transport and typed adapter maps AMBIGUOUS_CONTRACT without leaking upstream text ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-087 NDB transport and typed adapter maps IDEMPOTENCY_CONFLICT without leaking upstream text ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-088 NDB transport and typed adapter maps upstream authentication 401 as server configuration, not user login ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-089 NDB transport and typed adapter maps upstream authentication 403 as server configuration, not user login ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-090 NDB transport and typed adapter maps upstream availability 429 ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-091 NDB transport and typed adapter maps upstream availability 500 ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-092 NDB transport and typed adapter maps upstream availability 503 ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-093 NDB transport and typed adapter maps network timeout and does not blindly retry writes ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-094 NDB transport and typed adapter rejects an incompatible contract {"data": [Array], "err": 0} ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-095 NDB transport and typed adapter rejects an incompatible contract {"code": 200, "data": [Object]} ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-096 NDB transport and typed adapter requires the confirmed public detail fields and excludes private expert data ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-097 NDB transport and typed adapter reads the server-derived banner list with the conference read scope ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-098 NDB transport and typed adapter maps an application-owned meeting miss to NOT_FOUND ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-099 NDB transport and typed adapter refuses paths and scopes outside application credentials ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-100 NDB transport and typed adapter validates catalog contracts and derives a stable interview idempotency key ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-101 NDB transport and typed adapter deduplicates industries exposed by all public catalog collections ndb-client.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-102 NDB signature contract uses RFC3986, repeated keys, blanks and lexicographic key/value ordering signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-103 NDB signature contract signs the exact six-line request and exact UTF-8 body signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-104 NDB signature contract matches a vector generated by the existing NDB Python implementation signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-105 NDB signature contract hashes an empty GET body signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-106 NDB signature contract uses collision-safe tuple boundaries for business keys signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-107 configuration and boundary validation accepts configured development signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-108 configuration and boundary validation does not expose submitted secrets in validation errors signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-109 configuration and boundary validation requires safe production configuration {"NDB_BASE_URL": "http://ndb.test"} signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-110 configuration and boundary validation requires safe production configuration {"CHANNEL_DATABASE_URL": "sqlite://memory", "NDB_BASE_URL": "https://ndb.test"} signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-111 configuration and boundary validation rejects non-origin NDB URL ftp://ndb.test signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-112 configuration and boundary validation rejects non-origin NDB URL https://user:password@ndb.test signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-113 configuration and boundary validation rejects non-origin NDB URL https://ndb.test/api signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-114 configuration and boundary validation rejects non-origin NDB URL https://ndb.test/?secret=bad signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-115 configuration and boundary validation rejects ID coercion and invalid idempotency headers signature.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-116 renderMiniProgramRichText converts Markdown into HTML supported by the mini program rich-text component rich-text.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-117 renderMiniProgramRichText keeps legacy HTML while removing unsafe markup and attributes rich-text.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json
BFF-118 renderMiniProgramRichText rejects unsafe links rich-text.spec.ts / 隔离测试 命名场景断言全部成立 断言通过 Pass bff-results.json

边界与后续

本轮未进行共享业务写入、真实收费 Task 创建或真实员工邮件投递。Backend 测试库已由 Django 销毁;独立测试容器停止后其 tmpfs 测试数据不保留。BFF pg-mem 不能证明真实 PostgreSQL锁、回滚或进程重启后磁盘持久性。Node fixture 不代替真实微信认证、用户操作与截图。未来自动纪要分流/通知未实现,不在本轮完成声明中。

MINI-060 为已知卡片背景色静态断言与现有 UI 冲突;保留 Fail,不回退 UI。成功预约真实流程尚需免费 fixture 审定;图文手册与 UI/项目校对未完成。整体 QA 尚未完成。

(32-32/78)