Project

General

Profile

Actions

QA验收 #35

open
RA

CNB #106|Task毛利率排除与KM零成本提醒|本地独立验收

QA验收 #35: CNB #106|Task毛利率排除与KM零成本提醒|本地独立验收

Added by Redmine Admin 12 days ago. Updated 9 days ago.

Status:
新建
Priority:
普通
Assignee:
-
Start date:
10/30/2026
Due date:
% Done:

0%

Estimated time:
(Total: 0:00 h)

Description

CNB #106 本地独立QA准备

主任务:01a186ac-ec98-7ea0-a6c6-019adec6c63a,Mindsetech Agent Team。来源:CNB Backend #106。

唯一事实索引:106 index。主需求:Task毛利率排除与KM提醒。唯一影响/回归矩阵:Backend IMP106/REG106。QA操作包:local-qa-operation-package。以上本机链接基于canonical协调根。

范围:Task严格bool标记及普通/快速创建编辑兼容;全部毛利率收入成本成对排除,实际收支/销售收入/提成资格保留;激励无基数factor1、有flag客户年度用剩余Task实时基数,无flag保留旧人工成本优先级;历史confirmed/实发/snapshot零回写;KM上海六日历月实际非零收入/成本净和0提醒,flag不隐藏,服务端权限和分页前筛选;相关真实工作簿。

候选:两仓feature/issue-106-gross-margin-exclusion,main基线BE74767130/FE08cb3da9,未提交开发候选待冻结。开发自测和独立QA分层,不把开发日志当QA亲测,不借105的31/5项计数。

用户要求使用现有本机开发库。Ops拟核现有本机ndb_issue105_20261030的准确身份与106迁移兼容性;不新建库、不复制/清库、不修改原105业务数据。QA仅本轮QA106-LOCAL-20261030-R1新对象可写;业务fixture唯一writer拟为QA,Ops仅环境/必要兼容迁移。当前仅文档、离线护栏、限定BW账号库存和本记录建立获准;正式产品QA、环境启动/DB seed尚未执行,待候选freeze及Ops env_ready一次放行。

本记录专属106。后续每个实际case按逻辑轮次批量追加、全文读回;失败关联稳定缺陷。当前产品执行0、Pass0;不审批、不企微、不动生产/105申请,不提交/推送/部署,不改已有账号密码角色,不新增更多账号。没有设置watcher/assignee或发送额外人员消息。


Files

01-quick-create-c.png (101 KB) 01-quick-create-c.png Redmine Admin, 10/31/2026 11:18 AM
04-project-exclude-b-40.png (76.1 KB) 04-project-exclude-b-40.png Redmine Admin, 10/31/2026 11:18 AM
06-km-excluded-b.png (48.1 KB) 06-km-excluded-b.png Redmine Admin, 10/31/2026 11:18 AM
07-quick-edit-b-flag.png (24.9 KB) 07-quick-edit-b-flag.png Redmine Admin, 10/31/2026 11:18 AM
08-incentive-neutral-factor1.png (41.9 KB) 08-incentive-neutral-factor1.png Redmine Admin, 10/31/2026 11:18 AM
actual-results.json (5.87 KB) actual-results.json Redmine Admin, 10/31/2026 11:18 AM
screenshots.json (3 KB) screenshots.json Redmine Admin, 10/31/2026 11:18 AM
issue-106-staging-20261031.md (10.2 KB) issue-106-staging-20261031.md Redmine Admin, 10/31/2026 11:18 AM
independent-review.json (6.09 KB) independent-review.json Redmine Admin, 10/31/2026 04:09 PM
actual-results.json (7.14 KB) actual-results.json Redmine Admin, 10/31/2026 04:09 PM
09-beta3-ordinary-margin-saved.png (329 KB) 09-beta3-ordinary-margin-saved.png Redmine Admin, 10/31/2026 04:09 PM
issue-106-staging-20261031.md (16.1 KB) issue-106-staging-20261031.md Redmine Admin, 10/31/2026 04:09 PM
actual-results.json (15.1 KB) actual-results.json Redmine Admin, 10/31/2026 04:47 PM
independent-review.json (12.2 KB) independent-review.json Redmine Admin, 10/31/2026 04:47 PM
screenshots.json (2.38 KB) screenshots.json Redmine Admin, 10/31/2026 04:47 PM
issue-106-staging-20261031.md (29.7 KB) issue-106-staging-20261031.md Redmine Admin, 10/31/2026 04:47 PM
10-home-finance-70.png (89.8 KB) 10-home-finance-70.png Redmine Admin, 10/31/2026 04:47 PM
11-home-finance-40.png (106 KB) 11-home-finance-40.png Redmine Admin, 10/31/2026 04:47 PM
12-home-finance-empty.png (108 KB) 12-home-finance-empty.png Redmine Admin, 10/31/2026 04:47 PM
13-home-pm-october.png (24.5 KB) 13-home-pm-october.png Redmine Admin, 10/31/2026 04:47 PM
14-home-pm-rank30.png (43.3 KB) 14-home-pm-rank30.png Redmine Admin, 10/31/2026 04:47 PM
15-home-customer-october.png (111 KB) 15-home-customer-october.png Redmine Admin, 10/31/2026 04:47 PM
16-home-recruitment.png (45.3 KB) 16-home-recruitment.png Redmine Admin, 10/31/2026 04:47 PM
17-home-pm-reminders.png (95 KB) 17-home-pm-reminders.png Redmine Admin, 10/31/2026 04:47 PM
qa-report.md (8.92 KB) qa-report.md Redmine Admin, 11/02/2026 07:17 AM
results.json (9.72 KB) results.json Redmine Admin, 11/02/2026 07:17 AM
final-request-counter.json (1.93 KB) final-request-counter.json Redmine Admin, 11/02/2026 07:17 AM
dto-comparisons.json (2.23 KB) dto-comparisons.json Redmine Admin, 11/02/2026 07:17 AM
flag-restoration-verification.json (336 Bytes) flag-restoration-verification.json Redmine Admin, 11/02/2026 07:17 AM
catalog-restoration-readback.json (2.93 KB) catalog-restoration-readback.json Redmine Admin, 11/02/2026 07:17 AM
visual-guide.md (2.08 KB) visual-guide.md Redmine Admin, 11/02/2026 07:17 AM
09-quick-confirm-viewport.png (69.2 KB) 09-quick-confirm-viewport.png Redmine Admin, 11/02/2026 07:17 AM
qa-final-review.md (8.09 KB) qa-final-review.md Redmine Admin, 11/02/2026 08:56 AM
qa-final-review-receipt.json (6.53 KB) qa-final-review-receipt.json Redmine Admin, 11/02/2026 08:56 AM
01-quick-create-c.png
04-project-exclude-b-40.png
06-km-excluded-b.png
07-quick-edit-b-flag.png
08-incentive-neutral-factor1.png
09-beta3-ordinary-margin-saved.png
10-home-finance-70.png
11-home-finance-40.png
12-home-finance-empty.png
13-home-pm-october.png
14-home-pm-rank30.png
15-home-customer-october.png
16-home-recruitment.png
17-home-pm-reminders.png
09-quick-confirm-viewport.png

Subtasks 3 (3 open — 0 closed)

缺陷 #36: QA106-EDIT-DRIFT-01 已付Task普通编辑标记重算结算与credit新建10/30/2026

Actions
缺陷 #37: DEF106-02|已结束未付款Task普通编辑无毛利率标记保存入口新建10/31/2026

Actions
缺陷 #38: DEF106-HOME-COUNT-01|全部销售聚合重复计算排除Task数新建11/01/2026

Actions

RA Updated by Redmine Admin 12 days ago Actions #1

QA106 本地真实接口首批结果

环境:127.0.0.1:8000/8888;复用现有本机库ndb_issue105_20261030,仅QA106-LOCAL-20261030-R1合成对象。Backend源摘要7dfbb450759c,Web82d775f32784(UI106-01纯文案增量),两仓feature/issue-106-gross-margin-exclusion,未提交。

本批实际15 Pass / 0 Fail / 1 Blocked;这是REG子场景,不表示REG01/11全量或全部QA通过。开发179/330测试不计本批。权限前置与ENV106-01分开:CORS修复后Space53正常浏览器登录、profile HTTP200/code200闭合;现管理员页面权限不足,UI创建未执行,无角色修改。

编号 影响 操作与实际 状态 证据(outputs/issue-106-implementation-20261030/qa/)
QA106-API-01 IMP106-01 / REG106-01 普通创建省略标记:默认false;Task2读回false Pass round-01-api-a-readback-result.json
QA106-API-02 IMP106-01 / REG106-01 快捷创建true:Task3读回true、同QA项目2 Pass round-03-api-b-readback-result.json
QA106-API-03 IMP106-01 / REG106-01 单独标记true投影:毛利null、applicable=false、基数0/0、真实收入1000保留 Pass round-02-flag-true-read-result.json
QA106-API-04 IMP106-01 / REG106-01 拒绝null:HTTP200/业务400;标记仍true Pass round-02-invalid-null-result.json
QA106-API-05 IMP106-01 / REG106-01 拒绝number:HTTP200/业务400;标记仍true Pass round-02-invalid-number-result.json
QA106-API-06 IMP106-01 / REG106-01 拒绝string:HTTP200/业务400;标记仍true Pass round-02-invalid-string-result.json
QA106-API-07 IMP106-01 / REG106-01 更新省略保值:改本轮memo省略标记,仍true Pass round-02-omission-read-result.json
QA106-API-08 IMP106-01 / REG106-01 恢复false:读回false,实际收入仍1000 Pass round-02-restore-read-result.json
QA106-LOCK-processing-PM IMP106-11 / REG106-11 processing PM单独标记:HTTP200/code200;除标记/毛利投影及更新时间外Task/成本读回全字段不变 Pass round-04-lock-assertions.json
QA106-LOCK-processing-MIX IMP106-11 / REG106-11 processing 混合金额修改拒绝:HTTP403/code403,完整读回不变 Pass round-04-lock-assertions.json
QA106-LOCK-processing-PA IMP106-11 / REG106-11 processing PA单独标记:本轮PA=身份3,HTTP200/code200;该身份在Task2无关联另验拒绝 Pass round-04-role-interpretation.json
QA106-LOCK-paid-PM IMP106-11 / REG106-11 paid PM单独标记:HTTP200/code200;除标记/毛利投影及更新时间外Task/成本读回全字段不变 Pass round-04-lock-assertions.json
QA106-LOCK-paid-MIX IMP106-11 / REG106-11 paid 混合金额修改拒绝:HTTP403/code403,完整读回不变 Pass round-04-lock-assertions.json
QA106-LOCK-paid-PA IMP106-11 / REG106-11 paid PA单独标记:本轮PA=身份3,HTTP200/code200;该身份在Task2无关联另验拒绝 Pass round-04-role-interpretation.json
QA106-LOCK-UNRELATED IMP106-11 / REG106-11 无关联身份拒绝:身份3对Task2(PM2/PA1)HTTP403/code403,原false不变 Pass round-04-unrelated-task-a-result.json
QA106-UI-CREATE-PRECONDITION IMP106-01 / REG106-01 三UI创建入口权限:管理员ID1缺/projects和Task页面权限,导航被挡回;PM2无页面权限。账号角色未写 Blocked ui-permission-gap.json

写保护:父对象15条及独立Task/成本20条seed成功;原数据摘要未变。初始金融seed因配方缺开票主体及状态枚举错误整批回滚,rollbackOriginalDigestsUnchanged=true,不记产品Fail;金融专项尚未执行。A/B/C真实API创建Task2/3/4已读回,另保留3个UI槽,总Task预算17<=18,成本9。

下一步:继续KM/数值/报表/实际工作簿与历史不变性;UI需最小页面权限前置,金融需合成开票主体。无新基础设施、旧对象写、生产、通知/审批/资金、commit/push/deploy。

RA Updated by Redmine Admin 12 days ago Actions #2

QA106 本地真实应用第二批结果

候选/环境沿用journal339:Backend7dfbb450759c、Web82d775f32784未提交差异,本机8000/8888及现有ndb_issue105_20261030。实际25 Pass / 1环境Fail / 5 Blocked。以下为同一IMP/REG的有界子场景,不把开发179/330项计入,不表示全量QA通过。首批15接口Pass不重跑、不重复计本批。

编号 影响 用例与预期 实际 状态 证据(outputs/issue-106-implementation-20261030/qa/)
QA106-CORE-PAIR IMP106-02 项目A/B配对基数;2000/600毛利70%;排除B后1000/600为40%,原收入2000 项目2实际0.7→0.4;原收入2000保留 Pass round-08-project-assertions.json
QA106-CORE-EMPTY IMP106-02 全部排除无基数;基数0/0不可计算、原收入保留 项目2排除数2/applicable=false;原收入2000 Pass round-11-all-exclude-project-result.json
QA106-FINANCE-DIFF IMP106-03 财务统计差分;仅毛利基数变化,年度/月度原金额保持 公司2 70→40,收入2000/成本600;原月度数组完全相同 Pass round-10-report-differences.json
QA106-PM-DIFF IMP106-04 PM总额与平行基数;原income/cost不变,排除B收入1000出基数 原6400/2310保留;基数6400→5400/成本2310,profit63.91→57.22 Pass round-10-report-differences.json
QA106-UTIL-DIFF IMP106-04 PM工具相邻月份与无基数;新基数对齐,本月变毛利、其他指标/上月无基数旧值保留 本月同步57.22,上月值1且applicable=false;其他指标数组不变 Pass round-10-report-differences.json
QA106-SALES-OVERVIEW IMP106-05 sales-overview差分;原收入/成本/行身份不变,毛利按参与基数变化 所有原income/cost不变,公司2分摊基数500/300,毛利40;总览/月度依自身分摊口径 Pass round-10-report-differences.json
QA106-SALES-COMPANIES IMP106-05 sales-companies差分;原收入/成本/行身份不变,毛利按参与基数变化 所有原income/cost不变,公司2分摊基数500/300,毛利40;总览/月度依自身分摊口径 Pass round-10-report-differences.json
QA106-SALES-MONTHLY IMP106-05 sales-monthly差分;原收入/成本/行身份不变,毛利按参与基数变化 所有原income/cost不变,公司2分摊基数500/300,毛利40;总览/月度依自身分摊口径 Pass round-10-report-differences.json
QA106-INC-OVERRIDE IMP106-07/09 无flag覆盖优先与有flag实时成本;无flag成本900;排除B后用A成本600,旧override零写 旧API无flag基数2000/900;有flag1000/600,原all_in_cost元数据900仍保留 Pass round-10-report-differences.json
QA106-INC-NEUTRAL IMP106-07/09 全部排除中性系数与资格;系数1,原收入及owner股/增量/提成资格保持 income2000,factor1;两owner各income1000、increment1000、commission60 Pass round-11-all-excluded-assertions.json
QA106-RECEIPT-BASIS IMP106-08 回款DTO实时基数形状;company+year定位,factor_source明确,不暴露私有内部对象 company2/year2026:0/0,excluded2,factor1/source excluded_tasks_fallback;仅投影验证,FIFO另待fixture Pass round-11-all-excluded-annual-receipt.json
QA106-HISTORY-UNCHANGED IMP106-09 确认/实发/归属/override零回写;标记变更前后历史全字段一致 真实PG7表14行digest一致;含override、季度预发、年终实发、年度结算、补结、Task归属 Pass history-before-all-exclude.json + history-after-restore.json
QA106-YEAR-LOCK IMP106-09 已结算年度锁;不能覆盖已有本轮年度/季度实发 真实HTTP200/code400:该年度已有结算,不能覆盖原实发记录;14历史行不变 Pass round-15-annual-lock-result.json
QA106-INC-XLSX IMP106-07/08 全排除实际Excel;下载成功,说明sheet数据与中性系数一致 两GET均取得实际xlsx;毛利率计算基数A2:G2=[2,2026,0,0,2,否,1];两路共享导出实现,仅计一case Pass round-11-workbook-cells.json
QA106-KM-DATES IMP106-10 实际六个月安全内外点;下界内记录进、外/未来/空不进 23入;22/24/25不入;移动时钟精确边界未冒称实测 Pass round-05-km-assertions.json
QA106-KM-SIGNED IMP106-10 负收入及状态;负收入非零可提醒,无额外finished限制 Task18负100/ongoing及Task23 cancelled均返回 Pass round-05-km-assertions.json
QA106-KM-FX IMP106-10 多币种净零与删除成本;按实际RMB净成本计算,删除成本忽略 Task19收入1400、成本0;±100USD净零,deleted77USD未计 Pass round-05-km-assertions.json
QA106-KM-FLAG IMP106-10 排除不隐藏提醒;B标记true仍显示 Task3 income1000/cost0且flagtrue返回,真实首页也显示 Pass round-05-km-assertions.json + km-reminder-real.png
QA106-KM-PAGING IMP106-10 分页稳定顺序;分页前筛、时间/ID倒序、无重复漏项 page_size2 两页精确[19,18,3,23],总4无重叠 Pass round-05-km-assertions.json
QA106-KM-SCOPE IMP106-10 user_id不能扩权;未关联Task不因query扩出 身份3传user_id2仍不返回无关联Task3,保留其PA范围3条 Pass round-05-reminders-pa-scope-result.json
QA106-KM-ZERO-NULL IMP106-10 明确0与null回退;0不得当缺失,null按原费用回退 cost19明确0时净成本非0不提醒;null回退100与-100抵零后提醒 Pass round-12-fx-assertions.json
QA106-KM-REFRESH IMP106-10 最小非零移出与恢复;非零成本刷新移出,恢复净零重现 company_payment100.01不提醒,恢复100.00后再次提醒;汇率未写 Pass round-12-fx-assertions.json
QA106-UI-DETAIL IMP106-01/02 真实详情标签;同Task显示不计入,原金额与ID可核 Space53 Task3详情显示不计入/1000RMB,截图已目视 Pass task3-excluded-real.png
QA106-UI-KM IMP106-10 首页刷新/链接;刷新仍有排除B,Task链接正确 真实卡显示4条,刷新后点#3到/project_tasks/3并读到标签,截图已目视 Pass km-reminder-real.png
QA106-PG-RACE IMP106-11 两角色并发单标记;两请求合法,不破坏其他Task/processing成本字段 单轮2请求均200/code200,最后flagfalse,其他全字段不变 Pass round-14-race-assertions.json
EXP106-01 IMP106-06 专家费用真实导出;仅成本16/23应返回工作簿 HTTP500/text-html,123603bytes,无xlsx;完整开始时间;未重试,Ops诊断中;Ops已确认协调根启动导致相对模板FileNotFoundError(views.py415),未进入106填充逻辑,属环境失败;待Ops cwd修复后同16/23复测一次 Fail round-13-expert-export-receipt.json;环境缺陷关联#35/EXP106-01(primary确认,不另建业务缺陷)
QA106-UI-CREATE-ordinary IMP106-01 ordinary真实创建;页面正常选择必填人员并提交读回 ENV106-02页面权限已补;但ID1/2 name_en均null被options过滤,PA必填无可选项;未绕过或改账号 Blocked ui-display-name-gap.json
QA106-UI-CREATE-quick IMP106-01 quick真实创建;页面正常选择必填人员并提交读回 ENV106-02页面权限已补;但ID1/2 name_en均null被options过滤,PA必填无可选项;未绕过或改账号 Blocked ui-display-name-gap.json
QA106-UI-CREATE-copy IMP106-01 copy真实创建;页面正常选择必填人员并提交读回 ENV106-02页面权限已补;但ID1/2 name_en均null被options过滤,PA必填无可选项;未绕过或改账号 Blocked ui-display-name-gap.json
QA106-RECEIPT-FIFO IMP106-08 真实回款FIFO/分票税/预付owner;有有效本轮发票/回款关联再比对 seed金融批次已完整回滚;缺合成InvoiceCompanies必需引用,尚未写额外模型 Blocked seed-after-ui-rollback01.json
QA106-TEAM-NUMERIC IMP106-04 团队派生分母实数行;真实团队行验证排除与原credit/分钟不变 实际团队接口200但data=[],无团队关系fixture,不能空结果冒称数值通过 Blocked round-09-flagged-team.json

前置/历史边界

  • ENV106-01 CORS已由Ops修复且QA Space53正常登录/profile200闭环。ENV106-02按primary精确包临时建12目录/7PM page grants,角色/密码/active未改;有新增ID/基线及恢复脚本。新阻塞为注册测试身份name_en缺失导致人员选项被过滤,未自行改账号或注入表单。
  • 正常A/B完成请求500均按ID读回ongoing,未盲重试。primary明确允许仅本轮A/B受控初始化finished作报表前置,真实HTTP读回;不冒称正常完成流程Pass。纯A/B是项目2,项目3边界fixture总额不是2000/600。prior-year Task26为隔离项目样例暂转ongoing,跨年回款前置尚未恢复。
  • 专家导出EXP106-01由primary确认环境启动cwd导致模板文件找不到;原HTTP500保留,待Ops收据后同样合法16/23重测,禁止用年度Excel成功覆盖。
  • 两年度Excel接口共享receipt exporter,实际工作簿验证只计一个case,不误称两个独立导出实现。回款FIFO/分票税/预付依赖的金融fixture尚缺开票主体,不能用空owners/零回款结果算通过。
  • 全部已写对象为本RUN。全局FX只读;历史7表14行真实PG全字段摘要相同;未源码改动/commit/push/deploy/生产/真实外发。临时权限待QA完毕精确恢复,现保持Space53继续,不关闭。

RA Updated by Redmine Admin 12 days ago Actions #3

  • Subtask #36 added

RA Updated by Redmine Admin 12 days ago Actions #4

QA106 第三批:UI创建、支付冻结元数据编辑、导出环境复测

候选同journal339/340:BE7dfbb450759c、Web82d775f32784,未提交;本机现有ndb_issue105_20261030,Space53。实际6 Pass / 1 Fail。三条创建原Blocked前置现已通过;EXP106-01原环境500由Ops cwd修复后专项Pass,旧历史保留。其他通过不重跑/不重复计本批。

编号 影响 实际与判定 状态 证据(outputs/issue-106-implementation-20261030/qa/)
QA106-UI-CREATE-ordinary IMP106-01 普通表单新Task27,默认false;1POST,is_recorded=false,data形式,无成本;独立GET读回 Pass round-19-ui-ordinary-result.json + round-19-ui-ordinary-readback-result.json + ui-ordinary-created27-real.png
QA106-UI-CREATE-quick IMP106-01 快速弹窗新Task28,选true;1POST,复用项目3/需求3,无额外父对象;GET true Pass round-20-ui-quick-result.json + round-20-ui-quick-readback-result.json + ui-quick-true-real.png
QA106-UI-CREATE-copy IMP106-01 从Task列表点击标记true的Task3复制;新Task29默认false,1POST及GET确认;data形式无录音/会议 Pass round-21-ui-copy-result.json + round-21-ui-copy-readback-result.json + ui-copy-default-false-real.png
QA106-UI-PAID-QUICK IMP106-11 Task21 finished+paid,快编仅切flag;1 TaskPUT字段仅exclude_from_gross_margin,0costPUT;其他Task/费用全字段不变 Pass round-17-ui-paid-request-counts.json + round-17-ui-paid-quick-before-result.json + round-17-ui-paid-quick-after-result.json + paid-quick-edit-real.png
EXP106-01-RETEST IMP106-06 Ops cwd修复后原成本16/23实际xlsx;Task2毛利40.00%、Task21不计入,600/200金额及RMB/冻结快照账号户名匹配。原环境500保留,非算法修复 Pass round-18-expert-workbook-final.json + round-18-expert-export.xlsx + ../ops/exp106-01-repair.json
QA106-UI-NEUTRAL-BASIS IMP106-08/09 + UI106-01 实际激励页展开company2/year2026基数0/0、排除2、适用性不适用、系数1;表头毛利系数及说明业务文案正确;未点实发 Pass incentive-basis-neutral-real.png
QA106-EDIT-DRIFT-01 IMP106-11 普通编辑Task21 finished+paid仅切flag,1TaskPUT/0costPUT/200,tax_rate null→0.00000、charge_days null→30、credit0→2.339;费用未变。缺陷#36待primary确认owner,现场不回滚 Fail ordinary-edit-drift-defect.json + round-22-ui-ordinary-edit-assertions.json;https://redmine.mindsetech.com/issues/36

普通编辑失败挂子缺陷#36,已读回。QA不指派源码owner、不修业务代码、不还原合成现场;快编通过不能覆盖普通编辑失败。当前paid fixture是finished,不强改为ongoing,也不冒称该另一分支已实测。

临时环境前置:ENV106-02按授权补12 Permission目录/7 PM page grants;ENV106-04重新BW核对身份后只改id1/2 name_en为QA106合成显示名,其他账号字段全字段相同。两类均保存精确基线/新增IDs/恢复脚本;QA尚在进行,待最终回归结束精确恢复,不留永久资料变更。

合成17 Task、9成本,未超18/9;所有新ID已入fixture-manifest。UI普通日期首次未确认被前端校验拦截,0网络写;确认合法时间后只提交1次,不算业务重复失败。其余未执行:真实回款FIFO/税/预付需1条合成InvoiceCompanies必需父对象及跨年前置;团队数值行无fixture。精确移动时钟边界/破坏性迁移图未冒称真实验证。无新infra、旧105业务改动、FX写、真实外发、产品源码改动、commit/push/deploy。

RA Updated by Redmine Admin 12 days ago Actions #5

主任务决定补充:DEF106-01 / Redmine #36 的唯一业务修复owner为 NDB Backend Agent责任线程 01a09aab-60e4-7632-b0a2-ac457725369d,第1修复轮已开始;不猜测/指定Redmine人类账号。根因、原Fail及null→0/30、credit0→2.339证据保持。待Backend freeze与Ops加载新manifest后,QA受控恢复同Task21原null/0/propertyNone哨兵,再实际普通UI及paid/processing安全metadata/API、金融混写拒绝回归;创建/导出/提醒等未受影响证据复用。临时Permission/name_en及服务保持供回归,现不清理。截图新批次5张及Task27/28/29/21、公司2/year2026映射已整理 outputs/issue-106-implementation-20261030/qa/ui-review-batch.json,交primary并入主索引后一次送UI;前2张既有截图不重复送审。

RA Updated by Redmine Admin 12 days ago Actions #6

QA106现有基数表视觉用例只读补证(不增加Pass、不重跑整套):按primary要求在原Space53正常刷新/finance_incentives当前2026年度并展开基数表,未改flags、未操作确认/实发。公司2/year2026页面参与收入1000.00 RMB、成本600.00 RMB、排除1、适用、毛利系数1.0、说明“按毛利率计算”,与同次真实annual-dashboard API逐项一致。真实截图 outputs/issue-106-implementation-20261030/qa/incentive-basis-current-real.png;API/渲染行对照 round-24-ui-current-basis-readonly.json。截图已QA目视检查,并入ui-review-batch.json供primary/UI;此前7图primary已回传UI无确认视觉问题。本次仅补现有用例证据,46Pass/1Fail/2Blocked及#36原Fail不变,临时环境保持用于修复回归。

RA Updated by Redmine Admin 12 days ago Actions #7

DEF106-01 第1修复轮真实本地复测结果

  • 候选:Backend源5a33f07499a4763e8d681dfa552a89ec3ed410535203ae74281a350e9375de12,Web82d775f32784不变,实际Ops frame a19e523d959e81e49d8dbc5ec395808af358e74c4fccd993f78896e232a62b32;无提交/部署。
  • 本轮实际:8条断言,映射6个既有用例,全部Pass;不是8个新增用例。不重跑未受影响41项既有Pass,2个fixture Blocked仍保留。最新49个独立子场景=47Pass/0Fail/2Blocked。原#36/round22失败完整保留,不宣称工单Closed或全量QA通过。
  • 前置:仅Task21本轮合成对象按primary授权恢复tax_rate=null/charge_days=null/credit=0.000/property=null/flag=true,成本23/状态/金额未变,先HTTP确认原哨兵后才操作。
断言 既有用例 实际 状态
DEF106-R1-ORDINARY-UI QA106-EDIT-DRIFT-01 同原Task21 finished+paid普通UI,1次PUT keys=status/industry_subject/memo/exclude_from_gross_margin,0成本PUT,HTTP200/code200;原null/credit0及费用保持 Pass
DEF106-R1-PAID-PM QA106-LOCK-paid-PM {"id":"DEF106-R1-PAID-PM","taskId":21,"http":200,"code":200,"flag":true,"otherTaskAndCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-PM"} Pass
DEF106-R1-PROCESSING-PM QA106-LOCK-processing-PM {"id":"DEF106-R1-PROCESSING-PM","taskId":20,"http":200,"code":200,"flag":true,"financialAndCostFieldsUnchanged":true,"unsubmittedProjectionDifferences":["interview_subject","cpe_dept","cpe_interview_id"],"status":"Pass","caseId":"QA106-LOCK-processing-PM"} Pass
DEF106-R1-PAID-PURE QA106-LOCK-paid-PM {"id":"DEF106-R1-PAID-PURE","taskId":21,"http":200,"code":200,"flag":false,"otherFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-PM"} Pass
DEF106-R1-PAID-MIXED QA106-LOCK-paid-MIX {"id":"DEF106-R1-PAID-MIXED","taskId":21,"http":403,"code":403,"message":"请单独修改毛利率标记,不要同时修改结算字段。","allTaskCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-MIX"} Pass
DEF106-R1-PROCESSING-PURE QA106-LOCK-processing-PM {"id":"DEF106-R1-PROCESSING-PURE","taskId":20,"http":200,"code":200,"flag":false,"otherFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-processing-PM"} Pass
DEF106-R1-PROCESSING-MIXED QA106-LOCK-processing-MIX {"id":"DEF106-R1-PROCESSING-MIXED","taskId":20,"http":403,"code":403,"message":"请单独修改毛利率标记,不要同时修改结算字段。","allTaskCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-processing-MIX"} Pass
DEF106-R1-UNRELATED QA106-LOCK-UNRELATED {"id":"DEF106-R1-UNRELATED","taskId":2,"actorId":3,"pmId":2,"paId":1,"http":403,"code":403,"allFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-UNRELATED"} Pass

精确字段边界

Task21普通UI前后:actual_price/total_price/tax/currency、收费时长、status=finished/payment_status=paid等金融字段及Cost DTO全字段不变;tax_rate仍null、charge_days仍null、credit仍0.000。真实PG只读核对property只包含请求显式提交的industry_subject;interview_subject/cpe_dept/cpe_interview_id三键仍不存在,没有默认键写入。公开DTO三项null→空串来自原有getter在property字典缺键时的显示默认;此差异已逐项保留,未宣称所有DTO字段相同,也未掩盖成未观测。

证据与复用

outputs/issue-106-implementation-20261030/qa/def-r1-results.json(含typed before/after)、def106-01-sentinel-reset-receipt.json、def-r1-task21-sentinel-http-before-result.json、def-r1-ordinary-ui-requests.json、def-r1-task21-ordinary-http-after-result.json、def-r1-task21-model-after.json、def-r1-related-api-assertions.json。各操作intent/result均保留,无token/secret。

原Fail/环境500及旧journals339/340/342不覆盖。#36只是QA修复验证通过,实际工单status待读回,不擅自写Closed。新问题唯一owner为Backend责任线程01a09aab-60e4-7632-b0a2-ac457725369d。创建/比率/Excel/提醒旧证据按影响复用,owner55项开发测试不计QA亲测。

剩余Blocked:真实回款FIFO/税/预付缺1条合成InvoiceCompanies父对象及跨年前置,未越model权限;团队数值接口无真实关联fixture。不能据此说完整49项均通过。临时name_en/权限清理将在本批Redmine读回后执行,账号保持active,保留全部QA106业务fixture,不改旧105/FX/源码,不停止Ops服务。

RA Updated by Redmine Admin 12 days ago Actions #8

Issue106 本地QA最终结果 — 2026-10-30

当前49个既定业务子场景:49 Pass / 0 Fail / 0 Blocked / 0 Skipped。唯一逐条台账为qa/latest-case-index.json,唯一影响/回归矩阵为backend-impact-regression.md。这是限定本地候选范围结果,不是全角色、所有业务分支或发布批准。

候选与执行来源

本机8000/8888,沿用现有库ndb_issue105_20261030;BE source 5a33f07499a4763e8d681dfa552a89ec3ed410535203ae74281a350e9375de12,Web 82d775f32784e66b720c0115d9613c19115ceccd867816fec47b1c5d452d8379,Ops frame a19e523d959e81e49d8dbc5ec395808af358e74c4fccd993f78896e232a62b32。本轮复用Ops候选收据,不重复健康探测。

原47项Pass来自QA真实API/UI/本机PG/实际Excel,DEF106-01第一轮8断言覆盖6个既有case,#36 journal347/#35 journal348已读回。原失败仍留历史,工单状态不自动关闭。未把Backend179/55或Web330自测加入QA条数。

最后两项由任务primary(primary-support)唯一执行fixture写入,QA责任线程仅独立离线复核原始JSON、脚本及工作簿,不冒称QA亲自点击。复核脚本qa/support-independent-review.py不导入应用、不访问HTTP/DB;输出qa/support-independent-review.json含源证据SHA256。

两项补验实际结果

  • QA106-RECEIPT-FIFO:Pass。三份真实public HTTP响应与服务内部FIFO数据分开核对。本期1060含税回款,剔税60、净基数1000;存量500/增量500,Task2/3各承接500,owner各0.5,预发40。无标记旧override900系数1.1,排除B后实时1000/600系数1,全部排除0/0、不可算毛利、系数1。13个finance模型33行在before/b-excluded/all-excluded/after-restoration完全一致,原回款及分摊投影不变。
  • 实际16sheet工作簿已独立ZIP/XML提取47格,非仅containsMarker。回款记录B9=1060、K9=1000、L9/M9=500、R9=40、AH9=1000、AI9=60;两位销售Q4 B8=530、E8=500、F8=0.5、G8/H8=20;毛利率计算基数A2:G2=2/2026/0/0/2/否/1。与cell dump及原始数据吻合。未分配USD100折700保持跳过,非合格已关联预付分支证明。
  • QA106-TEAM-NUMERIC:Pass。实际9月team3/member2非空,Task2从低毛利列表移出、计数1→0;basis2000/600→0/0,excluded0→2,其他业绩、credit小时/完成率、成员、KPI不变。只有小样本,正亏损分支及3%取整阈值未触发,不冒称这两项数值边界通过。

原始证据统一在primary-support/round3/。首轮旧105Task1空duration引起原接口500,未修源码/旧记录;第二轮runner重复settings.configure问题未记作产品修复轮次。最终仅本轮Task2/3暂移同年9月隔离旧数据,结束恢复原2026-10-15T12:00:00及false标记。

恢复、范围及残余边界

  • primary的guarded finally及results.json证明:PM2 teams_id/title/joining_time恢复原null,临时Team3已删,Task2/3日期/flag精确恢复;财务13模型33行未改。QA此轮只审恢复收据,未重新做线上profile/DB查询。
  • 先前QA已恢复账号1/2的name_en=null、12个临时Permission与7个RolePermission,正常HTTP profile证明三账号active、原角色/权限恢复,见cleanup-normal-profile-verification.json。此收据早于最后临时Team,二者证据职责分开。
  • 合成17Task/9cost及金融fixture保留,manifest为唯一ID清单。无旧105/真实业务改写、无角色/密码修改、无全局FX写入、无外发审批/支付/通知、无新库、无破坏性迁移。
  • 未独立实测:finance-only角色UI、真实会议专用入口、SimpleTasks精确投影、完整销售图表/导出入口、合格预付抵扣与复杂历史补结、3%取整阈值、精确日期微秒/月末闰日、共享Redis/多进程压力/保证锁竞争等,详见矩阵各行开发证据与未测处置。单轮双HTTP不等于压力验收。员工手册为发布后跟进,本轮真实截图可复用。
  • noFurtherHTTPUI=true。不再操作浏览器/业务HTTP/DB,不自行退出Space53或停止Ops服务;会话、进程等环境清理由primary放行Ops处理。无额外health重复检查。

两仓均feature/issue-106-gross-margin-exclusion,只读核branch/status为Backend21项dirty、Web31项dirty,全部保留。QA本次只写coordinator报告/矩阵及Redmine;没有产品源码写入、分支切换、commit、push、部署或生产操作。

Redmine:最终逻辑批次写回#35并重读后,以qa/final-writeback-receipt.json记录journal;#36原347/348修复验证复用,不重复追加。

RA Updated by Redmine Admin 11 days ago Actions #9

  • Subtask #37 added

RA Updated by Redmine Admin 11 days ago Actions #10

01-quick-create-c.png
04-project-exclude-b-40.png
06-km-excluded-b.png
07-quick-edit-b-flag.png
08-incentive-neutral-factor1.png

#106 测试站图文验收结果 — beta.2

本轮实际执行10项:9 Pass / 1 Fail / 0 Blocked / 0 Skipped。普通编辑finished/unpaid缺少保存入口,DEF106-02/Redmine #37,未全通过。 列表快编、40%、全排除系数1及KM链已通过,不能覆盖该普通编辑Fail。

日期:2026-10-31 Asia/Shanghai;环境仅https://tcrm.mindsetech.com + https://tcrm-api.mindsetech.com/v1。截图均为本轮部署后的真实测试站页面,非本地旧图。本文是图文测试报告,不冒称正式员工手册。

实际候选与角色

  • Backend 1.20.15b2,473cc345af4898a624966c88eb63016c9e0a5d1a;Web 2.16.9-beta.2,578fdc8d9389b8287ffadeee8fd1b483d65fcda1。
  • Ops实际镜像/源文件/公网bundle/测试API base、0028正向迁移及105三表保留、实际server/worker专用staging DB/broker/result/queue收据已消费。两CI production阶段均跳过。QA未重复探DB/worker/资源健康。
  • p1刷新后加载index-BN4j6c55.js及login-CXdZLjZK.js,实际版本beta.2,profile200/code200、管理员20 active。财务19/PM16在准备阶段正常认证及权限核对,未把他们写作本轮全部角色UI已验收。账号来自BW“NDB 专用测试账号”,不改角色/姓名/密码。
  • 原49项是本地独立证据,沿用#35 journal349、DEF36 j347/348及原影响比较;不计成49项新版staging Pass。Ops合并交叠BE2/FE7聚焦证据单独复用,非QA新增执行数。

唯一合成对象与状态

RUN:QA106-STAGING-20261031-R1。客户15、合同23、联系人11、项目96、自动首条需求31、本轮ProjectCandidates 27;A Task148、B Task149、C Task150;A唯一成本 42。总计10个显式新对象、3Task/1Cost,未复制第四条Task。

只读引用既有纯合成专家574245;账户25虽同属该专家但实际缺银行、ready=false,未引用或补改。新成本用无旧主档ID的完整合成快照,105严格字段就绪检查ready=true,无豁免/审批。

最终保留:A148 finished/计入/收入1000;B149 finished/不计入/收入1000;C150 ongoing/不计入/收入null;成本42 600RMB/unpaid。PM16/PA20、项目96/需求31;公司销售归属20/16由新Task完成快照捕获,年度API本客户owner各1000、无缺归属Task。未登记实际奖金、付款或审批。

实际用例表

编号 影响 用例/实际结果 状态 证据
QA106-STG-ENV IMP106-12 消费Ops收据并p1实际加载beta.2/测试API、profile20 active;0028/worker隔离不重复现场探测 Pass actual-browser-candidate.json; runtime-gate.json
QA106-STG-CREATE IMP106-01/09 A148/B149直接finished、各1000/flagfalse,项目96/需求31/PC27;年度客户15实际owner16/20各1000,ownMissingOwnerTaskIds为空 Pass task-a-after-create-read.json; task-b-after-create-read.json; final-task-incentive-owners-read.json
QA106-STG-QUICK-CREATE IMP106-01 UI唯一POST创建C150,project96/requirement31未新建;ongoing、flagtrue、收入null,精确GET证明归属 Pass ui-quick-c-result.json; c-exact-detail-read.json
QA106-STG-QUICK-EDIT IMP106-01/11 真实UI B149 true→false→true,各1TaskPUT/0CostPUT;项目70%→40%,原金融字段不变;保存后重新打开仍true Pass ui-quick-b-include-result.json; ui-quick-b-exclude-result.json; ui-pair-assertions.json
QA106-STG-PAIR IMP106-02 原2000/600毛利70%;排除B后basis1000/600、40%,原收入2000与成本600不变;API+项目实际列表图 Pass baseline-project-list-read.json; pair-assertions.json; ui-quick-project-40-read.json
QA106-STG-NEUTRAL IMP106-08/09 A/B均排除时excluded2/applicablefalse,项目legacy数值0但UI不适用;激励年度factor1、fallback;原2000/600与归属资格保留 Pass neutral-assertions.json; neutral-ui-incentive-read.json; neutral-ui-basis.json
QA106-STG-KM IMP106-10 Task149 actual_income1000、cost0、flagtrue,KM真实行可见,不因毛利标签隐藏 Pass km-excluded-b-read.json; km-ui-refresh-and-link.json
QA106-STG-REFRESH IMP106-10 真实刷新完成一次GET200/code200仍返回B149,UI行不计入;点击到/project_tasks/149;列表/项目刷新读回保持结果 Pass km-ui-refresh-and-link.json; final-task-b-read.json
QA106-STG-COST-SNAPSHOT IMP106-11 成本42完整独立合成snapshot readytrue、600RMB unpaid;无payment_info_id/旧id;最终DTO与创建后相等;账户25仍缺银行,不改主档/豁免 Pass cost-a-after-create-read.json; final-a-costs-read.json; final-reference-account25-read.json
QA106-STG-ORDINARY-EDIT IMP106-01/11 管理员20,B149 finished/unpaid,checkbox未禁用可勾但无保存/更新按钮,0编辑请求;primary确认DEF106-02,Redmine37;不被快编Pass覆盖 Fail finished-unpaid-edit-ui-gap.json; final-task-b-read.json

原始脱敏证据与唯一当轮台账:outputs/issue-106-implementation-20261030/qa/staging-20261031/actual-results.json;本轮后端影响按环境追加到同一backend-impact-regression.md,不复制第二套业务矩阵。

真实图文

快速创建C及列表快编

真实快速创建C的本轮输入

图1:管理员20在测试站选择已有客户15、项目96、需求31、PM16/PA20及合成专家574245,勾“不计入毛利率”。唯一POST返回Task150,随后明确ongoing列表及精确detail独立GET核归属;收入null不进入A/B统计样本。

Task149统计标记保存后重新打开

图2:从本轮Task列表的149行进入“编辑毛利率统计标记”,保存后只读重新打开,标记true;取景不显示Task号,具体映射由ui-quick-b-exclude-result.json的一次PUT /v1/tasks/149及精确GET绑定,不把图单独当ID证明。两次快编true→false→true各1TaskPUT、0CostPUT,金额/credit/成本保持。

70%变40%,真实金额保留

项目96排除B后的40%

图3:#000096是项目号,其中A148收入1000/成本600、B149收入1000/成本0。基线70%,排除B后参与基数1000/600,页面40%;原实际收入2000、成本600保持。C150无收入且ongoing,不参与这组毛利计算。图为最终A=false/B=true重新加载后的真实状态,接口金额见pair/ui-pair原始证据。

全部排除,无有效基数时系数1

本轮公司15全排除的年度基数与系数1

图4:#15是客户号,2026年度参与收入/成本0/0、排除Task数2、适用性“不适用(无有效基数)”、系数1,说明“排除后没有计算基数,系数按1”。这是A/B同时排除阶段截图;最终已把A恢复计入以保留40%复现场景。项目接口旧数值仍0,由独立applicable=false驱动页面“不适用”,不是假称真正0%毛利。

排除毛利统计不隐藏KM提醒

零成本提醒仍显示已排除的Task149

图5:仅取本轮Task149/项目96及表头,收入1000RMB、成本0、不计入毛利率。实际点刷新后一次GET200/code200仍返回该行,点击#149跳到确切详情;无其他业务记录写入。

普通编辑失败边界

finished unpaid普通编辑没有保存入口

图6:正确URL为/project_tasks/149/edit?project_id=96,图中**#96是项目号,行业主题task b对应Task149**。已结束/未付款任务的统计框未禁用,但标题仅返回/Card等,无保存/更新。没有发出普通编辑PUT,截图中其他必填背景空值不是无按钮的原因;primary/Web已确认header的非关键编辑模式判断漏finished/unpaid。已附#37附件122。不得以快编成功改成普通编辑Pass,也不改付款状态/转ongoing绕过。

六张图均由QA查看;具体采集时间、SHA256、版本和角色见screenshots.json。图1采集约19:00,图4约19:10;图3/图6为最终取景,时间和标记阶段不同已在图注解释,没有混写成同一次快照。

失败、复用与安全边界

DEF106-02在本轮beta.2仍Fail;Web本地最小修复不等于新版本部署或QA重测。本轮未修改产品源码、版本、Git、环境、数据库或旧105实体。后续若获准部署修复,只复测受影响普通编辑及必要相邻保护,保留这些未受影响的beta.2证据与来源。

每个实际业务写均先存intent,未知结果禁止自动重放。快速创建最初读列表因未指定状态看不到ongoing C,后以显式ongoing和精确ID GET闭合,无第二POST;项目无基数旧数值0预期曾错写null,按当前契约修正断言;cost detail无GET改用Task成本列表。上述runner/导航/横向定位纠正均留原响应,不计产品Fail、不重发创建。

未调用支付状态、实发确认、开票、审批、通知、反馈、会议创建、ES或DB写。普通API内部入已核staging队列属本包允许;源码对finished/data/recordfalse在日程/MQTT前早退,最终三Task recording_schedule=null;未读取Celery结果,不把源码skipped冒称实际队列回执。新项目关联显式PC27,空link_code,不编辑旧专家/账户/旧项目关联。新成本快照全合成,不展示收款明文。

原本地未测角色/会议专用路径、复杂预付/补结、团队3%阈值、压力及共享服务边界仍按矩阵保留。此次不制造这些额外数据,不把9Pass当全角色/全功能通过。专用账号active与本轮RUN数据保留;Space1/p1暂留同目标可能的定向回归,Ops p2已收尾;无本轮guard残留。正式员工手册仍作为后续工作,本文只交付测试图文。

复核与回写

UI/项目只读图文复核待primary安排,不冒称通过。Redmine #35测试站R1按逻辑批次写回,原本地journal349保留;写回及读回编号以同目录redmine-writeback-receipt.json为准。#37已创建并读回、状态新建,QA不自动关闭。

RA Updated by Redmine Admin 11 days ago Actions #11

#106 beta.2 R1 final logical note — 2026-10-31

澄清journal351原句“未修改数据库”:本轮未执行直接DB写;通过授权正常API创建10个合成对象及标记更新,生产未动。

UI图文结构/截图可读性复核Pass,Backend业务事实校对Pass,无必须修改项。来源:outputs/issue-106-implementation-20261030/ui-staging-review.md 与 backend-staging-report-review.md;原报告docs/qa/frontend/issue-106-staging-20261031.md末尾仅补复核元数据和链接,已验图片/用例结果保持。

报告复核Pass不改变实际beta.2结果:仍9 Pass / 1 Fail,DEF106-02/#37未修复、未自动关闭。Web本地24项测试/build不等于测试站修复通过;本note没有新测试/新Pass,不复制10case或重传截图/附件,原journal351和#37附件122有效。

beta.3待人类决定及实际部署/定向复测,Space1/p1保留同目标;本次无浏览器、业务数据或服务探测操作。

RA Updated by Redmine Admin 10 days ago Actions #12

09-beta3-ordinary-margin-saved.png

DEF106-02 beta.3 定向修复验证 — 2026-11-01 Asia/Shanghai

仅staging tcrm/tcrm-api。FE2.16.9-beta.3/4a303c3d8a70805c31caaa629e94d7242733caf9;BE1.20.15b2/473cc345有效收据复用。primary真实UI执行,visible QA责任线程独立离线逐值核原始请求、完整前后Task/cost DTO和PNG;不是QA亲自点击,未重跑support或业务HTTP。

本轮实际1 Case Pass /0 Fail/0 Blocked/0 Skipped;复用beta.2有效9Pass(#35 journals351/352)。最新10个既有Case=10Pass/0Fail;四次保存不新增四Case,开发24与本地49不计此轮执行。原beta.2 9Pass/1Fail及#37/附件122原失败保留,ordinary previous链及actual-results-beta2-r1.json保存历史。

Case/影响 前提、操作、预期 实际独立复核 状态
QA106-STG-ORDINARY-EDIT / IMP106-01/11 / #37 admin20 active、Space3/p1、原Task149 finished/unpaid无成本与148有cost42。普通编辑独立按钮双向保存flag;应仅1单flag PUT/次、无Cost写、不改其他字段、刷新保留 00:06:02–00:06:17执行B149 true→false→true、A148 false→true→false;每次PUT /v1/tasks/149或148,keys仅exclude_from_gross_margin,HTTP200/application-json/code200、0Cost写、guard恢复;每次80其他Task字段及完整cost DTO相等。reload checkbox值与目标布尔值一致。最终Afalse/Btrue,project96 .4、原收入2000/成本600 Pass

原始证据outputs/issue-106-implementation-20261030/qa/staging-20261031/primary-beta3-support/retry-locator-01/;QA逐文件hash/独立断言def106-02-beta3/independent-review.json。实际UTC2026-10-31 16:06=上海2026-11-01 00:06,路径RUN20261031保持稳定。新图09为primary采集/QA已目视;页头#96是项目号,Task149由intent URL/PUT/GET绑定。图示独立保存按钮/锁提示及原空字段,不补填metadata绕过。PNG原样复制SHA256 dfc597c01c15d097cc8715a392cac3c79284bafbd6076e696e6a8901c5725f10。

外层首次role checkbox无name定位器在动作前被Ego拒绝,count0/sent[]/guard恢复,GET149仍true;locator-correction.json后用观察到的唯一CSS checkbox,另目录完整执行四次。不是未知写重试,不计产品Fail。refreshPersisted字段是刷新后的勾选值,false步骤不代表刷新失败。

beta3仅独立flag handler/button、测试与版本metadata变化,BE/其他路径未变;ENV/CREATE/QUICK-CREATE/QUICK-EDIT/PAIR/NEUTRAL/KM/REFRESH/COST-SNAPSHOT 9项按原beta2候选/日期/角色复用。原六图与UI/Backend未变内容Pass复用,新图/增量报告待primary定向复核,不冒称已审。Ops版本/独有bundle/edit chunk+测试API证明本轮实际候选,没有本轮容器字节对比。其他角色/会议等原未测边界不升级。

图文docs/qa/frontend/issue-106-staging-20261031.md,唯一backend-impact-regression.md已追加对应范围;无产品source/config/环境/Git/生产操作,无新对象/账号/真实付款/审批/DB直写。QA noFurtherHTTPUI=true;Space3交primary最终finish。本次仅修复验证,不自动改变#35/#37 statusClosed。

RA Updated by Redmine Admin 10 days ago Actions #13

  • Subtask #38 added

RA Updated by Redmine Admin 10 days ago Actions #14

10-home-finance-70.png
11-home-finance-40.png
12-home-finance-empty.png
13-home-pm-october.png
14-home-pm-rank30.png
15-home-customer-october.png
16-home-recruitment.png
17-home-pm-reminders.png

#106 首页三角色统计图表补验 — 2026-11-01 R1

最新用户明确“先验现有三个角色,其余标明未测”。本轮只收口测试admin20/finance19/PM16,其他5身份及TL依赖场景不建不测、不等待授权。FE2.16.9-beta.3/4a303c3d + BE1.20.15b2/473cc345,环境仅tcrm/tcrm-api;QA在唯一新Space5正常BW密码UI登录,各profile200/code200 active/真实role,不让admin冒充finance,未改账号。旧10Case=10Pass保持原层级/日期,本轮不重算。

计划21Case:13 Pass /1 Fail /1 Blocked /6 Skipped;实际执行14项=13 Pass/1 Fail。全角色/所有图表完整覆盖未完成。 6Skipped来自最新用户决定(PA/sales/SU/guest/TL及其依赖团队场景),不是等待新授权;1Blocked为完整非空utility样本,已观察空态不作非空通过。

影响IMP106-03/04/05/08;唯一矩阵outputs/issue-106-implementation-20261030/backend-impact-regression.md已追加,原图文docs/qa/frontend/issue-106-staging-20261031.md顶部为本轮增量。每条操作/预期/层级/实际原始证据见附actual-results.json;独立同期间算式/ECharts运行series/完整DTO核对附independent-review.json。不是源码推算、mock或开发24项复用冒充亲测。

CaseID 状态 实际与边界
QA106-HOME-AUTH-ADMIN Pass 正常BW登录/profile200/code200、active、id20/roleadmin;非admin冒充,未改账号。
QA106-HOME-AUTH-FINANCE Pass 正常BW登录/profile200/code200、active、id19/rolefinance;非admin冒充,未改账号。
QA106-HOME-AUTH-PM Pass 正常BW登录/profile200/code200、active、id16/rolepm;非admin冒充,未改账号。
QA106-HOME-ADMIN-HOME Pass 本月新增专家0与dashboard一致;11月Call排名API空且UI有明确空态;7/30天切换请求200,合成专家574245访谈2次。未把11月空图说成非空验收。
QA106-HOME-PM-HOME Pass PM16首页提醒4条含本Task149实际1000/0,虽排除仍保留;项目involve→take和任务user_id16+take请求200;7→30天真实切换,页面/响应排名一致。PM非TL不显示客户Call榜。
QA106-HOME-FINANCE-HOME Pass finance19页面显示逾期0、出账0,两个实际API total_counts0;本月新增专家0。项目/任务工作台、提醒/专家榜和客户Call榜不显示。仅验证实际空态,未验证非空出账。
QA106-HOME-ACCESS Pass 两种真实身份直达/admin均显示暂无可访问的数据中台内容;管理员可见7tab。此证据只证明UI权限边界,未执行越权写或全接口拒绝测试。
QA106-HOME-FINANCE-CHART Pass 公司15年度实际2000/600,月度图10月2000/600/2小时、其余月0;B计入70%,排除40%,A/B全排除基数0/0页面不适用。7条ECharts运行series与真实响应逐项相等;原实际金额不变。
QA106-HOME-PM-METRIC Pass 相同2026-05-01至11-01查询,PM16原收入2106/成本600保持,基数2106→1106,利润率独立算得71.51%→45.75%;其中106来自其他现有Task,不套项目70/40。另10月筛选也返回2106/600/45.75,截图标明该期间。
QA106-HOME-SALES-CHART Pass 三个实际接口与ECharts收入/成本/毛利全部series数值对齐;公司15实际2000/600、70→40,10月聚合实际4106/600保持、85.39→80.68,分别按响应basis4106/600和3106/600算。管理员查看不替代sales身份权限;排除条数错误单列Fail。回款状态只观察表,未将其全量正确性计入此Pass。
QA106-HOME-SALES-COUNT Fail 公司15双销售归属、仅Task149=true,销售company basis excluded_task_count=2,财务=1。金额/40%正确但排除数错误;源码每销售行赋1再累加。primary确认Backend唯一修复owner,尚未放行修复/部署。
QA106-HOME-RECRUIT Pass 补齐原响应与截图:10月新增39/首次访谈4,11月0/0;表逐行与7月度响应核对。仅验证已显示统计,不点击专家明细或造专家数据。
QA106-HOME-CUSTOMER Pass 11月空→10月实际总6小时,响应计数2+2+1+1+0=6,与图series逐点一致;本公司15为2小时。客户名称筛选请求含QA106,返回仅company15一行,10月client/billable均2,原A/B各1小时独立对照。未点导出。
QA106-HOME-FLAG-INVARIANTS Pass 四次单字段TaskPUT200/code200、无成本写;同admin权限上下文完整其他Task字段与成本DTO相同,结束148false/149true并由PM只读确认。PM allowed_payment_transitions=[]与admin不同属角色能力,不是成本落库变化。未改金额/日期/归属/状态。
QA106-HOME-ROLE-PA Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-ROLE-SALES Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-ROLE-SU Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-ROLE-GUEST Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-ROLE-TL Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-TEAM-LOW-LOSS Skipped 最新用户明确“先验现有三个角色,其余标明未测”:该身份及依赖团队场景本轮不执行;不建账号/团队/样本,不等待授权,不用admin代替。原前置缺口作为事实保留。
QA106-HOME-UTIL-NONEMPTY Blocked 管理员已实际观察11月平均资费[]、Seat[]和相应空态,专家新增图本月0/上月PM16为2,运行series已保存;未闭合完整非空资费/Seat样本及逐图截图,不能以空图通过整个用例。PA数据表仅观察,不冒称真实PA身份已测。

关键实证:财务公司15实际2000/600/10月2h不变,B计入70%→排除40%→A/B全部排除基数0/0、不适用,再恢复;7条运行series与真实响应逐点一致。PM16同May01–Nov01查询实际2106/600保持,basis2106→1106/600,71.51→45.75;额外106现有收入未忽略,另10月筛选截图明确其期间。销售overview/companies/monthly三图数值对响应,公司15实际2000/600、70→40,月10实际4106/600、85.39→80.68;排除数错误独立Fail不掩盖。

DEF106-HOME-COUNT-01已建子缺陷#38并读回:公司15双销售、仅B149排除却count2,财务count1;services.py每销售行计1再累加,primary确认唯一owner=NDB Backend Agent;当前不放行修复/部署。金额与40%本身正确。没有自动关闭#35/#38或修改状态。

补齐专家招募真实响应+PNG:10月39/4、11月0/0;客户11月空→10月Call总6h,2+2+1+1+0=6;公司15独立名称筛选返回仅1行、10月client/billable各2h,上下两面板作用域分开。财务身份逾期/出账均0仅覆盖真实空态;PM/finance直达/admin无可访问tab,只证明UI边界,不替代全接口权限。PA表/平均资费/Seat/专家新增仅部分观察,非空/全角色未通过。操作监控、项目表所有动态分支、销售回款全状态、导出和全部筛选组合不在本轮Pass断言内。

证据目录outputs/issue-106-implementation-20261030/qa/home-roles-20261101/,原始method/path/query/HTTP/code、DTO、runtime series保留,认证材料仅BW内存不落盘。8张新图已QA目视,真实采集2026-11-01、PNG原样copy/hash见screenshots.json;新图/增量文案待primary安排UI/Backend定向复核,旧图/旧review复用,不提前声称新增内容已审。

本轮仅原Task148/149四次单flag PUT,0Cost写;同admin上下文其他完整字段/cost DTO相等、恢复148false/149true;PM最后GET allowed transitions为空是角色能力不同,非成本漂移。无日期/金额/状态/归属/账号修改,无新fixture/代码/config/DB直写/Git/部署/生产/付款/审批/通知。三角色范围按用户决定阶段交付,不继续请求五身份授权。Space5已正常登出、finish({keep:[]})成功一次,账号保持active、fixture保留。JSON/21条状态/8PNG hash/文档空白及两仓干净、diff --check核对通过。

RA Updated by Redmine Admin 10 days ago Actions #15

DEF106-HOME-COUNT-01 / #38 第1轮本地独立QA — 2026-11-01

本地独立37 Pass /0 Fail /0 Blocked /0 Skipped;37=20项JSON视图+10项实际Excel响应+3项公司/月筛选+4项全计入/全排除。74份候选/baseline原始响应、每Case的操作/预期/实际/层级/影响/时间及原始值已附子缺陷#38本轮journal(case-index.json、execution-result.json、request-responses-r2-oracle-corrected.jsonl、results.md),不在两issue重复加总为74Case或重复上传同证据。

base473cc345、source digest af64e859e8b54281a24f74b56c2185372b86fdfe31c06c7fd953e052895ce818;services SHA fb02b2b896ae61032067205a94c17cabd8fdda3ee95c96861b53812ec1fefb79,tests SHA06758d048f77bf8ec1c49e3edae85c041ef28de0866fa440f663c262554c3cd7,执行前后均匹配。仅owner原services/tests两文件dirty,QA无source/config/Git/部署写。

真实Django URL/DRF APIClient/视图/ORM,SQLite内存临时库、禁历史迁移/项目.env读取/外网;force_authenticate仅临时admin,非密码登录/真实sales角色,也不是网络HTTP、PG或staging复测。双销售仅B排除旧公司count2与候选1同fixture复现;每销售overview各1、全排除count2不翻倍;多销售/重复归属/跨公司月/单销售/无匹配/空月与筛选覆盖。除排除数外完整响应相等,旧金额分摊/比例/基数不变。collection-status JSON/真实Excel及companies-export逐格保持;Excel无排除数字列,工作簿内存解析仅保留逐格原始值,不冒称独立xlsx文件。

首轮QA oracle误假设重复ID先归一化,执行首响应原金额即与baseline相同;只修oracle到既有重复ID权重,原execution.log/两响应及runner-correction保留。其后执行通过,不计产品Fail/第二修复轮,offline8/开发16也不与37相加。所有临时账号/角色/公司/项目/Task/Cost快照恢复一致,库finally销毁,无现有业务数据/账号/浏览器/服务操作。

原staging #35j356的13Pass/1Fail/1Blocked/6Skipped、旧10Pass以及#38 count2失败和全部真实截图保留,未部署站点仍原Fail,不自动Closed。其他角色按用户决定未测,不重跑旧14项。纯数值修复无测试发布前置;PG/迁移/网络/新页面/供应商/性能未测,AOCI既有静态工具阻断不当业务失败或新增治理。

原图文docs/qa/frontend/issue-106-staging-20261031.md仅顶部追加本地修复说明,未伪造新页面图;同backend-impact-regression.md追加独立结果。证据唯一目录outputs/issue-106-implementation-20261030/def106-home-count-01/qa/。交primary审核和后续决定,本轮不提交推送部署,不改生产。

RA Updated by Redmine Admin 9 days ago Actions #16

09-quick-confirm-viewport.png

QA106-MARGINCONFIRM 本机真实页面验收 — 父#35

执行日期:2026-11-02 Asia/Shanghai,原可见QA责任聊天。仅本轮确认交互,不重做原#35/#38全包,不代表部署。

本轮11 Pass / 0 Fail / 1 Blocked / 0 Skipped:10项真实交互观察通过、1项恢复清理通过;其他角色/只读关系场景仍Blocked。未发现本轮交互阻断缺陷。

环境、候选和授权

  • 本机BE既有106 feature@700740e85740bad29f4b3a8fc38977496528f4a4、API127.0.0.1:8000;FE既有106 feature@a61681de6460f07fcfcb008eb973e0f5ed86803b加5文件冻结候选,Web127.0.0.1:8888。Ops env-ready/migration guard引用本包ops目录;QA未修环境、切分支或迁移。
  • FE组合hash:0e6e0358ba7fb044e8557919145125a5fd1e20ec5b76d3078bd555f32fec3d06。5文件逐项hash在业务执行前及收尾后均与candidate.json相同,未修改产品源码。开发35项/格式/lint/build直接复用,不重复计QA数量。
  • 用户明确允许本机恢复、仅既有LOCAL-R1合成对象flag确认/恢复;针对页面缺catalog另明确“允许,补齐后继续页面验收”。只通过公开API新建3条精确type=page,parent_path=null catalog,未改角色/RolePermission或接口权限。
  • 正常页面登录:bw原专用本机admin身份,profile account1/role admin。Space7/p1独占;凭据仅内存,不打印/落盘。不使用staging148/149或生产身份。

原前置Blocked的恢复链

原记录保留于permission-block-report.md、admin-permission-summary.json及真实权限拒绝截图;当时无业务flag写,不能改写为当时已通过。用户放行后fresh查重,创建catalog29 /project_tasks/:task_id/edit、30 /tasks、31 /projects/:id/add_project_task,均唯一名称QA106-MARGINCONFIRM前缀、page/null,正常profile刷新后进入页面。没有增加宽泛父路由、角色授权或12条旧权限包。

本次是原前置解除后的继续执行,不重复已通过功能、不覆盖Redmine旧Fail,也不把原权限拒绝当成此次新交互产品失败。

fixture、请求与DTO证据

fresh正常GET核对LOCAL-R1唯一memo、company/project及Ops manifest:Task2 finished/unpaid、cost16 unpaid;Task3 finished/unpaid无成本;Task21 finished/paid、cost23 paid。按primary再次明确的既有进行中授权,只读定位Task4 ongoing、memo LOCAL-R1:c、project3/company b,保存完整基线后执行flag往返,没有改状态造样本。四个Task原flag均false。

真实操作计数:10次成功Task PUT(均HTTP200、严格仅一个布尔flag)、1次浏览器故障注入发网前阻断,0成本写、0创建请求/新Task。 Task2两次,Task3四次成功(普通2、快捷1、恢复1)另一次注入,Task21两次,Task4两次。不是11次真实HTTP写;注入不冒充服务端错误。

观察器只记方法/path、单flag形状判定、状态/阻断标志,不保留headers/token/草稿值。sessionStorage跨导航保留计数;发现ego的CDP新文档脚本不跨后续调用保持后,每次导航在交互前显式重装observer,操作窗口计数完整;不宣称未观察的页面初始化区间是全网抓包。创建观察窗口另捕捉并预防所有相关Task创建POST,实际未触发。

11份逐步DTO对照均仅有flag/毛利投影允许变化,金额、状态、其余业务字段及完整成本一致。Task2和21的未提交memo草稿在标记保存后仍在页面,服务端memo原值不变;刷新后页面回到服务端memo。最终四个Task 完整DTO包括完整成本精确等于原基线(非仅检查flag)。

本轮逐项结果

以下稳定编号均以前缀QA106-MARGINCONFIRM-组成;完整逐项前置、操作、预期、实际和证据见results.json。层级为本机真实浏览器/API,CLEANUP为恢复读回;影响关联为本包普通/快捷单字段确认、创建复制边界,父#35。

编号后缀 操作/预期 实际结果 状态 证据
CANCEL 普通页切flag后取消,零写且保留草稿 Task2取消后counter0、checkbox false、未提交memo仍在 Pass cancel-result.json、03图
FINISHED-COST 有成本finished正常确认、刷新、恢复;仅flag写 Task2 false→true→false,两次HTTP200单flag、0cost,刷新持久;成本16完整不变 Pass task2-confirm/refresh/restore-result、04/05图
FINISHED-NOCOST 无成本finished不提交完整表单也能确认 Task3 false→true→false,两次窄PUT,草稿保留、无成本 Pass task3-true/false-result、dto-comparisons
PAID 已付邻接场景保持金融锁及其他草稿 Task21/cost23 paid保持,flag往返成功,未提交memo未落库 Pass task21-true/false-result、08图
ONGOING 真正ongoing既有Task确认并恢复,不改状态 Task4 false→true→false、仍ongoing,最终完整DTO恢复 Pass ongoing-readonly-candidates、task4-true/false-result
QUICK 快捷只用原弹窗确认一次;取消零写 Task3取消零写、确认单PUT后关闭,无第二弹窗,GET true;普通页合法恢复false Pass quick-cancel/confirm/restore-result、09视口图
FAULT 一次浏览器发网前阻断,不冒成功/不自动重试 Task3正常GET仍false,显示“已核对当前标记,请确认显示结果后再操作”,草稿保持;明确非真实服务端错误 Pass task3-fault-result、06图
CREATE 普通创建仅勾选不即时写或弹确认 project3创建页默认false,切true再false,counter无增量,未按提交 Pass ordinary-create-observation、12图
QUICKCREATE 快速创建标记仍随原表单提交 原快速任务弹窗勾选本地true,0写、无额外弹窗,取消未创建 Pass quick-create-observation、13图
COPY 真实复制入口仅观察、不新增Task Task3复制按钮进入project2创建页,默认false、勾选true零write;未提交。未声称true源flag复制重置已实测 Pass copy-observation、14图
ROLE-BOUNDARY 其他角色/实际只读关系验证,不改变权限补样本 本轮仅admin1;finance/PM未获得本轮合法页面/只读关系实测,不扩角色或授权,其余角色未测 Blocked catalog-baseline、admin-permission-summary;沿用primary不扩role权限决定
CLEANUP 恢复flag、删除仅新增catalog、登出关闭空间 四Task整DTO恢复;catalog29/30/31无children/role refs后删除;profile/catalog/roles精确等于原基线;观察器清除、正常登出、Space7 finish一次 Pass flag-restoration-verification、catalog-restoration-readback、observer-cleanup、logout-readback、browser-closeout

截图/图文结论与边界

本轮真实本机截图均摄于2026-11-02、管理员account1;不是旧staging图或组件mock。01–05范围UI已由primary回传目视Pass,无需重复送审。清晰视口补充为09-quick-confirm-viewport.png:展示唯一快捷确认弹窗和标记区域,只证明确认前界面;成功、次数和数据结果由quick-confirm-result及counter/DTO另证。该补图不加case。

10/11图在动画期取得clip位置,结果截断,原文件保留但不选作交付截图或通过证据;已结束空间,不为重拍扩写业务。完整图02及已通过的01–05仍保留。图文导航见visual-guide.md。

页面原有推荐背景必填红框、金额区NaN及标题缺Task号属于现有fixture/旧页面背景,不影响本轮flag窄保存;本包未修、不扩大为新回归结论。Task与成本识别以URL/DTO/manifest核对,不凭截图空标题臆测。

ROLE-BOUNDARY未通过,不能宣称全角色或完整#106全量QA通过;本轮也不验证真实服务端失败、双失败未知结果分支、真实并发、部署/生产或所有未改报表。相关源码guard/异常分支开发35项可复用,不能提升为本轮页面亲测。

收尾

catalog清理前逐ID/字段核对、无children、无角色引用;只删29/30/31。其后profile+catalog+roles完整基线一致,原账号/权限/业务数据未改。没有后台改DB恢复flag,也没有新增数据或提交表单草稿。

已正常接受退出登录确认,进入sign-in页并核实token cookie消失;不把浏览器登出夸大为已核实服务端token撤销。观察器wrapper/sessionStorage已移除;原CDP脚本ID已不存在,不重复添加,清理支持错误记录保留。Space7.finish({keep:[]})仅一次成功;noFurtherHTTPUI=true已通知primary,Ops后续只清其自有环境。QA不停止服务/PG。

支持过程有等待隐藏input超时、选择器歧义/迟到ref、截图clip及CDP脚本ID生命周期问题;未把它们计产品Fail,未重复不确定业务PUT,均以实际counter、同ID GET及当前DOM续行。测试原始结果和初始权限Blocked报告保留。

本轮仅写本包qa证据、已授权临时catalog及合成flag;无产品源码/环境/角色修改,无Git提交/推送/部署/生产操作。Redmine只向正确父#35批量追加本轮结果并全文读回,见writeback-receipt.json。

RA Updated by Redmine Admin 9 days ago Actions #17

105+106 测试与生产发布:QA最终回执审查

2026-11-02 Asia/Shanghai。正确工单NDB #34(105)/#35(106),原可见QA责任聊天。唯一发布索引:outputs/issue-105-106-release-20261102/index.md;唯一生产总回执:production-release-receipt.json。Operations执行Git/CI/环境及实际运行,QA只审同一源证据,没有重新访问环境。

最终审查Pass:9项发布回执核对通过、0项失败,新增功能测试0项。所审证据支持105+106测试与生产发布及两仓Git收尾完成;不代表全角色或所有业务路径已验收。

实际发布与候选

目标 版本 / 候选 CI及实际运行证据
测试BE 1.20.17b0 / bd5a99c73bc6524efc5d252948a8afda4f499ada 原7项测试回执审查复用,认证摘要/flag读取及本次精确会话撤销均已闭合
测试FE 2.16.9-beta.4 / 3aadf8f4eadc64ed50d8d8f65b1cc08d0a4f0fdc 已审preview冲突proposal精确应用;CI/公开版本/资源核对复用
正式BE 1.20.17 / 52a00635480872694faf4b13c692a114104f87e2 cnb-fpb-1k6dmuqt4 success;实际容器版本、34个打包源码hash及镜像digest匹配
正式FE 2.16.9 / 1a756e16b128b84f9a6d89b32e567e9ca39e06d4 cnb-119-1k6dn3m8v success;公开版本/生产API编译目标、主/登录/编辑资源与对应CI产物名匹配

用户已明确允许此次必要提交/整合/main-preview及精确tags推送、目标迁移/配置/部署、测试通过后立即生产的时间例外;Ops唯一writer。生产从main整合105/106来源,未合整个preview,未新建分支/worktree。

本逻辑轮次逐项审查

以下为发布回执检查,层级均为“QA独立审核已保存Ops原证据”,不是9个重新执行的功能案例。完整结构化记录和原证据指纹见qa-final-review-receipt.json。

编号 检查/预期 实际核对 状态/源证据
REL105106-01 复用测试7项并闭合会话清理 test-release-receipt认证读取字段已true;staging-summary-smoke合法admin读105摘要/list及106既有Task148/149匹配。精确会话字段清为NULL、撤销1条并读回,专用账号仍启用、仅认证会话写 Pass;test-release-receipt、staging-summary-session-cleanup
REL105106-02 BE tag/候选/CI/实际代码一致 git/ci/artifact/runtime均52a00635及1.20.17;34个运行源码hash与准备文件集合精确相同,镜像digest相同。仅Docker明确排除的两分析元数据不作运行文件断言 Pass;backend-production-{git,ci,ci-artifact-proof,runtime}
REL105106-03 FE实际资源确为已审新确认候选 git/runtime的5hash与已审proposal相同,含4冻结文件及适配测试;1a756e16及2.16.9跨源一致;公开资源HTTP200、资源名匹配精确CI清单、digest一致;生产API目标/新确认及未核实提示存在、旧独立保存提示缺席 Pass;frontend-production-{git,ci,ci-artifact-proof,runtime},frontend-integration/qa-review-receipt
REL105106-04 两正式CI只走目标环境 两CI success,production alias/部署触发成功,staging部署阶段skipped;实际运行另有证据,不以触发成功代替部署完成 Pass;两production-ci及artifact-proof
REL105106-05 105正式模板及精确配置生效 正式“NDB收款信息免填”,4控件必填、身份证号/手机号两项多选、Rex Linn固定审批、成员通知关闭,已查看保存后截图/规则快照。两键GUI精确读回,runtime=true/buildtime=false/literal=true;Compose仅五服务各两行引用、原文其他字节保留;server及4辅助服务实际值/镜像匹配 Pass;formal-template-readback/controls/rule、production-105-env-save/env-flags/compose-structural-diff、production-auxiliary-runtime
REL105106-06 迁移/callback及生产最小只读路径 0018/0028、三表/bool列及历史一致,剩余迁移计划空;migrate退出0。callback路由、配置及解密/免填分流存在。生产只读事务+rollback中账户DTO/摘要、Task计数分区及有限毛利投影通过;无provider/callback调用或业务写 Pass;backend-production-runtime、production-auxiliary-runtime
REL105106-07 #38及main既有#39不丢失 #38销售两文件运行hash与已验测试源相同。生产BE base为已发布#39 main27e28575,helper不在本次改动路径;finance整合回执记录已审FinancialStatistics解析逐字复用及class fingerprint,并绑定到实际views运行hash。未合整个preview;不因其他finance代码变化误要求整包重测 Pass;backend-production-git/runtime、原#39集成QA及#38证据引用
REL105106-08 两仓clean main=实时远端且准确tag已推 Ops一次both检查passed、issues空;BE main/local/live remote/head均52a00635,FE均1a756e16;准确正式tag/main推送由对应git/CI回执关联 Pass;production-main-closure、两production-git
REL105106-09 失败历史/授权边界/未测范围不被抹除 buildtime/key标识API尝试成功但读回不符的历史保留,后GUI修正并API读回false;首次runtime误检查Docker排除分析文件失败保留,仅修验证范围后34运行文件通过。未发生产申请、模拟回调、付款、通知或造业务fixture;迁移/正式模板/配置为获准操作,不能说生产完全零写 Pass;env-save/env-flags-readback、runtime-metadata-scope-failure、生产总回执

既有证据与未测边界

  • 105本机31、测试5、真实“进入审批”及手册#34 journals337/338有效复用,数量不相加为本次新执行。用户明确“只要进审批就行”,真实企微批准/驳回回调仍未测且为原接受范围,不新发审批、不批准旧测试实例,也不把本地完整加密HTTP/PG回调提升为供应商真实E2E。
  • 106原本地49及未变开发/测试证据、#38开发16/独立本地37、最新确认开发35/真实本机11Pass1Blocked及#35journal367继续按原环境层级复用。preview测试适配4组已审,不是新增业务实现;源/页面未变,不重跑。
  • ROLE-BOUNDARY保持未验证:finance/PM/其他角色及真实只读关系不能因发布而转Pass;不声称全角色或完整#106所有路径通过。本次admin新确认正常/取消/有限故障注入等页面证据不覆盖所有异常/并发分支。
  • 生产实际冒烟是只读服务层DTO/计数及有限投影,没有重新执行认证HTTP业务流程、生产页面flag往返、全量旧新金额对照或严格性能基准。FE依据实际公开版本/资源及CI绑定,未声称直接容器源文件逐字节查询。
  • staging原1个认证读取缺口及随后session清理已闭合,原qa-staging-review的pending文字为阶段历史;本最终回执引用新增原始证据,不改写原执行历史。

员工手册:发布后跟进,不阻塞发布

项目 后续内容/负责人 可复用素材与边界
105 QA补正式模板名称及Rex流程说明,UI视觉/Web或项目业务复核 复用既有docs/user-manual/frontend/issue-105-payment-exemption.md的真实测试图及已过review、当前Ops正式模板截图。明确测试截图来源;未实测的正式批准/回调步骤不能写成通过
106 QA将确认交互指南并入正式员工手册,UI/Web只审必要增量 现成margin-confirm-ui/qa/visual-guide.md及01–05真实图、已过UI/Web review直接复用;09为确认前清晰补图。10/11截断图不作主展示。不重开空间、不生成mock或重复业务写来补图

本轮已记录跟进,尚未声称正式员工手册更新完成;不在发布窗口扩大文档/截图验收范围。

写回与实际执行边界

本轮仅读取协调目录既有源回执、截图及必要原出处,写本qa-final-review.md及receipt,并一次逻辑批次向正确NDB #34/#35追加本审查全文/附件、全文读回;保留旧Fail/Blocked,不自动关闭工单。

未重新登录、读取凭据、查询runtime/CI/容器/DB/企微、下载环境hash、运行旧案例或Git命令;未修改canonical或Ops源回执。源记录指纹、journalIDs、读回一致性与附件见qa-final-review-receipt.json。唯一发布索引仍由primary维护。

Actions

Also available in: PDF Atom