-- 데모용 카드 사용 이력 시드 (#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;