Files
Gnuboard7/modules/_bundled/sirsoft-ecommerce/tests/scenarios/mp11-review-image-policy.yaml
T
HeuJung b1b5bfa417 feat(core,ecommerce,ckeditor5): 이미지 업로드 필터 훅 대칭화
공개 제보(리뷰 이미지에 filter_upload_file 부재)를 계기로 전 이미지 업로드
경로의 훅 트라이어드를 대칭화한다. 확장이 업로드 파일을 저장 전에 가로채
압축/변환할 수 있도록 하기 위함.

- 리뷰 이미지·CKEditor5 이미지 업로드에 filter_upload_file 필터 훅 추가
- 레이아웃 편집기 첨부 업로드에 훅 트라이어드(before/filter/after) 신설
- ckeditor5 1.0.2 버전 동기(manifest/package/composer/lock), 각 CHANGELOG 기재,
 README 기여자 등재, hooks.md 업로드 트라이어드 및 필터 반환 계약 문서화
- 시나리오 매니페스트(upload-filter-hook-parity) + 3계층 훅 발화 테스트 추가
2026-08-12 15:23:50 +09:00

57 lines
3.3 KiB
YAML

# audit:allow test-scenario-coverage reason: |
# cross product 자동 전개는 audit 실행 환경에 js-yaml 부재로 nested axes 를 읽지 못하는
# 한계로 검출되지 않는다(동일 한계로 다른 번들 시나리오도 audit:allow). 본 변경은
# ProductReviewImageService/ProductReviewService 의 review.* → review_settings.* 키 경로 교정,
# 업로드 용량 동적화, 공개 설정 API, attributes 라벨을 PHPUnit Unit/Feature + Vitest 레이아웃
# 렌더링이 커버하며 green.
feature: 리뷰 이미지 정책(최대 개수/용량) 실반영 (A6)
description: |
Service 가 존재하지 않는 review.* 대신 review_settings.* 설정 키를 읽도록 교정.
업로드 최대 용량(max_image_size_mb)을 설정 기반 동적 검증. 공개 설정 API(GET settings/review)
로 리뷰 정책을 프론트에 전달, 리뷰 작성 모달이 max_images=0 이면 첨부영역 숨김, 그 외엔
FileUploader maxFiles/maxSize 동적 반영. validation attributes 라벨로 키 원문 노출 차단.
axes:
max_images:
- zero # 0 → 첫 업로드부터 차단 + 프론트 첨부영역 숨김
- three
- five # 기본
max_image_size_mb:
- one
- five
- ten # 기본
entry:
- service_read # Service 가 review_settings.* 읽음
- upload_validation # UploadReviewImageRequest max 동적
- public_api # GET settings/review 200
- front_render # 리뷰 모달 조건부/props
- settings_save # 관리자 설정 저장 규칙 경계 (#493 E10)
- settings_screen # 설정 화면 JSON 의 min/max/step 계약 (#493 E10)
locale:
- ko
- en
effects:
- service_reads_review_settings_key # review.* → review_settings.* 교정
- upload_max_size_dynamic # max:(mb*1024) + :max 메시지 치환
- max_images_zero_blocks_first_upload # 0 → image_upload_limit_exceeded
- public_api_returns_review_settings # GET settings/review payload
- front_hides_attach_when_zero # max_images=0 → 첨부영역 미렌더
- front_props_reflect_settings # maxFiles/maxSize 동적 바인딩
- attribute_label_not_raw_key # 음수 입력 시 한글/영문 라벨
- review_settings_save_logs_activity # 리뷰설정 저장 활동로그
- review_image_filter_upload_file_hook_applied # 업로드 경로 filter_upload_file 발화 (공개 #96, upload-filter-hook-parity.yaml)
# 설정 화면 JSON ↔ 저장 규칙 경계 정합 (#493 E10)
- non_integer_image_size_rejected_422 # step:0.5 가 오류 — 규칙은 integer
- settings_screen_bounds_match_rules # 화면 min/max/step 이 서버 경계와 동일
- settings_screen_bounds_bind_to_meta_limits # 리터럴이 아닌 _meta.limits 바인딩
test_files:
- modules/_bundled/sirsoft-ecommerce/tests/Unit/Services/ProductReviewImageServiceTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Unit/Services/ProductReviewServiceTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Feature/Http/Controllers/Public/ReviewSettingsApiTest.php
- modules/_bundled/sirsoft-ecommerce/tests/Feature/Settings/SettingsContractBoundaryTest.php
- modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/ecommerce-settings-range-contract.test.ts
- templates/_bundled/sirsoft-basic/__tests__/layouts/review-modal-image-policy.test.tsx