feat(cupang): 박스 계산 임시 저장 / 불러오기
계산 중 화면 상태를 서버에 이름 붙여 저장하고 다시 불러온다. 다른 PC 에서도
이어서 작업할 수 있어야 해서 localStorage 대신 DB 에 둔다.
저장 대상은 화면 스냅샷(입력 품목·열어둔 센터·분배 내역·도장 상태)뿐이고,
박스 수는 불러온 뒤 기존 계산 API 로 서버에서 다시 구한다. 저장값을 그대로
믿지 않으므로 입수량 규칙이 바뀌어도 어긋나지 않고, 계산 결과에서 사라진
항목은 제외한 건수를 알려준다. 같은 제목으로 저장하면 덮어써 목록이 무한히
늘어나지 않는다.
- scripts/sql/cupang_db_003_box_calc_drafts.sql (신규 테이블 + 권한, 멱등)
- db.py: list/get/save/delete_box_calc_draft
- router: GET·POST /cupang/api/box-calc/drafts, GET·DELETE /{id}
- box_calc.html: [임시 저장]·[불러오기] 버튼 + 목록 대화상자
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
-- =====================================================================
|
||||
-- cupang_db 마이그레이션 003 — 박스 계산 임시 저장 (cupang_box_calc_drafts)
|
||||
-- =====================================================================
|
||||
-- 사유: 박스 계산 화면(①입력 / ②요약 / ③센터 분배)의 작업 중 상태를
|
||||
-- 이름 붙여 서버에 저장하고 나중에 다시 불러오기 위함.
|
||||
-- payload 는 화면 상태 스냅샷(JSONB): 입력 품목·열어둔 센터·분배 내역.
|
||||
-- 박스 수 계산 자체는 불러온 뒤 서버에서 다시 수행한다(값 신뢰 안 함).
|
||||
--
|
||||
-- 멱등: CREATE TABLE IF NOT EXISTS / CREATE INDEX IF NOT EXISTS.
|
||||
-- 기존 데이터를 지우지 않는다. DROP/TRUNCATE 없음.
|
||||
--
|
||||
-- 실행:
|
||||
-- docker exec -i postgres-db psql -U postgres -d cupang_db \
|
||||
-- < /opt/www/main/scripts/sql/cupang_db_003_box_calc_drafts.sql
|
||||
--
|
||||
-- 확인:
|
||||
-- docker exec -i postgres-db psql -U postgres -d cupang_db \
|
||||
-- -c "\d cupang_box_calc_drafts"
|
||||
-- =====================================================================
|
||||
|
||||
\set ON_ERROR_STOP on
|
||||
\connect cupang_db
|
||||
|
||||
CREATE TABLE IF NOT EXISTS cupang_box_calc_drafts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
payload JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_by TEXT NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_cupang_box_calc_drafts_updated
|
||||
ON cupang_box_calc_drafts (updated_at DESC);
|
||||
|
||||
DROP TRIGGER IF EXISTS trg_cupang_box_calc_drafts_updated ON cupang_box_calc_drafts;
|
||||
CREATE TRIGGER trg_cupang_box_calc_drafts_updated
|
||||
BEFORE UPDATE ON cupang_box_calc_drafts
|
||||
FOR EACH ROW EXECUTE FUNCTION cupang_set_updated_at();
|
||||
|
||||
-- 앱 계정 권한 (init 스크립트와 동일하게 CRUD 만)
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON cupang_box_calc_drafts TO cupang_app;
|
||||
GRANT USAGE, SELECT ON SEQUENCE cupang_box_calc_drafts_id_seq TO cupang_app;
|
||||
|
||||
SELECT 'cupang_db 003 done' AS status;
|
||||
Reference in New Issue
Block a user