pharmacy-pos-qr-system/docs/ANIMAL_DRUG_APC_MAPPING.md
thug0bin 1cebb02ec6 feat: 반려동물 등록 기능 및 확장 마이페이지 추가
- pets 테이블 추가 (이름, 종류, 품종, 사진 등)
- 반려동물 CRUD API (/api/pets)
- 확장 마이페이지 (/mypage) - 카카오 로그인 기반
- 기존 마이페이지에 퀵 메뉴 추가 (반려동물/쿠폰/구매내역/내정보)
- 카카오 로그인 시 세션에 user_id 저장
- 동물약 APC 매핑 가이드 문서 추가
2026-03-02 13:56:22 +09:00

5.7 KiB

동물약 APC 매핑 가이드

최종 업데이트: 2026-03-02

개요

POS(PIT3000)의 동물약 제품을 APDB의 APC 코드와 매핑하여 제품 정보(용법, 용량, 주의사항) 및 이미지를 표시하기 위한 작업 가이드.


현재 상태

매핑 현황

구분 개수 비율
동물약 총 39개 100%
APC 매핑됨 7개 18%
APC 미매핑 32개 82%

매핑 완료 제품

POS 제품명 DrugCode APC
(판)복합개시딘 LB000003140 0231093520106
안텔민킹(5kg이상) LB000003158 0230237810109
안텔민뽀삐(5kg이하) LB000003157 0230237010107
파라캅L(5kg이상) LB000003159 0230338510101
파라캅S(5kg이하) LB000003160 0230347110106
세레니아정16mg(개멀미약) LB000003353 0231884610109
세레니아정24mg(개멀미약) LB000003354 0231884620107

매핑 구조

데이터베이스 연결

MSSQL (192.168.0.4\PM2014)          PostgreSQL (192.168.0.87:5432)
┌─────────────────────────┐         ┌─────────────────────────┐
│ PM_DRUG.CD_GOODS        │         │ apdb_master.apc         │
│ - DrugCode              │         │ - apc (PK)              │
│ - GoodsName             │         │ - product_name          │
│ - BARCODE               │         │ - image_url1            │
│                         │         │ - llm_pharm (JSONB)     │
├─────────────────────────┤         └─────────────────────────┘
│ PM_DRUG.CD_ITEM_UNIT_   │
│ MEMBER                  │
│ - DRUGCODE (FK)         │
│ - CD_CD_BARCODE ◀───────┼── APC 코드 저장 (023%로 시작)
│ - CHANGE_DATE           │
└─────────────────────────┘

APC 매핑 방식

  1. CD_ITEM_UNIT_MEMBER 테이블에 추가 바코드로 APC 등록
  2. 기존 바코드는 유지, APC를 별도 레코드로 INSERT
  3. APC 코드는 023%로 시작 (식별자)

1:1 매핑 가능 후보

확실한 매핑 (1개)

POS 제품명 DrugCode APC APDB 제품명 이미지
제스타제(10정) LB000003146 8809720800455 제스타제 있음

⚠️ 검토 필요 (1개)

POS 제품명 DrugCode APC 후보 비고
안텔민 S0000001 0230237800003 "안텔민킹"과 "안텔민뽀삐"는 이미 별도 매핑됨. 이 제품이 무엇인지 확인 필요

APDB에 없음 (3개)

POS 제품명 사유
(판)클라펫정50(100정) APDB엔 "클라펫 정"만 있음 (함량 불일치)
넥스가드xs(2~3.5kg) 사이즈별 APC 없음
캐치원캣(2.5~7.5kg)/고양이 APDB에 캐치원 자체가 없음

1:N 매핑 필요 제품 (27개)

사이즈별로 세분화된 제품들. 하나의 APDB APC에 여러 POS 제품을 매핑해야 함.

브랜드별 현황

브랜드 POS 제품 수 APDB 존재 비고
다이로하트 3개 (SS/S/M) 다이로하트 츄어블 정
하트세이버 4개 (mini/S/M/L) 하트세이버 플러스 츄어블
하트웜솔루션 2개 (S/M) APDB에 없음
리펠로 2개 (S/M) 리펠로액 (이미지 있음!)
캐치원 5개 (SS/S/M/L/캣) APDB에 없음
셀라이트 5개 (SS/S/M/L/XL) 셀라이트 액
넥스가드 2개 (xs/L) 넥스가드 스펙트라
가드닐 3개 (S/M/L) 가드닐 액
심피드 2개 (M/L) APDB에 없음
하트캅 1개 하트캅-츄어블 정

APDB 통계

항목 수치
전체 APC 16,326개
이미지 있음 73개 (0.4%)
LLM 정보 있음 81개 (0.5%)
동물 관련 키워드 ~200개

⚠️ 주의: APDB에 이미지가 거의 없음. 이미지 표시가 목적이라면 다른 소스 필요.


매핑 스크립트

매핑 후보 찾기

python backend/scripts/batch_apc_matching.py

1:1 매핑 가능 후보 추출

python backend/scripts/find_1to1_candidates.py

매핑 실행 (수동)

# backend/scripts/batch_insert_apc.py 참고
MAPPINGS = [
    ('제스타제(10정)', 'LB000003146', '8809720800455'),
]

INSERT 쿼리 예시

INSERT INTO CD_ITEM_UNIT_MEMBER (
    DRUGCODE, CD_CD_UNIT, CD_NM_UNIT, CD_MY_UNIT, CD_IN_UNIT,
    CD_CD_BARCODE, CD_CD_POS, CHANGE_DATE
) VALUES (
    'LB000003146',  -- DrugCode
    '015',          -- 단위코드
    1.0,            -- 단위명
    <기존값>,        -- CD_MY_UNIT (기존 레코드에서 복사)
    <기존값>,        -- CD_IN_UNIT (기존 레코드에서 복사)
    '8809720800455', -- APC 바코드
    '',
    '20260302'      -- 변경일자
)

다음 단계

  1. 제스타제 1:1 매핑 실행
  2. 안텔민(S0000001) 제품 확인 후 결정
  3. 1:N 매핑 정책 결정 (사이즈별 제품 → 동일 APC?)
  4. 이미지 소스 대안 검토 (필요시)

관련 파일

  • backend/db/dbsetup.py - DB 연결 설정
  • backend/scripts/batch_apc_matching.py - 매칭 후보 찾기
  • backend/scripts/batch_insert_apc.py - 매핑 실행
  • backend/scripts/find_1to1_candidates.py - 1:1 후보 추출
  • backend/app.py - _get_animal_drugs(), _get_animal_drug_rag()