Actions
검토 #802
완료됨#739 제품 라인업 엑셀 → 제품마스터(이름·카테고리·사진) 추출 + 카테고리 사전 관리
검토 #802:
#739 제품 라인업 엑셀 → 제품마스터(이름·카테고리·사진) 추출 + 카테고리 사전 관리
시작일:
2026/07/01
완료일:
2026/07/04
진척도:
100%
추정시간:
설명
#739 PoC 후속. 제품 라인업 엑셀(CAKE 시트)에서 제품 마스터 추출. 엑셀은 보조 사전 역할.
- CAKE 시트는 전치 그리드(1열=1제품). 제품명 + 열앵커 PNG 사진 자동 매핑(drawing anchor→열).
- 사진은 S3 저장 후 imageRef 부여.
- 카테고리(7그룹)는 엑셀에 없음 → 규칙 부트스트랩 + 수동 보정 사전으로 부여(PDF p2 그룹표 기준).
- 함정: 마이멜로디/포차코 (…더 듬뿍…)은 캐릭터(더듬뿍 아님) → 캐릭터 우선 판정.
- 제품명 unique 키로 누적 upsert(단종/신규 반영). needsReview 플래그로 수동 확인 큐.
- 현재 PoC는 34종을 코드(cakeProductMaster.mjs)에 시드 → 추출/DDB로 전환(#800 연동).
시진 노이(가) 3일 전에 변경
[#801 현재 버전 프로세스 공유 — #802 착수 참고]
■ 큰 그림
쇼케이스 진열 정답키 자동 구조화(#801)를 구현·배포함. #802는 이 파이프라인이 쓰는 "케이크 마스터"의 카테고리(7그룹)를 채우는 일이라, 아래에 #801 현재 버전 프로세스와 #802 연결점을 정리함.
■ #801 파이프라인 (현재 버전)
- 전략: 케이크 쇼케이스 머천다이징 가이드(월간 PDF/PPTX)를 전용 인덱스 br-merchandising-01로 RAG 등록(V2). (초기 br-promotion-01 '머천다이징' 카테고리 + merchandising 태그 방식은 지속 오류로 폐기)
- 업로드: RAG 관리 V2 → br-merchandising-01. 단일 카테고리 '머천다이징', 1 page = 1 RAG row, 저장 시 인덱스 전체 교체. keywords="머천다이징/{페이지주제}/{YY년 M월}", data[0].image_url = 페이지 원본 이미지.
- 새벽 배치 product.restructure_showcase_standard (product-homepage-crawler-batch-lambda, EventBridge KST 06시):
- br-merchandising-01 전체 조회(list_all_extreme_data) → document id 집합 sha256 시그니처로 변경 감지(직전과 같으면 스킵, force로 강제 재실행)
- 페이지별 비전 판독을 ThreadPoolExecutor 동시성 5로 병렬(순차 시 Lambda 900초 초과 → 실측 350초)
- 비전: ai-backend 신규 command ai_showcase_cell_extraction (페이지 이미지 + config → 셀별 {door, tier, group(7그룹), contentType(cake/dessert/prepack/empty), exampleProducts, confidence})
- 저장: ProductCatalogStateTable pk=SHOWCASE_STANDARD, sk=정규화 페이지주제(config), cells[], 커서 sk=CURSOR(시그니처)
- 안전 저장순서: delete-first 제거. (가드①)소스 0건이면 중단, (가드②)전량 실패면 중단 → 기존 정답키 보존. 성공분 제자리 upsert(빈 구간 없음), 완전 성공일 때만 소스에서 사라진 config만 삭제 + 커서 전진(부분 실패는 성공분만 갱신·다음 실행 재시도)
- DynamoDB Float 미지원 → confidence 등 실수는 Decimal 변환. 같은 sk로 판독된 중복 페이지는 put 전 병합(summary.duplicateConfigs로 노출)
- 확인 UI: web-admin '제품 전처리 상태' 화면에 '케이크 쇼케이스 표준 머천다이징 구조화' 3번째 row + 상세(config별 구수/취급점/타입 → 셀 격자). 조회 command get_showcase_standard_run.
■ #802 연결점 (핵심)
- 케이크 마스터 = ProductCatalogStateTable pk=CAKE_PRODUCT_MASTER, sk=정규화 제품명(공백·특수문자 제거 + 소문자, admin-backend cake_master.normalize_product_name). 필드: productName, imageUrls[](CloudFront 공개 URL, 대표=[0]), category(★현재 빈값).
- #801 배치는 지금 셀의 7그룹을 ai-backend cakeProductMaster.mjs 하드코딩 사전(PRODUCT_MASTER 34종, resolveCategoryByName/bootstrapCategory)으로 해석 중. 이유: 마스터 DDB의 category가 비어 있어서.
- ★#802가 마스터 category(7그룹)를 채우면 → #801 배치의 그룹 소스를 JS 사전 → DDB category 참조로 전환 가능. 배치의 _build_cake_master_index가 이미 마스터를 읽고 있으므로 category만 채워지면 연동됨.
- #802 함정(기재됨): 마이멜로디/포차코(…더듬뿍…)은 캐릭터(더듬뿍 아님) → 캐릭터 우선 판정. needsReview 플래그로 수동 확인 큐.
- PoC 34종은 cakeProductMaster.mjs 코드 시드 상태 → 엑셀 추출/DDB로 전환 필요(#800 연동).
■ #801 커밋 (로컬 main 14건, 아직 origin CodeCommit 미push)
a2fb9c4 개명 / 013e3aa·14f6fa8·073f90f·b2035b8 태그(전략전환으로 폐기) / be498b5 라우팅판정 / e863d48 페이지30 / e3397fc 원복·카테고리제거 / 7d3658b 인덱스배선 / a7ea5f8 비전command / 3c62218 배치 / c774a60 UI
■ #801 남은 후속(별도 진행 예정)
- sk를 제목 텍스트 → config(구수×취급점×타입) 기준으로 개선(실행 후 duplicateConfigs 확인 후 판단)
- 정답키 수동 보정 UI(안 들어가거나 잘못 들어간 케이크 수동 수정)
- #803 매장 사진 점검(config 2단계 선택 → 정답키 로드 → ai_showcase_cell_extraction 재사용 → TEXT 대 TEXT 비교·피드백)
시진 노이(가) 2일 전에 변경
main 반영 커밋(#802):
- 이전 세대(OLD) 열람 UI: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/740712917c884c0b3e63eb6681180dbe2cabe2b7?region=ap-northeast-2
- slotId 안정 전환(취급점 비전판정·세대 아카이브·관리자 표시): https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/b9397922e410ff7b8ab30a06d4ef8d55ab56a366?region=ap-northeast-2
배포 필요 스택: admin-backend-lambda, web-admin (batch·ai-backend는 배포 완료).
Actions