fix(shop-data-crawl): 后台店铺数据记录改读每店最新累计档,删除任务不再连坐后台

后台“店铺数据记录”此前以每次抓取的 file_result/file_task 为源,前台删除任务会物理删
这两张表,导致该店在后台退档/消失。现改为以采集归档维护、删除任务时保留的
biz_shop_data_crawl_daily_file 每店最新一档为数据源:
- V113:daily_file 冗余 shop_name 列并回填;归档写档三处入口同步写入
- 列表/批量下载/单档下载/删除端点改按每日累计档 id(daily-files/{id})
- 管理端删除=真删该店这条数据记录(档+文件+明细),前台任务历史保留但清文件指针
- 明细行 daily_file_id 跨天滚动删旧档时改指新档,修存量悬空引用(另附修复脚本)
This commit is contained in:
2026-09-08 15:02:25 +08:00
parent b12acf7793
commit 630bfc3eee
10 changed files with 278 additions and 122 deletions
@@ -0,0 +1,39 @@
-- 后台"店铺数据记录"页的数据源改为该店最新一次采集的累计文件(biz_shop_data_crawl_daily_file)。
-- daily_file 需冗余店铺显示名:删除前台任务后 file_result 记录可能已物理删除,
-- 不能再依赖 file_result.source_filename 反查店名。
ALTER TABLE biz_shop_data_crawl_daily_file
ADD COLUMN shop_name VARCHAR(255) NULL COMMENT '店铺显示名(冗余,供后台记录按店分组/筛选;采集归档时写入)'
AFTER shop_key;
CREATE INDEX idx_sdc_daily_shop_name ON biz_shop_data_crawl_daily_file (shop_name);
-- 回填 1:该档成员结果行的店铺名(同档店名唯一,取任意非空)
UPDATE biz_shop_data_crawl_daily_file df
JOIN (
SELECT m.daily_file_id AS did, MAX(TRIM(r.source_filename)) AS nm
FROM biz_shop_data_crawl_daily_member m
JOIN biz_file_result r ON r.id = m.result_id
WHERE r.source_filename IS NOT NULL AND TRIM(r.source_filename) <> ''
GROUP BY m.daily_file_id
) s ON s.did = df.id
SET df.shop_name = s.nm
WHERE df.shop_name IS NULL;
-- 回填 2:回退到该档 latest_result 指向的结果行店铺名
UPDATE biz_shop_data_crawl_daily_file df
JOIN biz_file_result r ON r.id = df.latest_result_id
SET df.shop_name = TRIM(r.source_filename)
WHERE df.shop_name IS NULL
AND r.source_filename IS NOT NULL AND TRIM(r.source_filename) <> '';
-- 回填 3:再回退到归属该档的采集明细行店铺名
UPDATE biz_shop_data_crawl_daily_file df
JOIN (
SELECT i.daily_file_id AS did, MAX(TRIM(i.shop_name)) AS nm
FROM biz_shop_data_crawl_item i
WHERE i.daily_file_id IS NOT NULL
AND i.shop_name IS NOT NULL AND TRIM(i.shop_name) <> ''
GROUP BY i.daily_file_id
) s ON s.did = df.id
SET df.shop_name = s.nm
WHERE df.shop_name IS NULL;