Commit Graph

16 Commits

Author SHA1 Message Date
thug0bin
83ecf88bd4 feat(animal-chat): APC 코드 2024년 체계 지원 및 피부약 2단계 추천
## APC 코드 체계 확장
- 기존: 023%만 검색 (~2023년 제품만)
- 변경: 02% OR 92% + 13자리 검증
  - 02%: 2023년 이전 item_seq (9자리) 기반 APC
  - 92%: 2024년 이후 item_seq (10자리) 기반 APC
- 999% 등 청구프로그램 임의코드는 제외

## 동물약 챗봇 피부약 추천 개선
- 피부약 2단계 추천 구조 추가
  - 1차(치료): 의약품 (개시딘겔, 테르비덤 등)
  - 2차(보조케어): 의약외품 (스킨카솔 - 회복기 피부보호)
- 스킨카솔은 의약외품임을 명시하여 치료제로 오인 방지

## 기타
- RAG 테스트 스크립트 추가
- 수인약품 API 문서화
2026-03-11 14:20:44 +09:00
thug0bin
e1711d9176 fix(animal-chat): 프롬프트 + RAG 최적화
1. 프롬프트 개선:
   - 상세 요청 감지 ('자세히', '설명해줘' 등)
   - 상세 요청 시 10-15문장 응답
   - RAG 검색 결과 적극 활용 지시

2. 벡터 검색 수정:
   - L2 거리 → 유사도 변환: 1/(1+distance)
   - 음수 유사도 문제 해결
   - 임계값 0.3 적용 (30% 미만 제외)

3. 컨텍스트 주입 개선:
   - 상세 질문 시 n_results=5로 증가
   - RAG 활용 지시 추가
2026-03-08 15:28:58 +09:00
thug0bin
5d7a8fc3f4 feat(animal-chat): 로깅 시스템 구축
- SQLite DB: animal_chat_logs.db
- 로거 모듈: utils/animal_chat_logger.py
- 단계별 로깅:
  - MSSQL (보유 동물약): 개수, 소요시간
  - PostgreSQL (RAG): 개수, 소요시간
  - LanceDB (벡터 검색): 상위 N개, 유사도, 소스, 소요시간
  - OpenAI: 모델, 토큰(입력/출력), 비용, 소요시간
- Admin 페이지: /admin/animal-chat-logs
- API: /api/animal-chat-logs
- 통계: 총 대화, 평균 응답시간, 총 토큰, 총 비용
2026-03-08 15:17:11 +09:00
thug0bin
be1e6c2bb7 feat(animal-chat): LanceDB 벡터 검색 RAG 통합
- LanceDB로 MD 문서 252개 청크 인덱싱
- /api/animal-chat에 벡터 검색 컨텍스트 주입
- 마지막 사용자 메시지로 관련 문서 검색 (top 3)
- ChromaDB Windows crash로 LanceDB 채택
2026-03-08 15:00:39 +09:00
thug0bin
30d95c8579 feat: 제품 이미지 크롤링에 날짜 선택 기능 추가 - 달력으로 날짜 선택 가능 - 해당 날짜 판매 제품 크롤링 2026-03-04 00:55:02 +09:00
thug0bin
29648e3a7d feat: yakkok.com 제품 이미지 크롤러 + 어드민 페이지
크롤러 (utils/yakkok_crawler.py):
- yakkok.com에서 제품 검색 및 이미지 추출
- MSSQL 오늘 판매 품목 자동 조회
- base64 변환 후 SQLite 저장
- CLI 지원 (--today, --product)

DB (product_images.db):
- 바코드, 제품명, 이미지(base64), 상태 저장
- 크롤링 로그 테이블

어드민 페이지 (/admin/product-images):
- 이미지 목록/검색/필터
- 통계 (성공/실패/대기)
- 상세 보기/삭제
- 오늘 판매 제품 일괄 크롤링

API:
- GET /api/admin/product-images
- GET /api/admin/product-images/<barcode>
- POST /api/admin/product-images/crawl-today
- DELETE /api/admin/product-images/<barcode>
2026-03-02 23:19:52 +09:00
thug0bin
0e954ac749 fix: OTC 라벨 프린터 IP 수정 (192.168.0.168) 2026-03-02 17:18:48 +09:00
thug0bin
76a4280ebd feat: OTC 용법 라벨 시스템 구현
DB:
- otc_label_presets 테이블 추가 (SQLite)
- 바코드 기준 오버라이드 데이터 저장

Backend:
- utils/otc_label_printer.py: 라벨 이미지 생성 + Brother QL-810W 출력
- API: CRUD + 미리보기 렌더링 + MSSQL 약품 검색

Frontend:
- /admin/otc-labels: 관리 페이지
- 실시간 미리보기
- 저장된 프리셋 목록
- 바코드/이름 검색 → 프리셋 편집 → 인쇄
2026-03-02 17:00:47 +09:00
thug0bin
db5f6063ec fix: SQLite 싱글톤 연결 I/O 에러 수정 + clawdbot 모델 오버라이드
- dbsetup: get_sqlite_connection()에 SELECT 1 헬스체크 추가 (죽은 연결 자동 재생성)
- pos_sales_gui: 싱글톤 SQLite conn.close() 제거 (I/O closed file 에러 원인)
- qr_token_generator: DatabaseManager() 새 생성 → 전역 db_manager 싱글톤 사용
- clawdbot_client: model 파라미터 추가, 업셀링에 claude-sonnet-4-5 지정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 01:27:47 +09:00
f4f7e8b1b4 feat: ESC/POS QR 비트맵 인쇄 활성화 (텍스트 검증 완료)
- QR 비트맵 인쇄 재활성화 (image_to_raster_esc_star)
- 에러 처리 강화: traceback 출력으로 디버깅 정보 제공
- QR 실패 시 URL 텍스트로 자동 폴백
- 텍스트 인쇄 검증 완료 (청춘약국, 거래정보, 금액 등)

ESC * 방식 (24-dot double-density) 사용

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-29 20:06:16 +09:00
9a24c8659f fix: ESC/POS 명령어 단순화 - 폰트 명령어 호환성 문제 해결
- 폰트 크기 명령어 제거 (ESC ! x10, x08, x00)
  → 일부 프린터에서 "@a!" 같은 이상한 문자 출력 문제 해결
- 중앙 정렬 명령어 변경: ESC a\x01 → ESC a [1]
- QR 비트맵 임시 비활성화 → URL 텍스트로 대체
- 용지 커트: Full cut (V\x00) → Partial cut (V\x01)
- 텍스트만으로 레이아웃 구성 (더 안전)

테스트 용지는 인쇄되지만 QR 포함 시 "@a!청춘약국" 같은
문자가 나오는 문제 해결

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-29 20:04:48 +09:00
3413211c49 fix: ESC/POS QR 인쇄 호환성 개선 (ESC * 방식)
- QR 크기 축소: 150x150px → 100x100px (안정성 향상)
- ESC * 명령어 사용 (24-dot double-density) - 더 많은 프린터 지원
- image_to_raster_esc_star() 함수 추가
- 디버깅 로그 추가 (각 단계 print)
- QR 비트맵 실패 시 URL 텍스트로 폴백

GS v 0 방식은 일부 프린터에서 미지원 → ESC * 방식으로 변경

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-29 20:03:13 +09:00
2ec73dd73d feat: QR 프린터 선택 기능 추가 (Zebra + ESC/POS)
- ESC/POS QR 영수증 인쇄 함수 추가 (pos_qr_printer.py)
  - QR 코드 이미지를 ESC/POS 비트맵 래스터로 변환
  - 150x150px QR 코드 + 거래 정보 텍스트 인쇄
  - EUC-KR 인코딩으로 한글 지원
  - TCP 소켓으로 프린터 전송

- POS GUI에 프린터 선택 토글 버튼 추가
  - 🖨️ Zebra 라벨 ⇄ 🖨️ POS 영수증 전환
  - POS 모드 시 설정 버튼 표시 (IP/포트 설정)
  - 미리보기 모드는 Zebra 전용

- POSSettingsDialog 재사용 (pos_thermal.py 연동)
  - config.json에 POS 프린터 설정 저장
  - 테스트 인쇄 기능 활용

- QRGeneratorThread 프린터 모드 지원
  - printer_mode 매개변수 추가 ('zebra' or 'pos')
  - pos_config 설정 전달
  - 프린터별 분기 처리

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-29 20:00:42 +09:00
10087cac5f fix: QR 라벨 개인정보 문구가 라벨 영역 내 표시되도록 간격 조정
- 포인트/안내 문구 간격 축소로 306px 라벨 내 수용
- y 최종 위치: 약 303px (라벨 높이 306px)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 18:55:43 +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
7aad05acb9 feat: QR 토큰 생성 및 라벨 인쇄 모듈 추가
- qr_token_generator.py: SHA256 기반 1회성 토큰 생성
  * 3% 마일리지 적립 정책
  * 30일 유효기간
  * nonce 기반 중복 방지
  * QR_BASE_URL: https://mile.0bin.in/claim
- qr_label_printer.py: Brother QL-810W 라벨 인쇄
  * 800x306px 라벨 이미지 생성
  * QR 코드 + 거래 정보 포함
  * 미리보기 모드 및 프린터 전송 지원
2026-01-23 16:35:56 +09:00