Record restored original images and independent lifecycle contract
This commit is contained in:
parent
21bb77c176
commit
4fb57e494d
@ -0,0 +1,36 @@
|
||||
{
|
||||
"commit": "21bb77c17644087fa6624fb276911e7a0cd894bd",
|
||||
"restored": 20,
|
||||
"managed_articles": 178,
|
||||
"verified_unique_image_urls": 33,
|
||||
"article_core_unchanged": true,
|
||||
"unrelated_local_selections_unchanged": true,
|
||||
"source_references_and_disabled_states_unchanged": true,
|
||||
"parallel_template_unchanged": true,
|
||||
"example_slug": "fn20261014",
|
||||
"example_original_image": "https://clashfreenode.com/images/illustrations/c7e661cdf0eb1a813b86efe8c1b062f9738fc6c945471cc990092706619fa34f.webp",
|
||||
"example_article_http": 200,
|
||||
"restored_original_assets": {
|
||||
"fn20260731": "13caface-3d1e-4365-b460-2ea47d893d03",
|
||||
"fn20260806": "d6a919eb-f66d-45de-81ee-26a3ca853270",
|
||||
"fn20260816": "e27f185f-1127-4e62-93b3-433cfc541953",
|
||||
"fn20260817": "d6cd3ea0-824b-4f5f-91e0-fc073c043f28",
|
||||
"fn20260818": "c4a8150b-b41a-4567-89af-91bbd3ec9705",
|
||||
"fn20260821": "13caface-3d1e-4365-b460-2ea47d893d03",
|
||||
"fn20260827": "d6a919eb-f66d-45de-81ee-26a3ca853270",
|
||||
"fn20260912": "e27f185f-1127-4e62-93b3-433cfc541953",
|
||||
"fn20260913": "d6cd3ea0-824b-4f5f-91e0-fc073c043f28",
|
||||
"fn20260914": "c4a8150b-b41a-4567-89af-91bbd3ec9705",
|
||||
"fn20260917": "13caface-3d1e-4365-b460-2ea47d893d03",
|
||||
"fn20260923": "d6a919eb-f66d-45de-81ee-26a3ca853270",
|
||||
"fn20261003": "e27f185f-1127-4e62-93b3-433cfc541953",
|
||||
"fn20261004": "d6cd3ea0-824b-4f5f-91e0-fc073c043f28",
|
||||
"fn20261005": "c4a8150b-b41a-4567-89af-91bbd3ec9705",
|
||||
"fn20261008": "13caface-3d1e-4365-b460-2ea47d893d03",
|
||||
"fn20261014": "d6a919eb-f66d-45de-81ee-26a3ca853270",
|
||||
"fn20261026": "e27f185f-1127-4e62-93b3-433cfc541953",
|
||||
"fn20261027": "d6cd3ea0-824b-4f5f-91e0-fc073c043f28",
|
||||
"fn20261028": "c4a8150b-b41a-4567-89af-91bbd3ec9705"
|
||||
},
|
||||
"verified_at": "2026-10-31T05:28:32Z"
|
||||
}
|
||||
17
docs/maintenance/INDEPENDENT_ILLUSTRATIONS_FIX_2026-10-31.md
Normal file
17
docs/maintenance/INDEPENDENT_ILLUSTRATIONS_FIX_2026-10-31.md
Normal file
@ -0,0 +1,17 @@
|
||||
# 独立图片副本保留修复 · 2026-10-31
|
||||
|
||||
用户明确要求修复:源端(Resource/ATOM管理)的删除或停用不得影响FNA已保存副本。此次恢复原图,不采用此前候选换图方案。
|
||||
|
||||
根因:5张源资产停用后,全量同步把20篇旧文章的本地selection置null,文件实际仍完整。首次交付实现已改为只缓存交付批次,停止触发全量旧文同步,但旧null映射留存。此次同步同时修正源端selection消失时误删本地关联的问题。
|
||||
|
||||
功能提交`21bb77c17644087fa6624fb276911e7a0cd894bd`,基于当前正式`26cb1ed7244de9209ec7494e8525a4d12f7609fa`隔离构造,仅LocalIllustrations和专项测试。源端各种不可用状态均保留已验证本地副本;本地文件也异常时报告pending但保留关联,不让同步破坏恢复信息。不改用户图片GET性能,不改Source、交付timer或广告,不重开test。
|
||||
|
||||
本地40项业务测试/305断言通过,覆盖停用、撤销发布/权限、源文件缺失/损坏、源selection消失、无网络读取和并发分配。恢复从备份的原Resource固定引用精确取回20个asset ID,只使用FNA既存且SHA一致的图片;不重新开启源资产、不替换成别的图片、不改Source引用/游标或文章正文。其余本地映射和并行生成模板须逐项保持。
|
||||
|
||||
执行恢复点:VPS-003 `/root/backups/cfn-independent-images-20261031/`;包含原本地清单、20项原关联恢复计划及最终验收JSON。此前备份`/root/backups/cfn-empty-images-20261031/`中的候选换图计划未执行。正式部署、HTTP与恢复覆盖结果以最终验收回执为准。
|
||||
|
||||
回滚代码可检回基线并清响应缓存;不要把null清单恢复覆盖到后来新增分配。如确需撤回本次数据修复,只能在锁内核对当前值仍为本次恢复值后逐项恢复目标20项旧值,保留其他文章、文件和交付数据。停用旧逻辑的全量同步,避免再次清空。
|
||||
|
||||
## 已完成
|
||||
|
||||
功能提交已推送`codex/independent-local-images-20261031`并部署正式站。2026-10-31 05:28:32 UTC完成20项原关联恢复,178篇资源文章均返回本站非空图片,33个实际引用的独立URL逐个HTTP200、Nginx静态交付及SHA验证通过;截图fn20261014详情HTTP200并包含原图。其余本地关联、Source全部引用/游标和资产停用状态、文章核心字段、并行模板摘要均不变。没有执行新文章发布、通知或IndexNow。已完成服务器侧验收,未做线上页面验收。详见[最终回执](INDEPENDENT_ILLUSTRATIONS_FIX_2026-10-31.json)。
|
||||
@ -26,7 +26,7 @@ ## 不满意、撤回与删除
|
||||
|
||||
要替换图片,先在Resource修改受影响文章的selection,再同步FNA并刷新页面缓存;新哈希URL自然换图。仅移出pool不改变旧selection,扩池也不洗牌旧文章。
|
||||
|
||||
Resource物理文件丢失时,已验证的FNA副本仍可继续展示;本地文件丢失时浏览器会404,运行同步可重新下载,访问请求不负责修复。主动撤回/取消授权等明确状态在同步后从页面映射停止展示。同步不自动删除任何共享副本;退役需先确认无文章/正文引用,再清理指定副本及相关CDN缓存。
|
||||
Resource物理文件丢失时,已验证的FNA副本仍可继续展示;本地文件丢失时浏览器会404,运行同步可重新下载,访问请求不负责修复。2026-10-31用户明确修正:源端删除、停用、撤销发布或授权均不影响FNA已有的独立副本与固定关联;源端selection消失时也保留本地关联。只有FNA本站明确撤图才停止展示。同步时若本地文件也缺失或损坏,仅报告pending并保留关联供恢复,不在用户请求时修复。同步不自动删除任何共享副本;退役需先确认无文章/正文引用,再清理指定副本及相关CDN缓存。
|
||||
|
||||
长期公开缓存意味着不能承诺撤销Resource后立即让所有历史URL失效。FNA副本是独立公开发布物,需单独处理引用、源站文件及缓存;不要把Resource的即时撤回语义套到FNA静态副本。
|
||||
|
||||
@ -38,7 +38,7 @@ ## 部署与恢复
|
||||
|
||||
## 2026-10-30 执行与验收
|
||||
|
||||
功能提交`ce27dbdd1eb206a9b7e7ac9b5a1c77778ed75e03`,基于最新正式`f315215f6f64cf1b200d67fc426a9071ff557a09`隔离构造并已推送`codex/static-illustrations-20261030`。保留已上线年度点赞及并行生成模板;没有复制本地旧Git历史或广告实现。
|
||||
功能提交`ce27dbdd1eb206a9b7e7ac9b5a1c77778ed75e03`(后续仅文档提交`c663829c6dcc4295c08e6665883380a0e9a37d0d`),基于最新正式`f315215f6f64cf1b200d67fc426a9071ff557a09`隔离构造并已推送`codex/static-illustrations-20261030`。保留已上线年度点赞及并行生成模板;没有复制本地旧Git历史或广告实现。
|
||||
|
||||
本地已启用,37张副本覆盖160篇;35项测试/277断言通过,涵盖下载校验、去重、失败原子性、并发分配、无网络读取,以及camelCase `sThumb`在模型/数组/JSON中的一致性。对外返回本站绝对URL,清单只存相对路径;侧栏缓存随同步清理。
|
||||
|
||||
@ -46,6 +46,14 @@ ## 2026-10-30 执行与验收
|
||||
|
||||
VPS-003私有恢复点`/root/backups/cfn-static-illustrations-20261030/`保存原环境、Nginx、部署前身份摘要和逐项验收JSON。运行位置:正式`/www/wwwroot/clashfreenode-new.com`,test`/www/wwwroot/fna-v3-test`;两者独立目录和清单,静态location分别引入`/etc/nginx/snippets/fna-illustrations-production.conf`和`fna-illustrations-staging.conf`。新增目录由nginx写入,公开文件0644/目录0755,私有清单0600/目录0700。Source代码及其37张原文件保持原位;未新增定时同步或清理任务。
|
||||
|
||||
2026-10-30用户随后要求取消test,已下线;前述test验证为退役前历史结果,今后不作为在线入口。详见[test下线记录](TEST_RETIREMENT_2026-10-30.md)。
|
||||
|
||||
## 自动交付接收(2026-10-30)
|
||||
|
||||
新增按待交付批次触发的服务器定时同步,见[交付接收](ILLUSTRATION_DELIVERY.md)。此前“未新增定时同步”是静态副本首次上线时的记录。
|
||||
|
||||
## 2026-10-31 旧文章空白配图排查
|
||||
|
||||
服务器只读核对:当前FNA HEAD 26cb1ed7244de9209ec7494e8525a4d12f7609fa,47份静态资产文件均存在且SHA一致;178篇资源文章中20篇免费节点旧文章sThumb输出为null,包括fn20261014。Resource实时快照对应20项均为asset_disabled,可用猫图21张。根因为交付首次全量同步把已有5张停用资产所关联的20项本地映射置空;沿[交付发布记录](/Users/hellcat/Documents/GemCodes/resource.loc/v2/docs/ILLUSTRATION_DELIVERY_RELEASE.md)核实。不是本次重新停用或文件丢失。
|
||||
|
||||
已在VPS-003 `/root/backups/cfn-empty-images-20261031/`保存Resource一致性备份、引用/本地清单快照及精确20项候选替换计划。候选只使用当前可用猫图,避开相邻文章同图,计划仅更新相应selection与本地清单,不重启停用资产、不改正文/其他selection或游标。最初的换图方案未执行。用户随后明确要求保留原本地图片并授权修复,因此改为恢复原关联,源端5张资产仍保持停用,不执行候选换图计划。后续执行结果见[独立副本修复记录](INDEPENDENT_ILLUSTRATIONS_FIX_2026-10-31.md)。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user