// screens/revisit.jsx — 재방문 관리 / 알림톡 자동 발송 function RevisitScreen({ setRoute }) { const Icons = window.Icons; const [filter, setFilter] = React.useState("all"); const [selected, setSelected] = React.useState("rv-1"); const stages = [ { v: "all", l: "전체", count: REVISITS.length }, { v: "pending", l: "예약대기", count: 2 }, { v: "sent", l: "발송완료", count: 1 }, { v: "booked", l: "예약완료", count: 1 }, { v: "scheduled", l: "발송예정", count: 1 }, ]; const sel = REVISITS.find(r => r.id === selected) || REVISITS[0]; // Mock retention chart data (28 days) const RETAIN_DATA = [82, 79, 80, 78, 77, 76, 78, 80, 82, 81, 79, 78, 76, 73, 71, 72, 74, 77, 80, 83, 85, 86, 84, 82, 80, 78, 77, 76]; return (
08 · 재방문 관리 · 알림톡 자동 발송

개인화 재방문 큐 — {REVISITS.length}명 대기

시술 후 효과 감소 시점·패키지 잔여·방문 주기를 기반으로 AI가 재방문 적기를 산출하고 알림톡·카톡 채널을 통해 맞춤 메시지를 자동 발송합니다.

{/* KPI strip */}
{/* LEFT — Queue list */}
({ v: s.v, l: `${s.l} ${s.count}` }))} value={filter} onChange={setFilter} />
정렬: AI 우선순위
{REVISITS.map(r => ( setSelected(r.id)} style={{ cursor: "pointer", background: selected === r.id ? "var(--bg-subtle)" : undefined }}> ))}
환자 / 이슈 마지막 방문 제안 일정 신뢰도 상태
{r.patient}
{r.concern}
{r.lastVisit}
{r.suggestedDate.split(" ")[0].slice(5)}
{r.suggestedDate.split(" ")[1]}
= 85 ? "var(--good)" : "var(--watch)" }}>
{r.confidence}
{r.status}
{/* Retention chart */}
76%
현재 평균 효과 유지율
D-12
효과 감소 임계 도달 평균
{/* RIGHT — Message preview */}

알림톡 메시지 (자동 생성)

{sel.channel}
{/* Phone preview */}
9:41 알림톡 · 안양 강남점
[안양피부과] {sel.patient.split(" ")[0]} 고객님께
지난 {sel.lastVisit} 진행하신 시술 효과가 잘 유지되고 있는 시점입니다.

AI 분석 결과, {sel.suggestedDate}경 다음 회차({sel.nextTreatment})를 진행하시면 누적 효과가 가장 잘 안정화됩니다.

패키지 잔여 회차는 2회입니다.
예약 가능 시간대
{["수 14:00", "수 16:30", "금 11:00", "토 10:30"].map(t => {t})}
{[ { ch: "알림톡 (카카오)", sent: 184, conv: 0.48, color: "#FDEB6E" }, { ch: "카톡 채널", sent: 62, conv: 0.61, color: "#FDD835" }, { ch: "SMS (LMS)", sent: 28, conv: 0.21, color: "#E0E0E0" }, { ch: "실장 직접 콜", sent: 10, conv: 0.83, color: "var(--data-blue)" }, ].map((c, i) => (
{c.ch} {c.sent}건 {Math.round(c.conv * 100)}% 전환
))}
); } window.RevisitScreen = RevisitScreen;