- 根因: 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>
885 lines
18 KiB
JSON
885 lines
18 KiB
JSON
{
|
|
"name": "platform-cover",
|
|
"route": "/platform-cover",
|
|
"url": "http://127.0.0.1:5174/platform-cover",
|
|
"mode": "quick",
|
|
"tally": {
|
|
"total": 48,
|
|
"works": 46,
|
|
"dead": 0,
|
|
"error": 0,
|
|
"disabled": 1,
|
|
"skipped": 0,
|
|
"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": 41,
|
|
"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": 37,
|
|
"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": 108,
|
|
"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": 46,
|
|
"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": "iw-side-toggle",
|
|
"label": "收起商品栏",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": false,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 17,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "南卡 Lite Pro 蓝牙耳机数码 3C",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": true,
|
|
"overlay": false,
|
|
"self": false,
|
|
"mutations": 39,
|
|
"api": 4
|
|
}
|
|
},
|
|
{
|
|
"idx": 18,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "new-prod",
|
|
"label": "新建商品",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": true,
|
|
"overlay": true,
|
|
"self": false,
|
|
"mutations": 42,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 19,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "南卡 Lite Pro 蓝牙耳机数码 3C",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 51,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 20,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "露露同款裸感瑜伽裤运动户外",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 51,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 21,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "测试美妆个护",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 22,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "透真清透物理防晒霜美妆个护",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 26,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 23,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "耳机包数码 3C",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 26,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 24,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "Apple/苹果 iPhone 17 Pro数码 3C",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 26,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 25,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "滋啦速食牛肉面 · 6 桶装食品饮料",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 26,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "滋啦速食牛肉面 · 6 桶装食品饮料",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 23,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 27,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "植护24大包抽纸家用实惠装整箱面巾卫生餐巾纸巾悬挂式擦手面纸抽个护清洁",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 28,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "透真玻尿酸补水面膜美妆个护",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 29,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "测试美妆个护",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 30,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-prod-item.",
|
|
"label": "桥接测试补水面膜 20260529美妆个护",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 28,
|
|
"api": 1
|
|
}
|
|
},
|
|
{
|
|
"idx": 31,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "search-btn",
|
|
"label": "搜索",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 4,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 32,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "search-btn",
|
|
"label": "按平台筛选",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": true,
|
|
"self": false,
|
|
"mutations": 5,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 33,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-clear",
|
|
"label": "清空",
|
|
"href": "",
|
|
"disabled": true,
|
|
"active": false,
|
|
"verdict": "disabled"
|
|
},
|
|
{
|
|
"idx": 34,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "抖音电商",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 9,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 35,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "淘宝",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 36,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "天猫",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 37,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "京东",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 38,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "拼多多",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 39,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "小红书",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 40,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "快手",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 41,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "视频号",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 42,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "亚马逊",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 43,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "iw-filter-opt",
|
|
"label": "1688",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 6,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 44,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "platform-card.",
|
|
"label": "抖音电商",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": true,
|
|
"self": true,
|
|
"mutations": 7,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 45,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "opt.",
|
|
"label": "12 张",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": true,
|
|
"mutations": 7,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 46,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "ic-param-btn",
|
|
"label": "模型火山 Seedream",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": false,
|
|
"verdict": "works",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": false,
|
|
"mutations": 1,
|
|
"api": 0
|
|
}
|
|
},
|
|
{
|
|
"idx": 47,
|
|
"tag": "button",
|
|
"role": "",
|
|
"cls": "mi.selected",
|
|
"label": "火山 Seedream",
|
|
"href": "",
|
|
"disabled": false,
|
|
"active": true,
|
|
"verdict": "noop-active",
|
|
"signals": {
|
|
"url": false,
|
|
"overlay": false,
|
|
"self": false,
|
|
"mutations": 0,
|
|
"api": 0
|
|
}
|
|
}
|
|
],
|
|
"missing": [
|
|
"E E2E 桥接测试团队 20260529",
|
|
"余额 ¥14,071.00",
|
|
"折叠侧栏",
|
|
"全部商品 7 个",
|
|
"搜索批次/平台",
|
|
"时间",
|
|
"平台"
|
|
]
|
|
}
|