Files
Gnuboard7/modules/_bundled/sirsoft-board/tests/scenarios/board-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

49 lines
2.5 KiB
YAML

feature: 본문 첫 이미지 목록 썸네일 폴백
description: |
공개 이슈 #22 — 에디터로 본문에 삽입한 이미지가 카드형·갤러리형 목록 썸네일에
반영되지 않던 문제. 저장 시 본문 첫 내부 이미지 URL 을 board_posts.content_thumbnail_url
에 캐시하고, 이미지 첨부가 없을 때 PostResource thumbnail 이 이를 폴백으로 사용한다.
내부 URL 판정은 TrustedScriptHosts::normalizeForOriginCheck 공유 정규화를 따른다.
axes:
image_source: [attachment_only, content_internal_only, both, content_external_only, none]
secrecy: [normal, secret_unauthorized]
exclusions:
- { image_source: attachment_only, secrecy: secret_unauthorized, reason: "비밀글 게이트는 image_source 와 무관하게 최상단에서 null — 대표 1조합(content_internal_only)으로 게이트를 검증하고 첨부 축은 기존 PostResourceThumbnailUrlTest 비밀글 케이스가 커버" }
- { image_source: both, secrecy: secret_unauthorized, reason: "동일 — 게이트 선행으로 소스 축 무의미, 대표 조합으로 검증" }
- { image_source: content_external_only, secrecy: secret_unauthorized, reason: "동일" }
- { image_source: none, secrecy: secret_unauthorized, reason: "동일" }
sub_flows:
- id: backfill
description: 1.1.0 업그레이드 스텝이 기존 게시물을 chunkById 백필
effects:
- backfill_fills_legacy_rows
- backfill_idempotent_second_run
- backfill_keeps_external_only_null
- id: recompute
description: content/content_mode 변경 시에만 saving 이벤트가 재계산
effects:
- recompute_on_content_change
- no_recompute_on_unrelated_update
- filter_hook_can_override_or_block
- text_mode_content_never_caches
- mode_switch_recomputes_cache
effects:
- attachment_takes_precedence_over_content_image
- content_internal_image_fills_list_thumbnail
- external_only_content_yields_null
- secret_post_thumbnail_stays_null
- detail_and_og_share_same_fallback
test_files:
- tests/Unit/Support/HtmlImageExtractorTest.php
- modules/_bundled/sirsoft-board/tests/Unit/Resources/PostResourceThumbnailUrlTest.php
- modules/_bundled/sirsoft-board/tests/Unit/Models/PostContentThumbnailTest.php
- modules/_bundled/sirsoft-board/tests/Feature/User/PostListContentThumbnailTest.php
- modules/_bundled/sirsoft-board/tests/Feature/Upgrade/ContentThumbnailBackfillTest.php
- modules/_bundled/sirsoft-board/tests/Playwright/specs/user/board-content-thumbnail.spec.ts