king ed2819d90e feat(config): 구글 시트 설정 데이터 인메모리 캐싱 적용 및 동기화 최적화
- 설정 조회 속도 개선을 위한 인메모리 캐싱 도입: read_config(force_refresh=False)로 변경하여 캐시가 존재하고 유효 기간(10분) 내인 경우 구글 시트 API 호출을 건너뛰고 메모리 데이터 즉시 반환 / 다중 스레드 환경을 고려한 threading.Lock 및 Double-Checked Locking 적용으로 동시성 안전 보장

- 실시간 데이터 일관성 유지: write_config(config) 함수 성공 시 새로 작성한 설정 로우(rows) 데이터로 로컬 캐시 즉시 최신화

- 신규 제어 장치 및 Warm up 추가: /api/config/refresh (POST) API 신설 (구글 시트 웹 문서에서 직접 변경 시 강제로 캐시를 갱신할 수 있는 기능 제공) / 서버 시작(startup_event) 시 캐시 초기 적재(Warm up) 처리 추가로 첫 로딩 딜레이 완전 차단
2026-05-26 00:19:42 +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%