이전 메시지 불러오는 중…
변우석의 요청:
변우석입니다. 14건 구상금 테스트 케이스의 고객/사건을 DB에 시드해야 합니다. 시드 SQL을 작성해 뒀습니다: C:\Users\user\LAX-site\inbox\seed_14cases.sql
내용: clients에 의뢰처 '서울신용보증재단' 1건(중복방지 WHERE NOT EXISTS) + matters 14건(case_type='구상금', status='계약 완료') + matter_parties 14건(주채무자=채무자명). 채무자 상세·금액은 그랜드비스타만 1차판독값, 나머지는 [확인필요] 골격.
부탁:
1. 이 SQL을 테스트 D1(lax-db)과 프로덕션 D1(lax-prod) 양쪽에 적용해 주세요. (프로덕션은 아까처럼 wrangler.toml 스왑 후 원복 방식이 필요할 듯)
2. 적용 전 확인: status 값 '계약 완료'가 crm.tsx STAGES(['접수','계약 대기','계약 완료','착수','종결'])와 정확히 일치하는지(띄어쓰기 포함) 봐주시고, 안 맞으면 STAGES의 정확한 표기로 맞춰서 넣어주세요. clients.status는 'active'가 유효한지도요.
3. 적용 후 검증: matters 14건 + 서울신용보증재단 client 1건 + matter_parties 14건이 들어갔는지 count로 확인하고, /matters 또는 /clients 라이브에서 사건 드롭다운에 14건이 뜨는지(작업대 입력폼에서 선택 가능한지) 확인해 주세요.
4. 멱등성: 이미 돌렸을 때 중복 INSERT되지 않게(특히 재실행 대비) 주의 — clients는 NOT EXISTS로 막았지만 matters는 매번 INSERT됩니다. 한 번만 적용하거나, 재실행 안전하게 처리해 주세요.
결과: 적용된 DB(테스트/프로덕션), 각 테이블 count, 라이브 확인 결과만 간단히 알려주세요.
끝났습니다. 결과 보고합니다.
[무엇을 바꿨나]
- 테스트 D1(lax-db)·프로덕션 D1(lax-prod) 양쪽에 14건 구상금 시드 적용 완료.
- 원본
seed_14cases.sql은 matters가 매 실행 INSERT라 재실행 시 중복 사건이 생기는 구조 → 재실행 안전 버전inbox/seed_14cases_idempotent.sql로 재작성해 적용(matters는 title 기준, parties는 title+name 기준NOT EXISTS가드). 데이터 값(금액·메모 등)은 원본 그대로 유지. - 프로덕션은 별도
wrangler.prod.toml이 있어 스왑/원복 불필요 —--config wrangler.prod.toml로 직접 타겟.
[적용 전 확인]
| 항목 | 결과 |
|---|---|
status '계약 완료' vs crm STAGES |
정확 일치(띄어쓰기 포함) ✓ |
clients.status 'active' 유효성 |
유효 ('active'|'closed') ✓ |
[검증 결과]
| DB | client(서울신용보증재단) | matters | matter_parties | status='계약 완료' |
|---|---|---|---|---|
| 테스트 lax-db | 1 | 14 | 14 | 14 |
| 프로덕션 lax-prod | 1 | 14 | 14 | 14 |
- 멱등성: 테스트 D1에 동일 SQL 재실행 → count 불변(1/14/14). 재실행 안전 확인. ✓
- 라이브(작업대 드롭다운): 소장작업대가 실행하는 실제 쿼리(
WHERE deleted_at IS NULL AND status != '종결' … LIMIT 300)를 양쪽 D1에 그대로 재현 → 14건 모두 노출/선택 가능 확인. ✓ - 한계(정직하게):
/matters페이지 자체는 로그인 인증벽(HTTP 200이나 로그인 화면 리다이렉트)이라 브라우저 렌더 픽셀까지는 직접 못 봤습니다. 대신 UI가 호출하는 바로 그 SQL을 결정적으로 재현해 검증했습니다. 브라우저 픽셀 확인이 필요하시면 로그인 세션으로 한 번 더 봐드리겠습니다.
[롤백 방법]
DB INSERT라 git revert로는 원복 불가. 아래 SQL로 양쪽 DB에서 제거 가능(parties→matters→client 순):
DELETE FROM matter_parties WHERE matter_id IN (SELECT id FROM matters WHERE title LIKE '서울신용보증재단의%');
DELETE FROM matters WHERE title LIKE '서울신용보증재단의%';
-- client는 다른 데이터와 공유될 수 있으니 필요 시에만:
-- DELETE FROM clients WHERE name='서울신용보증재단';
적용 파일: inbox/seed_14cases_idempotent.sql (재실행 안전, 추후 재시드용으로 이걸 쓰세요). 채무자 상세·금액은 그랜드비스타만 1차판독값이고 나머지는 [확인필요] 골격 그대로 들어갔습니다.