Commit Graph

10 Commits

Author SHA1 Message Date
70d18a1954 feat: AI 기반 제품 카테고리 자동 태깅 및 UI 표시
- OpenAI GPT-4o-mini로 31개 제품 자동 분류 (100% 커버리지)
- 관리자 페이지 사용자 상세 모달에 카테고리 뱃지 추가
- BARCODE 기반 제품-카테고리 매핑 (many-to-many)
- 카테고리별 색상 구분 (10가지 그라디언트 디자인)
- 제품 수동 분류 도구 추가 (update_product_category.py)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 23:56:28 +09:00
914bc08c6c feat: AI 구매 패턴 분석 기능 추가 (OpenAI GPT 통합)
- 사용자 구매 이력 AI 분석 및 마케팅 전략 제안
- 업셀링을 위한 추천 제품 기능 추가

주요 변경사항:

1. 백엔드 API (app.py)
   - OpenAI API 통합 (GPT-4o-mini 사용)
   - 환경 변수 로드 (.env 파일)
   - AI 분석 엔드포인트: POST /admin/ai-analyze-user/<user_id>
   - 헬퍼 함수 추가:
     * prepare_analysis_prompt(): 프롬프트 생성
     * parse_openai_response(): JSON 응답 파싱
     * call_openai_with_retry(): 재시도 로직
     * categorize_product(): 제품 카테고리 추정
   - 에러 처리 및 fallback 로직

2. 프론트엔드 UI (admin.html)
   - AI 분석 버튼 추가 (사용자 상세 모달)
   - AI 분석 모달 추가 (결과 표시)
   - Lottie 로딩 애니메이션 통합 (무료 라이선스)
   - JavaScript 함수:
     * showAIAnalysisModal(): 모달 열기 및 API 호출
     * renderAIAnalysis(): 분석 결과 렌더링
     * showAIAnalysisError(): 에러 표시
     * 5분 캐싱 기능
   - 섹션별 시각화:
     * 구매 패턴 분석 (📊)
     * 주요 구매 품목 (💊)
     * 추천 제품 ()
     * 마케팅 전략 (🎯)

3. 환경 설정
   - requirements.txt: openai, python-dotenv 추가
   - .env: OpenAI API 키 및 설정 저장
   - Lottie CDN 통합 (버전 5.12.2)

기술 스택:
- OpenAI GPT-4o-mini (비용 효율적)
- Lottie 애니메이션 (로딩 UX 개선)
- 재시도 로직 (지수 백오프)
- 응답 캐싱 (5분)

보안:
- API 키 환경 변수 관리
- .env 파일 .gitignore 처리

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 22:23:45 +09:00
d715b630fe feat: 구매이력 정렬 기능 및 상품검색 시간 표시 개선
- 관리자 페이지 사용자 상세 모달에 날짜별/금액별 정렬 버튼 추가
- 구매 이력 정렬 기능 구현 (날짜순/금액순)
- 상품 검색 결과에 구매일시/적립일시 모두 표시

주요 변경사항:

1. 구매 이력 정렬 기능 (admin.html)
   - 날짜별 정렬: 최신순 정렬
   - 금액별 정렬: 구매금액 높은 순 정렬
   - 정렬 버튼 UI: 우측 정렬, 토글 방식
   - 탭 전환 시 정렬 버튼 자동 표시/숨김

2. 상품 검색 시간 표시 개선 (app.py, admin.html)
   - 구매일시: MSSQL InsertTime (실제 거래 시간)
   - 적립일시: SQLite claimed_at (QR 적립 시간)
   - 두 시간 모두 테이블에 표시 (구분 명확화)

3. UI/UX 개선
   - 정렬 버튼 스타일: search-type-btn과 동일한 패턴
   - 적립일시: 회색(#868e96)으로 구매일시와 시각적 구분
   - 정렬 상태 유지: 버튼 클릭 시 active 클래스 토글

기술 구현:
- renderPurchaseHistory() 함수로 구매 이력 동적 렌더링
- sortPurchases(type) 함수로 정렬 로직 처리
- 전역 변수로 현재 사용자 데이터 및 정렬 타입 관리
- JavaScript 배열 복사 후 정렬하여 원본 데이터 보존

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 22:06:47 +09:00
59a33cc249 feat: 포인트 사용 기능 및 시간 표시 개선
- UTC to KST 시간 변환 로직 추가 (SQLite 저장 시간 표시용)
- 관리자 페이지에 포인트 사용(차감) 기능 추가
  - 사용자 상세 모달에 "포인트 사용" 버튼 추가
  - 포인트 입력 및 차감 처리
  - 마일리지 원장에 USE 타입으로 기록
- 구매 이력 시간을 MSSQL의 실제 거래 시간(InsertTime)으로 수정
- 선택적 시간 변환 적용
  - 변환: users.created_at, mileage_ledger.created_at, claim_tokens.created_at
  - 미변환: claim_tokens.claimed_at, MSSQL 거래 시간
- 관리자 페이지에 검색 기능 추가 (사이드바)
  - 사용자 검색 (이름, 전화번호, 뒷자리)
  - 제품 검색 (약품명으로 구매자 조회)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 21:54:12 +09:00
7627efbdfb feat: 관리자 페이지 사이드바 및 검색 기능 추가
- 왼쪽 사이드바 추가 (280px, 검색 UI 포함)
- 사용자 검색: 이름/전화번호/전화번호 뒷자리 검색
- 제품 검색: SQLite 적립자 기준으로 구매자 목록 표시
- 다중 매칭 시 선택 모달 표시
- 검색 결과 클릭 시 사용자 상세 모달 연동
- 모바일 반응형 (768px 이하 사이드바 숨김)

API 엔드포인트:
- GET /admin/search/user?q={검색어}&type={name|phone|phone_last}
- GET /admin/search/product?q={제품명}

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 21:19:35 +09:00
a652d54ad3 feat: 관리자 페이지 사용자 상세 이력 조회 기능 추가
- Flask 백엔드에 /admin/user/<user_id> API 엔드포인트 추가
- SQLite에서 사용자 정보, 마일리지 이력, 구매 이력 조회
- MSSQL에서 각 거래별 상품 상세 조회 (SALE_SUB + CD_GOODS JOIN)
- "첫번째상품명 외 N개" 형식 요약 생성

- admin.html 사용자 테이블에 클릭 이벤트 추가
- 사용자 상세 모달 UI 구현 (탭 + 아코디언)
- 탭: 구매 이력 / 적립 이력 분리 표시
- 아코디언: 각 구매 건 클릭 시 상품 목록 펼침/접기
- CSS 스타일 추가 (아코디언 애니메이션, 테이블 호버 효과)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 19:27:10 +09:00
622a143e19 fix: 거래 세부 내역 '수금' 필드를 '공급가액'으로 변경 및 부가세 표시 추가
- 부정확한 '수금' 레이블을 '공급가액'으로 수정
- 부가세 (SL_MY_rec_vat) 필드 추가 조회 및 표시
- 공급가액 + 부가세 = 판매 금액 구조로 명확화

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 19:13:31 +09:00
aa222eec3a fix: 거래 세부 내역의 단가 컬럼 매핑 수정
- SL_INPUT_PRICE → SL_NM_cost_a로 변경
- SL_INPUT_PRICE는 합계 금액이었음 (잘못된 매핑)
- SL_NM_cost_a가 실제 개당 단가

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 19:05:33 +09:00
1717f4c6c2 feat: 개인정보 수집·이용 동의 프로세스 추가
- QR 라벨에 개인정보 동의 안내 문구 추가 (18pt 작은 글씨)
- 웹앱에 핀테크 스타일 개인정보 동의 체크박스 추가
- 백엔드 API에서 개인정보 동의 검증 추가
- 개인정보보호법 준수 강화

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 18:51:20 +09:00
3889e2354f feat: Flask 웹 서버 및 마일리지 적립 기능 구현
- 간편 적립: 전화번호 + 이름만으로 QR 적립
- 자동 회원 가입: 신규 사용자 자동 등록
- 마이페이지: 포인트 조회 및 적립 내역 확인
- 관리자 페이지: 전체 사용자/적립 현황 대시보드
- 거래 세부 조회 API: MSSQL 연동으로 판매 상품 상세 확인
- 모던 UI: Noto Sans KR 폰트, 반응형 디자인
- 포트: 7001 (리버스 프록시: https://mile.0bin.in)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 16:36:14 +09:00