Files
Gnuboard7/modules/_bundled/sirsoft-ecommerce/tests/scenarios/product-content-thumbnail-fallback.yaml
T
HeuJung 1ba67ca7cf feat(content): 본문 이미지 목록 썸네일·og:image 폴백 전 티어 구현
공개 이슈 https://github.com/gnuboard/g7/issues/22 — 본문에 삽입한 이미지가
카드/갤러리 목록 썸네일과 공유 미리보기(og:image)에 반영되지 않던 공백을
코어+3모듈+2템플릿에서 해소.

- 코어 7.0.9: HtmlImageExtractor(내부 이미지 한정, origin 정규화 SSoT 재사용)
 + seo.og_image_default 사이트 기본 공유 이미지 설정 + SeoMetaResolver 폴백 체인
- board 1.1.0 / ecommerce 1.2.0 / page 1.1.0: content_thumbnail_url 캐시 컬럼,
 saving 추출(html 모드 한정·첨부 우선·비밀글 게이트 유지),
 filter_content_thumbnail 훅, 기존 데이터 백필 업그레이드 스텝
- ecommerce 카테고리 og:image 생산자 신설, page og:description 死키 정정
- sirsoft-basic 1.1.2 og 바인딩 정정, admin_basic 1.0.7 SEO 탭 업로더(+ja 팩 2종)
- 검수 중 발견한 text 모드 오캐시 결함은 실패 테스트 선행 후 수정
2026-08-22 22:21:54 +09:00

54 lines
3.0 KiB
YAML

feature: 상품 설명 첫 이미지 목록/공유 썸네일 폴백
description: |
공개 이슈 #22 동종 — 상품 이미지 없이 상세설명(에디터)에만 이미지를 넣은 상품이
목록·검색·og:image 6개 표면에서 이미지 없이 나가던 문제. 저장 시 설명(다국어 JSON)
의 첫 내부 이미지 URL 을 ecommerce_products.content_thumbnail_url 에 캐시하고,
Product::getThumbnailUrl() 이 상품 이미지 부재 시 이를 폴백으로 사용한다.
내부 URL 판정은 TrustedScriptHosts::normalizeForOriginCheck 공유 정규화를 따른다.
axes:
image_source: [product_image_only, content_internal_only, both, content_external_only, none]
locale_content: [default_locale, other_locale_only]
exclusions:
- { image_source: product_image_only, locale_content: other_locale_only, reason: "로케일 축은 설명 내용에만 작용 — 상품 이미지 우선순위와 직교라 default_locale 대표 조합으로 검증" }
- { image_source: both, locale_content: other_locale_only, reason: "동일 — 로케일 축은 추출 입력에만 작용, 우선순위 판정과 직교" }
- { image_source: content_external_only, locale_content: other_locale_only, reason: "동일 — 외부 제외 판정은 로케일 무관 (전 로케일 순회 후 null)" }
- { image_source: none, locale_content: other_locale_only, reason: "이미지 없음은 로케일 구분이 성립하지 않는다 (전 로케일 빈 결과)" }
sub_flows:
- id: backfill
description: 1.2.0 업그레이드 스텝이 기존 상품을 chunkById 백필 (다국어 JSON 파싱 동결 사본)
effects:
- backfill_fills_legacy_products
- backfill_idempotent_second_run
- text_mode_description_never_caches
- id: recompute
description: description/description_mode 변경 시에만 saving 이벤트가 재계산
effects:
- recompute_on_description_change
- no_recompute_on_unrelated_update
- filter_hook_can_override_or_block
- id: category_og_producer
description: 死표현식이던 category.data.thumbnail_url 의 생산자 신설 (P3-B — 로드된 images 첫 건)
effects:
- category_detail_emits_thumbnail_url
- category_og_image_emitted_from_thumbnail_url
- category_og_image_omitted_without_thumbnail
effects:
- product_image_takes_precedence
- content_image_fills_product_thumbnail
- other_locale_image_used_when_default_has_none
- external_only_description_yields_null
- hidden_product_stays_hidden
- detail_og_and_search_share_same_fallback
test_files:
- modules/_bundled/sirsoft-ecommerce/tests/Unit/Models/ProductContentThumbnailTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Feature/ProductListContentThumbnailTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Feature/Upgrade/ProductContentThumbnailBackfillTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Feature/PublicCategoryThumbnailTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Unit/EcommerceModuleSeoTest.php