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:
@@ -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;
|
||||
Reference in New Issue
Block a user