사용자 명시 요청 — 운영 DB 는 이미 모든 스키마/데이터 변경 반영됐고,
더 이상 자동 reload 가 필요 없음. 매 deploy 시 마이그레이션이 실행되며
사용자 변경(비밀번호, 부서, 추가 거래처 등) 을 원복하는 사고를 막기 위해
폴더 통째로 삭제.
- db/migrations/*.sql 35개 모두 삭제
- .gitea/workflows/deploy.yml 의 migrate-momo.mjs 호출 단계 제거
- scripts/migrate-momo.mjs 파일 자체는 유지
운영 DB 의 모든 user_info 비밀번호는 '1' 로 직접 reset 완료(142명).
docker compose build 시 latest 태그가 새 sha 로 갱신되면서 옛 sha 가 untagged
상태로 남아 매 배포마다 누적되던 문제. docker image prune -f 로 dangling 만 회수
(다른 프로젝트의 사용 중 이미지는 안 건드림).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
운영 momo_warehouses.objid 가 text 타입(예: MOMOWH000000001)이라
default_wh_objid 도 text 로 일치시켜야 매핑 가능.
- db/migrations/022_user_default_wh_text.sql
- /api/admin/users/save: ::numeric 캐스트 제거
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[정책]
- 발주/출고/입금 흐름과 분리된 별도 메뉴 (월말 일괄 또는 신고 시점 발행 가능)
- 출고 시 자동 발행은 향후 토글 옵션으로 추가
[DB 012]
- momo_einvoices: 발행 이력 (공급자/받는자/금액/승인번호/상태/원본XML)
- momo_einvoice_items: 라인별 상세
- 상태: DRAFT → QUEUED → SENT → ACK | FAIL | CANCELED
[발행 어댑터 추상화 (lib/einvoice)]
- InvoiceProvider 인터페이스 — issue/status/cancel
- adapters/manual.ts: 자체 거래명세서 (국세청 전송 X, 기본)
- adapters/nts-esero.ts: 국세청 e-세로 직접 연동 골격
· NTS_ESERO_MODE: stub | test | prod
· stub 모드는 DB 기록만 (개발/CI 안전)
· 실 통신은 사업자 공동인증서 + ERP 연계 승인 후 활성화
· SOAP/XMLDSig 페이로드 빌더 골격 작성, 인증서 받으면 서명+전송 추가
- index.ts: EINVOICE_PROVIDER 환경변수로 어댑터 선택
[API]
- POST /api/m/einvoices/list: 발행 이력 조회 + 필터 (관리자)
- POST /api/m/einvoices/issue: 발주(orderObjid)로부터 또는 수동 입력으로 발행
· 어댑터 결과를 momo_einvoices/_items 에 트랜잭션 기록 (성공/실패 모두)
[UI]
- /m/admin/einvoices 페이지 신설
· 발행 가능 발주 리스트 (출고/입금 완료된 건)
· 한 번 클릭으로 세금계산서 발행 → 결과 모달
· 발행 이력 (날짜/상태/승인번호 필터, 엑셀 다운로드)
· STUB 모드 안내 배너 — 운영 활성화 절차 명시
[문서]
- docs/MOMO_DISTRIBUTION_SPEC.md 부록 B (v0.6) 추가
다음 단계 (인증서 + ERP 연계 승인 후):
- nts-esero.ts 의 SOAP + XMLDSig 실제 구현
- NTS_ESERO_MODE=test 로 100건 검증
- NTS_ESERO_MODE=prod 전환
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- docker-compose.prod.yml: Traefik Host 라벨 (apex + www)
- .gitea/workflows/deploy.yml: NEXTAUTH_URL + 헬스체크 URL
- CICD_SETUP.md, docs/proposal.html, docs/MOMO_DISTRIBUTION_SPEC.md 도메인 표기 수정
DNS 입력 (가비아):
A @ 183.99.177.40
A www 183.99.177.40
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
admin-panel 좌측 메뉴:
- 정적 ADMIN_MENUS 배열 → menu_info [관리자] 트리 동적 로딩
- /api/admin/sidebar-menus: status='active' 자식만 반환
- 메뉴 관리에서 비활성화/삭제하면 사이드바에서 즉시 빠짐
- LABEL_TO_TAB 매핑으로 기존 탭 동작 유지
사용자/부서 삭제:
- /api/admin/users/delete: 진짜 DELETE FROM user_info (+ authority_sub_user 정리, 본인 보호)
- /api/admin/users/deactivate: status=inActive 비활성화 별도
- /api/admin/dept/delete: 진짜 DELETE (자식 부서/소속 사용자 검사)
- /api/admin/dept/deactivate: 비활성화 별도
문서:
- docs/MOMO_DISTRIBUTION_SPEC.md v0.2: 기존 user_info/dept_info/supply_mng/menu_info/comm_code 재사용 정책 명시
- 신규 momo_* 는 모모 비즈니스 도메인(품목/창고/재고/출고/매입) 만 한정
- TODO: momo_users 등 → 기존 테이블로 이전 마이그레이션
- /api/deploy/webhook: X-Deploy-Token 검증 후 백그라운드로 deploy.sh spawn
- scripts/deploy.sh: git pull + docker compose up --build + migrate
- docker-compose.prod.yml: docker.sock + 소스 디렉토리 마운트
- deploy.yml: webhook 호출 + 헬스체크 폴링 (시크릿 의존성 제거)
- 미들웨어 공개 경로에 /api/deploy/webhook 추가
서버 1회 셋업 (docker-compose.prod.yml 갱신본을 한 번 배포하기만 하면
이후 push 시 자동 재배포 영구 동작)
- 가입→검색→장바구니→승인→메일→정산까지 단계별 카드
- 장바구니 미리보기 + 자동발송 메일 미리보기 추가
- 우측 상단 회원가입/로그인 버튼은 기존 유지
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>