Repository navigation
Description
범위
알코올 공통 속성 사전·그룹과 술별 연결 값을 관리하는 Admin API를 확장한다. 속성 목록·연결·값 수정, 다중 조건 검색·교집합 후보 집계, 문자열 선택값·정규식 검증을 포함한다. 후속 범위로 속성별 복수 값, Admin 시나리오 정의·평가와 Product 시나리오 조회·무상태 평가 API를 포함한다.
관련 PR
-
feat: 속성이 붙은 위스키 목록 조회 어드민 API를 추가한다 bottle-note-api-server#801 — feat: 속성이 붙은 위스키 목록 조회 어드민 API를 추가한다
-
feat(alcohol): 공통 속성 사전과 매핑 API 추가 bottle-note-api-server#802 — feat(alcohol): 공통 속성 사전과 매핑 API 추가
-
feat: 속성 연결별 값 관리와 검색 처리 변경 bottle-note-api-server#803 — feat: 속성 연결별 값 관리와 검색 처리 변경
-
feat: 위스키 속성 다중 조건 검색 API 추가 bottle-note-api-server#804 — feat: 위스키 속성 다중 조건 검색 API 추가
-
feat: 속성 그룹 관리와 다중 그룹 검색 추가 bottle-note-api-server#805 — feat: 속성 그룹 관리와 다중 그룹 검색 추가
-
feat: 속성 검색 결과 교집합 후보 집계 API 추가 bottle-note-api-server#806 — feat: 속성 검색 결과 교집합 후보 집계 API 추가
-
feat: 주류 문자열 속성 선택값과 정규식 검증 추가 bottle-note-api-server#807 — feat: 주류 문자열 속성 선택값과 정규식 검증 추가
-
feat: 속성별 복수 값 연결 지원 bottle-note-api-server#808 — 속성별 복수 값 연결
-
feat: 어드민 속성 그룹 추천 후보 조회 API 추가 bottle-note-api-server#809 — 속성 그룹 추천 후보 조회
-
feat: 어드민 시나리오 정의 관리 API 구현 bottle-note-api-server#810 — Admin 시나리오 정의 관리
-
refactor: 어드민 시나리오와 후보 검색 흐름 정리 bottle-note-api-server#811 — 시나리오·후보 검색 구조 정리
-
feat: 사용자 시나리오 조회와 무상태 평가 API bottle-note-api-server#812 — Product 시나리오 조회·무상태 평가
선행 구현
- [BE] 위스키 속성 원장 도메인 및 Admin 관리 API 추가 #525 — 기존 속성 원장·Admin API. 기존 종결 상태는 유지한다.
- feat: 위스키 속성과 맛 그룹 도메인을 추가한다 bottle-note-api-server#797
- feat: 맛 그룹·위스키 속성·태그 경량 조회 어드민 API를 추가한다 bottle-note-api-server#798
현재 상태·경계
2026.10.24 확인 기준 개발 배포 완료. 관련 PR #801~#812는 모두 병합됐다. 이슈는 운영 배포와 후속 검증을 구분하기 위해 Open으로 유지한다. Admin 화면은 #533, Product 화면은 #527에서 별도 관리한다.
Product 공개 계약
GET /api/v1/scenarios/{scenarioId}: 활성 게시본의 첫 질문·선택지 조회. 시나리오 ID를 받아 N개 시나리오를 같은 API로 처리한다.POST /api/v1/scenarios/{scenarioId}/evaluate: 전체 답변과 버전을 받아 다음 질문·숫자 구간 선택지·중간 종료·추천 결과·keyset 추가 조회를 처리한다.- 매 요청 현재 DB로 재평가한다. 관리자 데이터가 바뀌면 복귀 시 최신 후보를 반환한다.
- 실행·질문 답변·추천 결과 스냅샷과 Redis/JVM 캐시는 저장하지 않는다. 브라우저 입력 보관은 FE Local Storage, 참여 기록은 기존 캠페인 API가 담당한다.
개발 배포 근거
- PR: feat: 사용자 시나리오 조회와 무상태 평가 API bottle-note-api-server#812
- 병합 소스:
e0c6f377ba58f7b79c84269520d5c7c4c642de6a - 개발 배포 Actions: https://github.com/bottle-note/bottle-note-api-server/actions/runs/40065400879 — Product/Admin 빌드·이미지·handoff 성공
- 실행 환경 대조: 개발 Product·Admin Deployment의 이미지 digest가 해당 실행 로그와 일치하고 각각 Ready 1개, observedGeneration 일치 확인
- 개발 DB: 그룹 7 · 시나리오 1 · 버전 1이 PUBLISHED이며 activeVersionId=1. 사용자 요청으로 기존 게시 API를 호출해 활성화했다.
실제 연동·DB 검증
- 프리뷰에서 시나리오 조회, 답변 평가, 중간 종료와 결과 추가 조회가 모두 200 응답. 후보 50→17병, 전체 결과 20개씩 조회와 페이지 간 중복 0개를 확인했다.
- 최근 실사용 구간(2026.10.24 20:26 KST)의 서버 로그: 조회 2회·평가 11회·캠페인 4회가 모두 200. 관찰한 최근 45분 로그에서 카카오 Product 로그인 1회도 200이었다.
- 캠페인
bartender-note-type-d에서 같은 방문자의 VIEW→START→FINISH→RESULT 저장과 로그인 회원 연결을 확인했다. 질문·답변·추천 결과를 저장하는 컬럼이나 시나리오 실행/결과 테이블은 확인되지 않았다. - 검증 시점 누적 완료 방문자 8개는 쿠키 기준이며 실제 인원 수가 아니다. 결과 조회는 방문자 4개·계정 3개(실사용 1개, 기존 QA 계정 2개)였다. 로그인 없이 완료한 방문자 4개와 QA 기록이 포함돼 있으므로 운영 지표로 해석하지 않는다.
남은 범위
- 운영 배포·운영 데이터 검증·실규모 부하 검증은 미수행이다.
- 관리자 게시 버튼 등 화면 연결은 Admin FE #533의 범위로 구분한다.
Activity
Whale0928 commentedon Oct 22, 2026
2026.10.22 작업 현황 및 다음 세션 인계
반영 완료
9336f826e87b259fca8171fd81905e1c49f21513. CI와 개발 배포 워크플로우가 성공했습니다. 이후 로컬 어드민에서 개발 API의 실제 응답까지 확인했습니다.확정한 API 계약과 구현 경계
POST /admin/api/v1/attribute/groups/{groupId}/candidates만 제공합니다. 프로덕트 엔드포인트는 제거했고, 커서 페이지네이션과 커서용 application.yml 설정도 넣지 않았습니다.page는 0부터,size는 기본 25·최대 100입니다.include/exclude속성 조건 배열,categoryGroups,abvFrom/abvTo,tastingGroupCodes,nextQuestion을 지원합니다. 포함 조건은 AND이며, 가격·도수 범위는 양끝을 포함합니다.AdminAlcoholAttributeGroupController와DefaultAdminAlcoholAttributeSearchService에 통합했습니다. 불필요한 클래스와 설정을 정리했고 이번 API만을 위한 ADR은 추가하지 않았습니다.검증 근거
다음 세션
/Users/hgkim/workspace/etc/bottlenote/bottle-note-api-server입니다. 미추적artifacts/가 있으므로 임의 삭제하거나 커밋하지 않습니다.