thug0bin
ba38c05b93
feat: 지오영 cart/cancel, cart/restore 엔드포인트 추가
...
- POST /api/geoyoung/cart/cancel - 개별 삭제
- POST /api/geoyoung/cart/restore - NOT_SUPPORTED 응답
2026-03-06 11:56:17 +09:00
thug0bin
c1596a6d35
feat: 도매상 API 통합 및 스키마 업데이트
...
- wholesale 패키지 연동 (SooinSession, GeoYoungSession)
- Flask Blueprint 분리 (sooin_api.py, geoyoung_api.py)
- order_context 스키마 확장 (wholesaler_id, internal_code 등)
- 수인약품 개별 취소 기능 (cancel_item, restore_item)
- 문서 추가: WHOLESALE_API_INTEGRATION.md
- 테스트 스크립트들
2026-03-06 11:50:46 +09:00
thug0bin
e84eda928a
fix: dry run에서 재고 있는 제품 우선 선택하도록 수정
...
- 동일 보험코드에 여러 제품 있을 때 첫 번째 매칭 선택하던 버그
- 재고 0인 제품 선택되어 dry run 실패하던 문제 해결
- matched_with_stock 우선, 없으면 matched_any 사용
2026-03-06 08:57:02 +09:00
thug0bin
0460085791
feat: 전문의약품(Rx) 사용량 조회 페이지 + OTC 사용량 페이지 추가
...
- /admin/rx-usage: 전문의약품 사용량 조회 (현재고 포함)
- /admin/usage: OTC 일반약 사용량 조회
- /api/rx-usage: 처방전 데이터 기반 품목별 집계 API
- /api/usage: POS 판매 데이터 기반 품목별 집계 API
- 현재고: IM_total.IM_QT_sale_debit 사용
- 장바구니 + 주문서 생성 기능
- 세로모니터 대응 미디어쿼리 포함
2026-03-06 01:07:04 +09:00
thug0bin
0d9f4c9a23
fix: 이전 처방에서도 대체조제 원처방(PS_Type=9) 제외
...
- 현재 처방과 동일하게 PS_Type=9는 목록에서 제외
- 중복 처방처럼 보이는 문제 해결
2026-03-05 20:44:04 +09:00
thug0bin
3527cc9777
feat: PAAI 약품 정보 Enrichment 구현
...
- enrich_medications() 함수 추가
- CD_SUNG: 성분 정보 (복합제 포함)
- CD_MC: 분류(PRINT_TYPE), 상호작용(INTERACTION), 금기(CONTRA)
- 프롬프트에 성분/분류 정보 포함
- AI가 성분 기반으로 정확한 판단 가능
2026-03-05 20:38:46 +09:00
thug0bin
636fd66f9e
perf: OTC API 최적화 및 뱃지 안정화
...
- N+1 쿼리 → JOIN 한방 쿼리로 개선
- 21번 쿼리 → 1번 쿼리
- 2.4초 → 37ms (20건 조회 기준)
- DB warmup 추가 (앱 시작 시 연결 미리 생성)
- OTC 뱃지 insertBefore 방식으로 변경 (레이아웃 안정화)
- 중복 뱃지 방지 로직 추가
2026-03-05 20:32:00 +09:00
thug0bin
69b75d6724
feat: PAAI 피드백 루프 시스템 구현 (1-2단계)
...
- paai_feedback.py: 피드백 API + SQLite 저장
- PMR 화면: 👎 클릭 시 코멘트 입력 모달
- 카테고리: 약물상호작용/적응증/용법용량/기타
- 피드백 규칙 자동 정제 (기본 버전)
2026-03-05 15:37:06 +09:00
thug0bin
3ce44019bf
feat: 본인부담률 표시 통일 (30/50/80/90/100)
...
- 색상 보라색 통일
- 숫자만 표시: 100), 80), 50), 30), 90)
2026-03-05 14:15:24 +09:00
thug0bin
d820d13af9
feat: 비급여/100% 표시 - UnitCode 기반
...
- UnitCode 컬럼 추가 (같은 테이블, 쿼리 부담 없음)
- UnitCode=2: 비) 비급여 (빨간색)
- UnitCode=3: 100) 전액본인부담 (보라색)
- 기존 대체조제 배지와 함께 표시 가능
2026-03-05 14:14:16 +09:00
thug0bin
771d247163
docs: PS_Type 의미 정정 - 일반대체 vs 저가대체
2026-03-05 13:55:03 +09:00
thug0bin
daa697fff9
fix: 대체조제 표시 수정 - PS_Type 의미 반영
...
- PS_Type=1: 대) 일반 대체조제 (주황색)
- PS_Type=4+9 쌍: 저) 저가대체 인센티브 (초록색)
- 비급여 표시는 추후 별도 구현
2026-03-05 13:54:51 +09:00
thug0bin
8a86a120d8
feat: 비급여 표시 '비)' 배지 추가 (붉은색)
...
- PS_Type=1 비급여 약품에 '비)' 배지 표시
- 붉은 그라데이션 (#ef4444 → #dc2626)
- 대체조제 + 비급여 동시 표시 가능
2026-03-05 13:46:09 +09:00
thug0bin
513c082cc6
docs: PS_sub_pharm 테이블 및 PS_Type 대체조제 구분 문서화
...
- PS_sub_pharm 테이블 컬럼 설명
- PS_Type 값별 의미 (0,1=일반, 4=대체실제, 9=대체원본)
- 대체조제 데이터 패턴 (4→9 순서)
- 쿼리 예시 추가
2026-03-05 13:45:03 +09:00
thug0bin
4968735a80
feat: 대체조제 표시 기능 추가
...
- PS_Type=9 (원본 처방) 숨김
- PS_Type=4 (대체조제) '대)' 배지 표시
- 원처방 펼쳐보기 (details/summary)
- 순서: 4(대체) → 9(원본) 패턴 매칭
관련: 3월5일 개선지시서.md
2026-03-05 13:43:33 +09:00
thug0bin
a144a091b9
docs: PAAI 시스템 아키텍처 문서 추가
...
- PAAI 전체 흐름 다이어그램
- 구성 요소 (Trigger, WebSocket, API, 프린터)
- WebSocket 이벤트 목록
- 자동인쇄/중복방지/재시도 로직 설명
- 로그 파일 위치
2026-03-05 13:24:03 +09:00
thug0bin
ebd4669d24
fix: 중복 인쇄 race condition 수정
...
문제: Set에 추가하는 타이밍이 인쇄 완료 후라서
비동기로 2개 요청이 거의 동시에 들어오면 둘 다 통과
해결: 요청 전에 먼저 Set에 추가
실패/오류 시에만 Set에서 제거 (재시도 가능)
2026-03-05 13:09:02 +09:00
thug0bin
c7169e6679
fix: 자동인쇄 중복 방지 + 인쇄 로깅 추가
...
문제: 같은 처방이 2번 인쇄됨
원인: printPaaiResult가 2곳에서 호출 (API 응답 + WebSocket 이벤트)
해결:
- window.printedSerials (Set) 으로 중복 인쇄 방지
- 인쇄 성공 시 Set에 추가
- 5분 후 자동 제거 (메모리 관리)
로깅 추가:
- 프론트: 콘솔에 시간 + 환자명 + 상태
- 백엔드: logs/print_history.log 파일에 기록
2026-03-05 12:56:39 +09:00
thug0bin
2eb92daf3e
docs: PAAI 자동인쇄 트러블슈팅 가이드 작성
...
- 자동인쇄 토글 문제 해결법
- Flask/브라우저 캐시 문제
- 프린터 출력 안 될 때
- 한글 깨짐 해결 (EUC-KR)
- WebSocket 연결 실패
- 디버깅 체크리스트
- 전체 플로우 요약
2026-03-05 12:49:30 +09:00
thug0bin
b4e4a44981
fix: 자동인쇄 전역 변수/함수 완전 수정
...
모든 변수와 함수를 window. 접두사로 전역 노출:
- window.autoPrintEnabled
- window.showToast
- window.updateAutoPrintIndicator
- window.printPaaiResult
이제 토글 클릭 정상 작동!
2026-03-05 12:46:53 +09:00
thug0bin
e33204f265
fix: printPaaiResult 전역 함수로 변경
...
- async function → window.printPaaiResult = async function
- WebSocket 이벤트에서 호출 가능하도록 전역 노출
2026-03-05 12:42:58 +09:00
thug0bin
0bbc8a56f7
fix: 자동인쇄 토글 수정 - showToast 함수 추가
...
문제:
- onclick 이벤트에서 showToast 함수가 정의되지 않아 에러 발생
- JavaScript 함수들이 전역 스코프에 없어서 접근 불가
해결:
- window.showToast 함수 추가 (전역)
- 즉시 실행 함수(IIFE)로 이벤트 바인딩
- HTML onclick 속성 제거, JS에서만 처리
테스트 완료:
- 토글 클릭 시 ON/OFF 전환 확인
- localStorage에 상태 저장 확인
- 콘솔에 [AutoPrint] 로그 출력 확인
2026-03-05 12:37:54 +09:00
thug0bin
0b17139daa
feat: PAAI 자동인쇄 기능 완성 (EUC-KR 텍스트 방식)
...
추가:
- 자동인쇄 ON/OFF 토글 (헤더)
- ESC/POS 영수증 인쇄 (EUC-KR 인코딩)
- ESCPOS_TROUBLESHOOTING.md 트러블슈팅 문서
핵심 변경:
- 이미지 방식 -> 텍스트 방식 (socket 직접 전송)
- UTF-8 -> EUC-KR 인코딩
- 이모지 제거 ([V], [!], >> 사용)
- 48자 기준 줄바꿈
인쇄 흐름:
1. PAAI 분석 완료
2. 자동인쇄 ON이면 /pmr/api/paai/print 호출
3. _format_paai_receipt()로 텍스트 생성
4. _print_escpos_text()로 프린터 전송
참고: docs/ESCPOS_TROUBLESHOOTING.md
2026-03-05 12:19:56 +09:00
thug0bin
7ac3f7a8b4
feat: PAAI 분석에 환자 특이사항(CUSETC) 포함
...
추가:
- AI 프롬프트에 '환자 특이사항' 섹션 추가
- 알러지, 기저질환, 주의사항 등 약사가 입력한 메모 활용
- 예: '투석실 환자' → AI가 신장약물 주의사항 안내
변경 파일:
- pmr_api.py: patient_note 파라미터 추가, build_paai_prompt 수정
- pmr.html: requestSnapshot에 patient_note 포함
- prescription_trigger.py: cusetc → patient_note 전달
효과:
- 환자별 맞춤 복약 안내 품질 향상
- 알러지/금기 정보 반영으로 안전성 강화
2026-03-05 11:04:03 +09:00
thug0bin
cb90d4a7a6
fix: 처방목록 조회 기준을 발행일에서 조제일로 변경
...
문제:
- PMR 처방 목록이 PassDay(처방전 발행일) 기준으로 조회되어
발행일과 조제일이 다른 처방(예: 3일 전 발행, 오늘 조제)이
오늘 목록에 표시되지 않는 버그
해결:
- PS_MAIN 테이블 조회 시 PassDay 대신 Indate(조제일) 기준으로 변경
- issue_date(발행일), dispense_date(조제일) 필드 추가로 구분 명확화
추가 변경:
- WebSocket 연결/해제 시 토스트 알림 추가
- WebSocket 프록시 트러블슈팅 문서 추가 (NPM 설정 가이드)
2026-03-05 10:56:24 +09:00
thug0bin
f3b6496c91
docs: PAAI 시스템 아키텍처 문서
...
- 시스템 개요 및 데이터 흐름
- API 엔드포인트 정리
- Clawdbot 연동 방법
- 트러블슈팅 가이드
2026-03-05 09:30:39 +09:00
thug0bin
16c3881661
feat: PAAI 어드민 대시보드 페이지
...
- PAAI 분석 로그 목록 조회
- 필터링 (상태, 날짜, 심각도)
- 로그 상세 보기 모달
- 피드백 통계 (일별)
2026-03-05 09:30:34 +09:00
thug0bin
59a55d6b22
refactor: PAAI Clawdbot 호출 방식 개선
...
- HTTP API → WebSocket Gateway 방식으로 변경
- clawdbot_client.py의 ask_clawdbot() 함수 활용
- 시스템 프롬프트 분리
2026-03-05 09:30:22 +09:00
thug0bin
4275689c29
feat: 처방감지 WebSocket 클라이언트 통합 + days 버그 수정
...
- WebSocket 클라이언트 추가 (ws://localhost:8765)
- 처방 감지 시 자동 토스트 알림 (누적 표시)
- 연결 상태 표시 (자동감지 ON/OFF)
- fix: med.days → med.duration 필드명 수정 (복용일수 0 버그)
2026-03-05 09:30:07 +09:00
thug0bin
1b33f82fd4
feat: PAAI (Pharmacist Assistant AI) 기능 구현
...
- PAAI 로그 테이블 스키마 (paai_logs_schema.sql)
- PAAI 로거 모듈 (db/paai_logger.py)
- /pmr/api/paai/analyze API 엔드포인트
- KIMS API 연동 (KD코드 기반 상호작용 조회)
- Clawdbot AI 연동 (HTTP API)
- PMR 화면 PAAI 버튼 및 모달
- Admin 페이지 (/admin/paai)
- 피드백 수집 기능
2026-03-05 00:36:51 +09:00
thug0bin
141b211f07
fix: OTC 모달 이미지 placeholder 스타일 개선
...
- 그라데이션 배경 + 점선 테두리
- SVG 이미지 아이콘 사용
- admin_products.html 스타일 통일
2026-03-05 00:00:40 +09:00
thug0bin
088d88878a
feat: OTC 모달에 제품 썸네일 이미지 표시
...
- product_images.db에서 thumbnail_base64 조회
- drug_code로 이미지 매칭
- 이미지 없으면 💊 placeholder
2026-03-04 23:59:13 +09:00
thug0bin
ebf2e8a016
feat: PMR OTC 구매 이력 기능
...
- /pmr/api/patient/<cus_code>/otc: OTC 구매 이력 API
- SALE_MAIN + SALE_SUB (PRESERIAL='V' = OTC)
- 💊 OTC 뱃지 클릭 → 모달로 구매 이력 표시
- 자주 구매하는 품목 요약
- 방문/금액 통계
2026-03-04 23:55:54 +09:00
thug0bin
41428646ab
fix: 질병 뱃지 스타일 분리
2026-03-04 23:48:14 +09:00
thug0bin
4fc667b844
fix: 질병 뱃지 개별 표시
2026-03-04 23:47:11 +09:00
thug0bin
7928bbd55c
feat: PMR 질병정보 표시
...
- PS_MAIN.St1, St2 + PM_BASE.CD_SANG JOIN
- 처방 헤더에 🩺 질병명 표시
- disease_info: {code_1, code_2, name_1, name_2}
2026-03-04 23:46:02 +09:00
thug0bin
d8aa073564
feat: PMR 처방 비교 기능
...
- 비교 모드 토글 체크박스 추가
- 상태 분류: 🆕 추가 / 🔄 변경 / ❌ 중단 / ✓동일
- 변경된 값: '1정 → 2정' 형태로 표시
- 색상 코딩: 녹색(추가), 노랑(변경), 빨강(중단)
- 이전 처방 < > 네비게이션 시 자동 비교
2026-03-04 23:40:09 +09:00
thug0bin
6192f635ca
feat: PMR 이전 처방 비교 기능
...
- /pmr/api/patient/<cus_code>/history: 환자 이전 처방 이력 API
- 하단에 이전 처방 영역 + < > 네비게이션
- 현재 처방과 이전 처방 한눈에 비교 가능
2026-03-04 23:35:11 +09:00
thug0bin
fc2db78816
feat: PMR 효능효과(add_info) 추가
...
- CD_MC.PRINT_TYPE JOIN으로 효능 조회
- 약품 테이블에 효능 표시
- 라벨 미리보기에 효능 포함
2026-03-04 22:56:28 +09:00
thug0bin
c21aa956da
feat: PMR 라벨 미리보기 기능
...
- /pmr/api/label/preview: PIL 렌더링 → Base64 이미지
- 미리보기 버튼 + 모달 추가
- 29mm 용지 기준 라벨 이미지 생성
2026-03-04 22:52:42 +09:00
thug0bin
8d025457c0
fix: PMR 약품명 조회 - PM_DRUG.CD_GOODS JOIN
...
- PS_sub_pharm.DrugCode → PM_DRUG.CD_GOODS.GoodsName
- 용량(QUAN), 횟수(QUAN_TIME), 일수(Days) 매핑
2026-03-04 22:48:35 +09:00
thug0bin
75448ffdc5
feat: PMR 조제관리 - MSSQL(PharmaIT3000) 연동
...
- pmr_api.py: 192.168.0.4 MSSQL 연결
- /pmr/api/prescriptions: 일별 처방전 목록
- /pmr/api/prescription/<id>: 처방전 상세
- /pmr/api/stats: 당일 통계
- /pmr/api/test: DB 연결 테스트
- pmr.html: API 엔드포인트 수정
2026-03-04 22:44:54 +09:00
thug0bin
1054a9ed17
feat: 용법용량 체중별 투여량 HTML 테이블 렌더링
...
- 표 형식(─ 문자) 감지 시 HTML <table> 변환
- 파란색 헤더, 굵은 숫자 스타일
- 미리보기 API에서 strip_html 개선 (표 형식 줄바꿈 유지)
2026-03-04 21:02:45 +09:00
thug0bin
71c35433fc
fix: 프론트엔드 모달 순서도 변경 - 주의사항 마지막으로
2026-03-04 20:54:20 +09:00
thug0bin
836be958db
fix: 인쇄 순서 변경 - 주의사항을 마지막으로
...
용법용량 → 투약주기 → 함께투약 권장 → 주의사항
2026-03-04 20:51:16 +09:00
thug0bin
f829276431
feat: 인쇄에 투약주기/병용약 추가 + 인쇄 피드백 개선
...
- 인쇄 API: component_guide JOIN 추가
- 영수증에 ★ 투약 주기 ★ / ★ 함께 투약 권장 ★ 섹션 추가
- 인쇄 버튼: 로딩 중 → 인쇄 완료! 피드백
- 이모지 대신 ★ 사용 (프린터 호환)
2026-03-04 20:48:47 +09:00
thug0bin
9ff25dcbce
feat: Phase 2 - 성분코드 기반 투약주기/병용약 JOIN 구현
...
- component_guide 테이블 생성 (PostgreSQL)
- IC2030126 (메벤다졸+프라지퀸텔) 샘플 데이터 입력
- 미리보기 API: apc + component_guide LEFT JOIN
- 모달에 투약주기, 병용약 섹션 추가 (보라색/녹색 강조)
2026-03-04 20:44:37 +09:00
thug0bin
4352a8b9a8
fix: 투약지도서 글자수 제한 해제
...
- 효능효과/용법용량/주의사항 전체 출력
- 롤 용지라 길이 제한 없음
2026-03-04 20:08:25 +09:00
thug0bin
5a2ab044ba
feat: 투약지도서 표 형식 출력 지원
...
- 체중/투여정수 표(─ 문자 포함) 감지
- 표 형식일 때 공백/정렬 유지
- 안텔민 킹정 등 체중별 투여량 표 정상 출력
2026-03-04 19:58:15 +09:00
thug0bin
a89dc9b354
fix: '애니팜 투약지도서' 중앙 정렬 수정
2026-03-04 19:38:41 +09:00