Files
yingqing/core/qa/function-audit/output/model-photo-demo-a.audit.json
zycandClaude Fable 5 dcc5d7fe50 fix(billing): 删任务/删项目级联吞 ACTIVE 预留致 reserved_balance 永久冻结(审计 I2)
- 根因: CreditReservation.task 是 OneToOneField(CASCADE), AITask.project 也是 CASCADE
  —— 删项目→级联删任务→ACTIVE 预留行被吞, 账户冻结份额永不归还(实测 4 账户漂移共 ¥42,
  且随删项目持续增长)
- 修法: billing/signals.py 挂 AITask pre_delete, 删除前先 release_credit 释放(级联同样
  触发, release 自带行锁+幂等); apps.py ready() 接线
- 回归测试 x3: 直删任务/删项目级联/已扣费不重复释放
- qa/repair_reserved_drift.py: 存量漂移回填脚本(dry-run 默认, --apply 落 RELEASE 流水),
  已对线上 4 账户执行并复验清零
- qa/function-audit/output: 本轮 18 页模拟点击审计报告(0 真死按钮 0 JS 报错)

验证: 后端测试 213/213 通过, django check 无警告
补齐 aab4d7e: 该提交带走了 signals.py 之外的测试轮改动, 信号挂载点与回归测试在本提交收口

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 13:07:09 +08:00

695 lines
14 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"name": "model-photo-demo-a",
"route": "/model-photo/demo-a",
"url": "http://127.0.0.1:5174/model-photo/demo-a",
"mode": "quick",
"tally": {
"total": 39,
"works": 34,
"dead": 0,
"error": 0,
"disabled": 0,
"skipped": 4,
"noop": 1,
"blocked": 0
},
"results": [
{
"idx": 0,
"tag": "a",
"role": "",
"cls": "brand",
"label": "Airshelf 工作台",
"href": "/dashboard",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 46,
"api": 1
}
},
{
"idx": 1,
"tag": "button",
"role": "",
"cls": "sidebar-toggle",
"label": "收窄导航",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": false,
"mutations": 19,
"api": 0
}
},
{
"idx": 2,
"tag": "div",
"role": "button",
"cls": "search-box",
"label": "搜索 (Ctrl K)",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": true,
"self": false,
"mutations": 17,
"api": 0
}
},
{
"idx": 3,
"tag": "a",
"role": "",
"cls": "",
"label": "工作台",
"href": "/dashboard",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 46,
"api": 1
}
},
{
"idx": 4,
"tag": "a",
"role": "",
"cls": "",
"label": "商品库",
"href": "/products",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 34,
"api": 0
}
},
{
"idx": 5,
"tag": "a",
"role": "",
"cls": "",
"label": "模特库",
"href": "/models",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 22,
"api": 1
}
},
{
"idx": 6,
"tag": "a",
"role": "",
"cls": "",
"label": "视频项目",
"href": "/projects",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 24,
"api": 0
}
},
{
"idx": 7,
"tag": "a",
"role": "",
"cls": "active",
"label": "图片生成",
"href": "/asset-factory",
"disabled": false,
"active": true,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 39,
"api": 4
}
},
{
"idx": 8,
"tag": "a",
"role": "",
"cls": "",
"label": "资产库",
"href": "/library",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 38,
"api": 5
}
},
{
"idx": 9,
"tag": "a",
"role": "",
"cls": "",
"label": "团队",
"href": "/team",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 22,
"api": 3
}
},
{
"idx": 10,
"tag": "a",
"role": "",
"cls": "",
"label": "消费",
"href": "/account",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 27,
"api": 4
}
},
{
"idx": 11,
"tag": "a",
"role": "",
"cls": "",
"label": "垃圾桶",
"href": "/trash",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 23,
"api": 2
}
},
{
"idx": 12,
"tag": "a",
"role": "",
"cls": "",
"label": "设置",
"href": "/settings",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": true,
"mutations": 54,
"api": 2
}
},
{
"idx": 13,
"tag": "div",
"role": "button",
"cls": "user",
"label": "账户",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 21,
"api": 0
}
},
{
"idx": 14,
"tag": "a",
"role": "",
"cls": "",
"label": "工作台",
"href": "/dashboard",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 32,
"api": 1
}
},
{
"idx": 15,
"tag": "button",
"role": "",
"cls": "icon-btn",
"label": "消息中心",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 26,
"api": 1
}
},
{
"idx": 16,
"tag": "button",
"role": "",
"cls": "add",
"label": "新建商品",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": true,
"self": false,
"mutations": 35,
"api": 0
}
},
{
"idx": 17,
"tag": "button",
"role": "",
"cls": "dm-prod.active",
"label": "主图透真补水面膜// 美妆个护 · 6 批",
"href": "",
"disabled": false,
"active": true,
"verdict": "noop-active",
"signals": {
"url": false,
"overlay": false,
"self": false,
"mutations": 0,
"api": 0
}
},
{
"idx": 18,
"tag": "button",
"role": "",
"cls": "dm-prod.",
"label": "主图透真清透防晒霜// 美妆个护 · 3 批",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 11,
"api": 0
}
},
{
"idx": 19,
"tag": "button",
"role": "",
"cls": "dm-prod.",
"label": "主图南卡 Lite Pro 蓝牙耳机// 数码 3C · 2 批",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 11,
"api": 0
}
},
{
"idx": 20,
"tag": "button",
"role": "",
"cls": "dm-prod.",
"label": "主图滋啦速食牛肉面// 食品饮料 · 1 批",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 11,
"api": 0
}
},
{
"idx": 21,
"tag": "button",
"role": "",
"cls": "dm-prod.",
"label": "主图三顿半同款冻干咖啡// 食品饮料 · 1 批",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 11,
"api": 0
}
},
{
"idx": 22,
"tag": "button",
"role": "",
"cls": "dm-prod.",
"label": "主图小熊 4L 可视空气炸锅// 家居家电 · 0 批",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 11,
"api": 0
}
},
{
"idx": 23,
"tag": "button",
"role": "",
"cls": "dm-all",
"label": "全部商品24 个",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 27,
"api": 0
}
},
{
"idx": 24,
"tag": "button",
"role": "",
"cls": "dm-back",
"label": "返回模特图",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 22,
"api": 1
}
},
{
"idx": 25,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "1 张",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 26,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "2 张",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 27,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "4 张",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 28,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "8 张",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 29,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "1:1",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 30,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "3:4",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 31,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "9:16",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 32,
"tag": "button",
"role": "",
"cls": "dm-chip.",
"label": "16:9",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": false,
"overlay": false,
"self": true,
"mutations": 5,
"api": 0
}
},
{
"idx": 33,
"tag": "button",
"role": "",
"cls": "dm-gen",
"label": "立即生成 · 南卡 Lite Pro 蓝牙耳机 × Ava",
"href": "",
"disabled": false,
"active": false,
"verdict": "skipped-destructive"
},
{
"idx": 34,
"tag": "button",
"role": "",
"cls": "",
"label": "全部重跑",
"href": "",
"disabled": false,
"active": false,
"verdict": "skipped-destructive"
},
{
"idx": 35,
"tag": "button",
"role": "",
"cls": "",
"label": "全部下载",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 32,
"api": 2
}
},
{
"idx": 36,
"tag": "button",
"role": "",
"cls": "",
"label": "全部重跑",
"href": "",
"disabled": false,
"active": false,
"verdict": "skipped-destructive"
},
{
"idx": 37,
"tag": "button",
"role": "",
"cls": "",
"label": "全部下载",
"href": "",
"disabled": false,
"active": false,
"verdict": "works",
"signals": {
"url": true,
"overlay": false,
"self": false,
"mutations": 32,
"api": 2
}
},
{
"idx": 38,
"label": "",
"tag": "",
"verdict": "stale"
}
],
"missing": [
"搜索",
"E E2E 桥接测试团队 20260529",
"余额 ¥14,071.00",
"立即生成 · 透真补水面膜 × Ava",
"加入资产库"
]
}