o2o-negosium-original/scripts/seed_demo_card_usage.sql
Mina Choi 03322d6ca3 [feat] negodata: 카드 성공률 순위·상품 엑셀 TO-BE 싱크·회사설정 JSON 입출력·목록 포털형 UI
- 협상카드 성공률(사용 세션 대비 타결) 집계 추가, 견적 생성 카드선택 순위 정렬·통계 TOP5
- 상품 엑셀: 품목코드·모델명 라벨화, 리드타임 suffix 제거, 공급사 컬럼 신설(등록 후 supplier_items 매핑)
- 설정 화면 JSON 불러오기/내보내기(빈 값은 미갱신), IMK 설정 JSON 보관
- 설정·회원 페이지 새로고침 forbidden 수정(자식 loader 가 initAuth 대기)
- 협력사·견적 목록도 포털형 카드(툴바+테이블 결합)로 통일
2026-07-22 17:27:23 +09:00

37 lines
1.4 KiB
SQL

-- 데모용 카드 사용 이력 시드 (#12 카드 성공률 순위)
-- 과거 채팅 302건은 카드 메타(card_id/card_type/card_used_yn) 저장 전에 쌓여 전부 NULL 이라
-- 성공률 표본이 0 → 카드 선택 UI 에 순위가 뜨지 않는다. 실제 세션 결과(status)는 그대로 두고
-- 봇 발화 행에만 카드를 결정적으로 배정해 표본을 만든다. 멱등(같은 chat_id → 같은 카드).
WITH bot AS (
SELECT c.chat_id,
c.session_id,
row_number() OVER (PARTITION BY c.session_id ORDER BY c.seq) AS rn
FROM negotiation.chats c
WHERE c.sender = 1 AND c.deleted = false
),
sess AS (
SELECT session_id, row_number() OVER (ORDER BY session_id) AS sn
FROM negotiation.sessions
),
cards AS (
SELECT nego_card_id,
row_number() OVER (ORDER BY (number)::int) AS cn,
count(*) OVER () AS total
FROM card.nego_cards
),
pick AS (
-- 세션당 앞쪽 봇 발화 4개까지 카드 사용으로 표시. 세션·발화 순번을 섞어 카드가 고르게 퍼지게.
SELECT b.chat_id,
((s.sn * 3 + b.rn) % (SELECT max(total) FROM cards)) + 1 AS cn
FROM bot b
JOIN sess s ON s.session_id = b.session_id
WHERE b.rn <= 4
)
UPDATE negotiation.chats t
SET card_id = c.nego_card_id,
card_type = 1,
card_used_yn = true
FROM pick p
JOIN cards c ON c.cn = p.cn
WHERE t.chat_id = p.chat_id;