증거(진단)와 처방(할 일)을 한 페이지에 두면 스크롤이 너무 길어져
둘 다 읽기 힘들다는 지적에 따라 단계를 나눴다.
- /actions/:id 신규: Action Plan(P0~P2) + What We Don't Sell + 빌드 제안
(ActionPlanSection·IntegritySection 신규 컴포넌트, Tag는 두 페이지가
같이 써서 공용 컴포넌트로 뺌)
- /discovery/🆔 위 섹션 제거, 진단(점수·근거·Scorecard·Rubric)만 남김.
페이지 맨 아래 중복으로 박혀 있던 확인 항목 패널(ClinicInputsPanel)도
제거 — /supporters/:id 전용 단계가 이미 있어 두 번 보여줄 필요가 없었다
- 진단 데이터가 없는 병원이 /actions/:id 로 오면 /discovery/:id 로 되돌림
- ClinicNav: 5단계로 확장(진단 리포트→개선 제안→사이트 빌드→사진 확인→
확인 항목), 다음 단계 플로팅 버튼 추가(기존엔 이전 단계만 있었다)
- App.tsx: 라우트 전환 시 스크롤을 맨 위로 되돌림. 스크롤을 내린 채
다음 단계를 누르면 새 페이지가 같은 위치(짧으면 빈 하단)에서 시작하던
문제 수정. 인앱 해시 앵커(#breakdown)가 있으면 건드리지 않음
- 사이트 빌드/확인 항목 화면의 미리보기 버튼을 "초안 사이트 열기"로
통일(공개 후에는 "공개본 사이트 열기")
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54 lines
2.5 KiB
TypeScript
54 lines
2.5 KiB
TypeScript
/**
|
|
* 개선 제안(/actions/:id) 2부: 하지 않을 것 + 측정 조건.
|
|
* "이 개선안이 무엇을 안 파는지"라 처방 쪽 내용이다. 진단 리포트에서 옮겨왔다.
|
|
*/
|
|
import { SectionWrapper } from '../report/ui/SectionWrapper';
|
|
import { CheckFilled, CrossFilled } from '../icons/FilledIcons';
|
|
import type { DiscoveryResult } from '../../types/discovery';
|
|
|
|
export function IntegritySection({ result }: { result: DiscoveryResult }) {
|
|
return (
|
|
<SectionWrapper
|
|
id="integrity"
|
|
title="What We Don't Sell"
|
|
subtitle="근거 없는 것은 팔지 않는다. 이 리포트의 정직성 규약"
|
|
dark
|
|
>
|
|
<div className="grid lg:grid-cols-2 gap-6">
|
|
<div className="on-light bg-white rounded-2xl shadow-[3px_4px_12px_rgba(0,0,0,0.06)] p-6 text-[#0A1128]">
|
|
<h3 className="text-xl font-bold mb-4 font-sans text-[#0A1128]!">하지 않을 것</h3>
|
|
<ul className="space-y-4">
|
|
{result.notDoing.map((n) => (
|
|
<li key={n.item} className="flex gap-3">
|
|
<span className="shrink-0 text-[#D4889A] mt-0.5"><CrossFilled size={18} /></span>
|
|
<div>
|
|
<p className="text-base font-semibold">{n.item}</p>
|
|
<p className="ui-note mt-0.5">{n.reason}</p>
|
|
</div>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
<div className="on-light bg-white rounded-2xl shadow-[3px_4px_12px_rgba(0,0,0,0.06)] p-6 text-[#0A1128]">
|
|
<h3 className="text-xl font-bold mb-4 font-sans text-[#0A1128]!">측정 조건</h3>
|
|
<ul className="space-y-3">
|
|
{result.conditions.map((c) => (
|
|
<li key={c} className="flex gap-3">
|
|
<span className="shrink-0 text-[#9B8AD4] mt-0.5"><CheckFilled size={18} /></span>
|
|
<p className="ui-body">{c}</p>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
<div className="mt-6 rounded-xl p-4 bg-[linear-gradient(to_right,#fff3eb,#e4cfff,#f5f9ff)]">
|
|
<p className="text-sm text-slate-600 leading-relaxed">
|
|
점수는 <strong>검증된 항목만</strong>으로 정규화했습니다. 미검증 항목(강남언니·GBP·GA4·로그)을
|
|
확인하면 점수가 오를 수도, 내릴 수도 있습니다. 이 리포트는 답변엔진 노출을 보장하지 않으며,
|
|
크롤러 접근·엔티티·콘텐츠 구조라는 <strong>전제조건</strong>의 충족 여부를 진단합니다.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</SectionWrapper>
|
|
);
|
|
}
|