v1.0.0 APK (com.momotogether.erp) 의 서명 인증서 SHA-256 을 Digital Asset Links 에 등록.
이 commit 이 production 에 배포되면 TWA 앱이 URL bar 없이 풀스크린으로 동작.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- public/manifest.json + service worker(sw.js) 추가
- icon PNG 변환 (192/512/180)
- public/.well-known/assetlinks.json placeholder (Bubblewrap 빌드 후 APK 서명 SHA256 채울 자리)
- layout.tsx 에 manifest/theme-color/apple-touch-icon 메타데이터 + 서비스 워커 등록 스크립트 추가
Bubblewrap 으로 APK 빌드 시 https://www.momotogether.com/manifest.json 을 source 로 사용.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[입고 처리 화면 재설계 — 등록 → 수정 방식]
- 좌-우 분할:
· 좌: 매입 발주서 리스트 (발주요청+입고중 기본 필터)
· 우: 발주 라인별 [창고 선택 + 정상 입고 + 불량] 인라인 입력
- 발주/입고/미입고 한눈에 표시 (예: 10 / 5 / 5)
- 완전 입고된 라인은 ✓ 완료 표시 + 입력 칸 잠김
- 정상+불량은 남은 수량(qty - received_qty) 이하로 자동 클램프
[/api/m/procurements/list]
- 응답에 TOTAL_QTY, RECEIVED_QTY 추가 → 좌측 리스트에 진척 표시
[/api/m/inbounds/save]
- procObjid 있으면 라인별 입고 한도 사전 검증 (qty - received_qty 초과 차단)
- 0 입고 라인은 건너뛰기
- 매입발주 상태 자동 갱신:
· 모든 라인 완전 입고 → RECEIVED (입고완료)
· 일부 라인만 입고 → PARTIAL (입고중)
· 시작 안 함 → REQUESTED 유지
[매뉴얼 — 가-1, 가-2, 다-2 대폭 보강]
- 거래처 출고 요청: 6단계 체크리스트 + 화면 도식 + 토스트/모달 예시 + 시나리오
- 내 주문 내역 + 거래처 자기 주문 수량 수정/품목 삭제/취소: 화면 도식 + 단계별 가이드 + 상태표
- 입고 처리: 화면 도식 + 발주/입고/미입고 표시 의미 + 부분입고 시나리오
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[새 API: /api/m/orders/items/update]
- 본인 또는 관리자가 자기 발주의 품목(ITEM) 라인 수량 변경 또는 삭제
- REQUESTED 상태에서만 허용. 단가는 변경 불가 (momo_items.unit_price 기준 자동 재계산)
- 재고 / max_order_qty 한도 자동 검증 (unlimited_qty 권한이면 한도 우회)
- 트랜잭션으로 라인 수정 + momo_orders 합계 7종 자동 재집계
[/m/orders 거래명세표 모달 UI]
- 출고요청 상태 거래처 본인 화면에서 품목 라인 직접 편집:
· 수량 인풋 (블러 시 자동 저장)
· 행 끝의 [×] 버튼으로 그 품목만 삭제
- 택배/용차 라인은 인풋 안 보이고 "자동" 표시 — 모모 담당자가 조정
- 저장/삭제 후 onReload 로 모달 + 리스트 동시 갱신
- 안내 배너: "수량 수정 / 품목 삭제 / 주문 취소" 모두 가능 명시
[매뉴얼]
- 가-2 내 발주 이력 섹션에 수량 수정 / 품목 삭제 / 주문 취소 사용법 추가
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[새 통계 — 거래처×일자 매출 피벗]
- API: POST /api/m/statistics/monthly-pivot
· 입력: { year, month }
· 응답: dates[] / rows[ {거래처, BY_DAY:{날짜:{면세,과세}}, TOTAL_TAXFREE/TAXABLE} ] / totalsByDay / grandTotal
· 출고완료/입금완료/계산서발행 상태 발주만 집계
- 화면: /m/admin/statistics/pivot
· 가로 스크롤 피벗 표 (왼쪽 sticky 업체명)
· TOT 행: 월간 일자별 총합 (부가세 신고용)
· 거래처별 정렬: 매출 큰 순
· 합계 카드 3종: 면세/과세/총
· 엑셀 다운로드 (거래처 행 × 일자 컬럼 평면화)
- 메뉴 등록: 018 마이그레이션 (objid 9000504, 통계 그룹)
[세금계산서 중복 발행 차단]
- /api/m/einvoices/issue: orderObjid 가 이미 발행됨(FAIL/CANCELED 제외) 이면 400
· "이미 발행된 발주입니다 (상태/승인번호)" 메시지 + alreadyIssued=true 플래그
- /m/admin/einvoices: 발행 가능 발주 리스트에서 이미 발행된 건 자동 제외
· orders/list 와 einvoices/list 동시 조회 후 클라이언트 측 필터
· DRAFT/QUEUED/SENT/ACK 모두 발행 완료로 간주 — 재발행 불가
· FAIL/CANCELED 만 다시 발행 가능
[매뉴얼]
- 통계 표에 "거래처×일자 매출 (피벗)" 항목 추가, 부가세 신고 자료 활용 안내
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[발주서 엑셀 다운로드]
- /api/m/procurements/excel/[id] 신설
- 이미지의 표준 발주서 양식대로 .xlsx 생성
· 분류번호/발주서번호/발주일/공급업체/연락처/이메일
· 1.물품의 표시 (품목코드·품명·단위·수량·단가·금액)
· 총액 + V.A.T 별도
· 2.비고 + 발주자 정보
[발주서 이미지 공유]
- 매입 발주서 양식 우상단에 [📤 이미지 공유] [⬇ 엑셀 다운로드] 버튼
- html-to-image 로 PNG 캡처 → Web Share API (카톡 등) 또는 PNG 다운로드
- 거래명세표(출고/정산)와 동일한 사용자 경험
[버그 수정 — 품목 모달에 결과 안 나옴]
- /api/m/items/list 의 supply_mng JOIN 캐스팅 누락
· momo_items.vendor_objid (TEXT) vs supply_mng.objid (NUMERIC) 타입 충돌로 SQL 에러 → 빈 배열 응답
- LEFT JOIN supply_mng V ON I.vendor_objid = V.objid::text 로 명시적 캐스팅
[매뉴얼]
- 매입 발주 섹션에 "발주서 공유 / 엑셀 다운로드" 안내 추가
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[화면 — /m/admin/procurements 전면 개편]
- 좌측: 발주서 리스트 (상태 필터, 발주번호, 공급업체, 금액)
- 우측: 발주서 양식 (이미지의 표준 발주서 형태)
· 분류번호/발주서번호/발주일/공급업체 표
· "1. 물품의 표시" 표 (품명·단위·수량·단가·금액)
· "2. 비고" 텍스트 영역
· 합계 자동 계산
- [+ 새 발주] / [발주 요청] 상단 버튼
- 작성중(OPEN) 상태에서만 인라인 편집 가능, 발주요청 후 잠김
[품목 추가 모달]
- 검색 + [공급업체 필터(현재/전체)] + [결과 내 검색]
- 다중 선택 + 헤더 체크박스로 전체 선택
- 이미 담긴 품목은 '이미' 표시
- 한 번에 N개 일괄 추가 (수량 1, 원가는 품목 마스터의 cost_price)
[API 4종 신설]
- POST /api/m/procurements/create-empty: 빈 발주서 1건 생성 (proc_no 자동 부여, status=OPEN)
- POST /api/m/procurements/lines/save: 라인 추가/수정/삭제 + 합계 재집계 (트랜잭션)
· 같은 품목 중복 추가 시 수량 누적
- POST /api/m/procurements/update-header: 공급업체/메모 수정
- POST /api/m/procurements/send: 발주 요청 — status OPEN→REQUESTED + 공급업체 이메일로 발주서 HTML 메일 발송
· 메일 실패해도 상태는 변경 (mailSent/mailError 응답)
[매뉴얼]
- 다-1 매입 발주 단계별 가이드 재작성
- "공급업체별 품목 일괄 불러오기" 팁 추가
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[매뉴얼]
- 영어/기술용어/환경변수 코드 노출 제거
- 초등학생 수준 친절한 설명체로 전면 재작성
- 역할별 시나리오 박스 + 화면 도식 + FAQ 한글 위주
- URL/코드 참조 최소화
[ExtraRow 버그]
- 거래명세표에서 [+ 택배/용차 추가] 클릭해도 인풋 칸의 수량이 화면에 안 바뀌던 문제
- 같은 OBJID 라서 컴포넌트가 unmount 안 되어 useState 초기값 무시되던 케이스
- useEffect 로 line prop 변경 시 인풋 state 동기화
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
URL: https://momotogether.com/manual.html
- 거래처(USER) 가이드: 회원가입 / 출고 요청 / 발주 이력 / 회원정보 수정
- 관리자(ADMIN) 가이드: 발주서 관리·출고처리·거래명세표·인라인 편집·세금계산서 발행
- 마스터 관리: 품목·거래처·매입처·창고·제조사
- 매입/입고: 매입 발주·입고·재고
- 통계: 대시보드·월간/일자별/원가마진 + 엑셀 다운로드
- 전체 업무 흐름도
- FAQ: 택배 라인 / 권한 / 메일 / STUB / 모바일
단일 HTML 파일 — 인쇄 가능, 모바일 대응, 외부 폰트 X
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>