king 55e54aacd9 feat(returns): 반품 입고/조회 시 복수 송장번호 주문 매칭 기능 추가 및 예외 처리 강화
- 복수 송장번호 검색 기능 최적화: routers/returns.py 파일의 단건 조회(/lookup) 및 벌크 입고(/receive/bulk) 내 orders 테이블 대상 SQL 쿼리 개선 / 기존 단일 송장번호 완전 일치 검사(B-Tree 인덱스 스캔)를 유지하면서, 불일치 시 명시적 IS NOT NULL 및 빈값 검사 방어 코드를 수행하여 안정성 확보 / 쉼표(,)나 공백( ) 외에도 슬래시(/) 및 세미콜론(;) 구분자('[,\s/;]+')까지 함께 분리 지원하여 다양한 입력 형태 호환 보장

- 코드 안정성 확보: 다중행 SQL 문자열에 raw string(r 접두사)를 적용하여 Python의 이스케이프 시퀀스 구문 경고(SyntaxWarning: '\s' is an invalid escape sequence) 해결
2026-05-26 21:17:58 +09:00

DBX CORM (CS Web Program)

CS / 발주 / 반품 통합 관리 웹 애플리케이션. FastAPI + PostgreSQL 기반, Docker로 실행.


기술 스택

  • Backend: Python 3.10, FastAPI, Uvicorn
  • DB: PostgreSQL (외부 Docker 컨테이너 연결)
  • 외부 연동: 네이버 커머스 API, 카페24 API, Google Sheets
  • Frontend: Jinja2 템플릿 + Vanilla JS

사용 DB

DB 이름 용도
itemcode_db 품목코드 마스터
orderlist_db 주문 정보 조회
return_db 반품 데이터 저장

모두 DB 계정은 king 통일.


서버 배포 절차 (/opt/dbx-corm)

1. 코드 받기

sudo mkdir -p /opt/dbx-corm
sudo chown $USER:$USER /opt/dbx-corm
cd /opt
git clone https://gitea.no1king.freeddns.org/king/dbx-corm.git
cd /opt/dbx-corm

2. 환경변수 설정

cp .env.example .env
nano .env

.env 파일에 다음을 채워주세요:

  • POSTGRES_PASSWORD (DB 비밀번호)
  • POSTGRES_HOST (PostgreSQL 컨테이너 이름. 아래로 확인)
  • NAVER_CLIENT_ID, NAVER_CLIENT_SECRET
  • CAFE24_CLIENT_ID, CAFE24_CLIENT_SECRET, CAFE24_REDIRECT_URI

PostgreSQL 컨테이너 이름 확인:

docker ps --filter "ancestor=postgres" --format "{{.Names}}"

3. PostgreSQL 네트워크 확인 / 수정

docker network ls | grep postgres

docker-compose.ymlnetworks.postgres-net.name 값을 실제 네트워크 이름으로 수정.

4. 민감 파일 업로드 (Git에 없음)

로컬 PC에서 서버로 직접 복사:

# 로컬 PC에서 실행
scp cafe24_tokens.json king@<서버>:/opt/dbx-corm/
scp manual-ordering.json king@<서버>:/opt/dbx-corm/

5. 빌드 및 실행

cd /opt/dbx-corm
docker compose up -d --build

6. 상태 확인

docker compose ps
docker compose logs -f

업데이트 (Git pull 후 재배포)

cd /opt/dbx-corm
git pull
docker compose up -d --build

접속

  • 컨테이너 포트: 8002
  • 호스트 포트: 8002
  • 헬스체크: http://<서버>:8002/

Nginx Proxy Manager 등을 사용한다면 <서버>:8002로 프록시 설정.


로컬 개발 (Windows)

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

copy .env.example .env
:: .env 편집

python main.py

Gitea 푸시 (Windows)

리포지토리에 변경사항을 올릴 때:

push_to_gitea.bat

스크립트가 변경사항 확인 → 커밋 메시지 입력 → push 자동 수행.


주의사항

  • .env, cafe24_tokens.json, manual-ordering.json민감 파일은 절대 Git에 올리지 마세요.
  • .gitignore에 자동 제외 설정되어 있습니다.
  • DB 이름은 반드시 orderlist_db를 사용 (예전 이름 orderlist_app 사용 금지).
S
Description
CS, 발주, 반품, 상품관리 통합 프로그램
Readme 2.4 MiB
Languages
JavaScript 42.9%
Python 27.2%
HTML 23%
CSS 6.2%
Batchfile 0.5%
Other 0.2%