프로젝트

일반

사용자정보

Actions

기능 #800

완료됨

#739 케이크 진열 판정 정답키·제품마스터 DDB 스토어 + 월간 업로드 자동 갱신

기능 #800: #739 케이크 진열 판정 정답키·제품마스터 DDB 스토어 + 월간 업로드 자동 갱신

시진 노이(가) 4일 전에 추가함. 하루 전에 수정됨.

상태:
완료
우선순위:
보통
담당자:
시작일:
2026/07/01
완료일:
2026/07/02
진척도:

100%

추정시간:

설명

#739 PoC(최종 채택 프로세스)의 데이터 저장·갱신 인프라.

[목표]

  • 진열 판정의 정답(정답키)과 제품 마스터를 DDB에 저장하고, 매월 RAG 관리 업로드 시 자동 갱신한다.
  • 현재 PoC는 정답키(2구)·카테고리 사전을 코드에 하드코딩 → DDB 로드로 전환.

[DDB 스키마(안)]

  • 제품 마스터: PK=제품명(unique), 속성=카테고리(7그룹)·사진URL·타입·상태·월. 누적 upsert.
  • 정답키(쇼케이스 진열안): PK=config(구수/취급점/타입), 속성=cells[door,tier,expectedUse,preferredCategories]·월. config 단위 교체.

[업로드 연동(핵심)]

  • 기존 매월 RAG 관리의 엑셀 + 쇼케이스 업로드 시점에 DDB 갱신 훅 추가.
  • 엑셀(제품 라인업): 누적 upsert. 제품명이 unique 키. 단종/신규는 상태로 반영(엑셀은 계속 누적).
  • 쇼케이스(진열안 PDF): 해당 config 정답키 삭제 후 재등록(혼란 방지).
  • 엑셀=보조 사전, 쇼케이스 PDF가 정답의 핵심 소스.

[판정 연동]

  • ai_cake_display_review가 config로 DDB 정답키를 로드해 비교(코드 하드코딩 제거).

[연관] 구조화(쇼케이스→정답키, 엑셀→제품마스터)는 별도 후속 일감.

시진 노이(가) 3일 전에 변경 Actions #1

  • 완료일을(를) 2026/07/02(으)로 지정되었습니다.
  • 상태을(를) 신규에서 완료(으)로 변경되었습니다.
  • 진척도을(를) 0에서 100(으)로 변경되었습니다.

시진 노이(가) 3일 전에 변경 Actions #2

구현 완료 · 메인 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/8f0aebe7279805429316af78e6845bbee3ce339c?region=ap-northeast-2 (8f0aebe, main)

[범위] 제품 마스터 DDB 적재 + 관리자(제품 전처리 상태) 화면. 정답키(쇼케이스 PDF) 이관·판정(ai_cake_display_review) 하드코딩 제거는 후속(#801 등).
[구현] br-promotion-01 라인업 엑셀 업로드 시 CAKE 시트 제품명+삽입사진 추출→기존 ProductCatalogStateTable에 케이크 마스터 누적(신규 제품 insert/기존 이미지 URL만 누적), 신규 테이블 없이 재사용. '제품 전처리 상태' 메뉴에 '케이크 품목 전처리 - br-promotion-01' row + 클릭 시 제품명·이미지 상세. RAG 우선순위로 케이크 적재 실패는 비치명(전처리 상태 오류로만 표시).
[함정 수정] openpyxl은 Pillow 미설치 시 삽입 이미지를 전부 드롭 → 실업로드에서 '성공 0건' 발생. admin-backend requirements.txt에 Pillow 추가로 해결.
[검증] admin-backend pytest 187 passed, web-admin lint 0 errors·build OK·vitest 570 passed, 실제 라인업 엑셀로 34종 전부 추출 확인.
[배포 필요] (1) AdminBackendStack 재배포(Pillow 포함 이미지 재빌드 필수) (2) web-admin 재빌드+호스팅. 미배포 시 프로덕션에서 여전히 0건.

시진 노이(가) 2일 전에 변경 Actions #3

추가 작업(2-스토어 재설계) 릴리즈 · 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/e060c39caea90ae5122e656eeb8cc46ffd7f2510?region=ap-northeast-2 (e060c39, main)

[변경 배경] 케이크 마스터 누적 저장이 과거(단종) 케이크로 향후 쇼케이스 판정 오탐을 키우는 문제 → 최신만 참조 가능한 2-스토어로 전환.
[저장] CAKE_PRODUCT_MASTER=항상 최신 라인업만(업로드마다 교체) / OLD_CAKE_PRODUCT_MASTER=이전 제품 아카이브(누적, 같은 sk 덮어쓰기). 업로드 시 현재 CAKE→OLD 이동→새 라인업 put→stale 삭제. 이미지 누적 제거(시점 스냅샷).
[화면] get_cake_item_preprocess_run을 current/old 2-스토어 응답으로, 케이크 상세를 탭('최신 라인업'/'전체 제품')으로. 쇼케이스 마스터(#801)는 CAKE만 읽으면 최신이라 코드 변경 불필요.
[롤백] 중간에 만든 월별 이력 관리(CAKE_LINEUP_META·lineupMonths·월드롭다운)는 제거.
[동반] 동일 파일(AdminMonitoringPage)의 #801 쇼케이스 표준 구조화 상세 격자를 구별 한 줄·단 내림차순·5열로 개선(같은 파일이라 함께 커밋).
[검증] admin-backend pytest 193, web-admin lint 0·build·vitest 579 통과.
[배포 필요] AdminBackendStack + web-admin 재빌드+호스팅. 재배포 전 기존 CAKE_PRODUCT_MASTER/CAKE_ITEM_PREPROCESS_RUN 데이터 정리 권장.

시진 노이(가) 2일 전에 변경 Actions #4

케이크 카테고리(다중) 기능 릴리즈 · 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/8ed0af104074fbb3473ce4682e6d420a64018a78?region=ap-northeast-2 (8ed0af1, main)

[배경] 케이크 마스터 category가 비어 있어(엑셀에 카테고리 없음) 판정에 못 쓰던 문제 → 관리화면 수동 부여 + OLD 사전 자동 승계로 채우도록.
[모델] 제품 레코드 단일 category → 다중 categories(배열). 8종(와츄원/더듬뿍/진정한/일반/캐릭터/레슬리/쁘띠/미분류), 중복제거·검증.
[저장] 신규 command save_cake_product_categories → CAKE_PRODUCT_MASTER + 동일 sk OLD_CAKE_PRODUCT_MASTER 동시 갱신.
[승계] 라인업 업로드가 아카이브 직후 OLD를 sk→categories 사전으로 삼아 새 제품에 자동 승계(없으면 빈 배열=신규→수동).
[화면] 케이크 상세 최신 라인업 탭: 카테고리 뱃지=이미지 오른쪽 상단 오버레이(x삭제, 카테고리별 색), 추가 컨트롤(+카테고리)=제품명 오른쪽 끝, 선택 즉시 자동저장(낙관적·원복). 전체 제품 탭 읽기전용.
[검증] admin-backend pytest 203, web-admin lint 0·build·vitest 585.
[배포 필요] AdminBackendStack + web-admin 재빌드+호스팅. (전제: CAKE/OLD category는 담당자가 초기 수동 backfill.)
[후속] 채워진 category를 쇼케이스 배치가 productDictionary로 넘기도록 배선하면 판정 하드코딩 제거 완성.

시진 노이(가) 하루 전에 변경 Actions #5

라인업 업로드 '동일 제품명 보존' 릴리즈 · 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/08f535aed749e144efc7f6ca1ff36e5f3d116bdb?region=ap-northeast-2 (08f535a, main)

[배경] 제품 이미지 연결이 가끔 실패해 수동 보정하는데, 기존은 매 업로드마다 현재 CAKE 전부를 새 추출로 덮어써 보정이 유실됨.
[변경] upsert_cake_master_from_workbook: overlap(현재 CAKE ∩ 새 라인업)=그대로 보존(아카이브·덮어쓰기 안 함), disappearing(현재−새)=OLD로 이동+삭제, brand_new(새−현재)=put(카테고리 OLD 승계). summary preservedCount 추가.
[유의] overlap 제품은 이후 업로드로 이미지 자동 갱신 안 됨(보존 우선). 강제 재추출은 해당 제품 삭제 후 재업로드.
[검증] admin-backend pytest 216(수동보정 보존 회귀방지 테스트 포함). 백엔드 1파일, 프론트 무변경.
[배포 필요] AdminBackendStack만.

시진 노이(가) 하루 전에 변경 Actions #6

케이크 '신제품' 그룹 신설 릴리즈 · 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/br_faq_chat/commit/6a255981699cd647ec57ea9362ac449184d37e9a?region=ap-northeast-2 (6a25598, main)

[배경] 쇼케이스 가이드에 신제품 전용 존(NEW CAKE)이 별도로 있어, 신규 케이크를 '신제품' 그룹으로 관리.
[상수] 3레이어 sync — admin/web CAKE_CATEGORY_OPTIONS 9종(+신제품, 미분류 유지) / ai-backend CAKE_CATEGORIES·CAKE_GROUPS 8종(+신제품, 미분류 제외).
[자동태깅] 업로드 시 brand_new(OLD 승계 없음)→categories=['신제품']. overlap 보존·승계 무변경.
[판정연동] ai-backend normalizeProductDictionary가 ['신제품'] 통과→group='신제품'(쇼케이스 배치가 넘기는 DDB 사전). 구조화 승계·수동 시드는 후속.
[화면] 케이크 품목 전처리 상세: 신제품 옵션·핑크 뱃지 자동.
[검증] admin-backend pytest 218 / ai-backend 350 / web-admin lint0·build·vitest 589.
[배포 필요] AdminBackendStack + web-admin + AiBackendStack (상수 3레이어 sync).
[테스트 주의] 신제품 태깅 테스트하려면 CAKE뿐 아니라 OLD_CAKE_PRODUCT_MASTER 같은 sk도 삭제해야 함(OLD 승계가 이전 카테고리를 물려줌).

Actions

내보내기 PDF Atom