본문 바로가기
健康・病気予防

60代からの腸内環境改善と栄養吸収—食べ順を見直す実践的アプローチ

by jyu-genki 2026. 3. 16.
📋 CURSOR INSTRUCTION Goal: scan 유형 결과(A/B/C/D)를 주문에 저장하고 Sonnet 리포트 프롬프트에 컨텍스트로 주입 Steps: Supabase SQL — orders 테이블에 scan_type 컬럼 추가 apps/web/app/scan/page.tsx — CTA 버튼 URL에 scan_type 쿼리 추가 apps/web/app/api/checkout/toss-confirm/route.ts — orders insert 시 scan_type 포함 apps/web/app/api/checkout/bank-transfer/route.ts — orders insert 시 scan_type 포함 apps/web/services/calculators/chapters.ts — userData 블록에 scan_type 컨텍스트 주입 Code: [1] Supabase SQL (대시보드 SQL Editor에서 직접 실행): sqlALTER TABLE orders ADD COLUMN IF NOT EXISTS scan_type VARCHAR(1) CHECK (scan_type IN ('A', 'B', 'C', 'D')); [2] apps/web/app/scan/page.tsx — CTA 버튼 onClick만 교체: typescriptonClick={() => router.push(`/checkout?product=${product}&scan_type=${result}`)} [3] apps/web/app/api/checkout/toss-confirm/route.ts request body에서 scan_type 추출 후 insert에 추가: typescript// 기존 body 파싱 부분에 scan_type 추가 const { ..., scan_type } = await req.json(); // orders insert 객체에 추가 const orderData = { // 기존 필드들 유지 ..., scan_type: scan_type ?? null, }; [4] apps/web/app/api/checkout/bank-transfer/route.ts 동일하게 적용: typescriptconst { ..., scan_type } = await req.json(); const orderData = { // 기존 필드들 유지 ..., scan_type: scan_type ?? null, }; [5] apps/web/services/calculators/chapters.ts generateChapters 함수 시그니처에 scanType 추가 후 userData 블록 끝에 주입: typescript// 유형 매핑 const SCAN_TYPE_CONTEXT: Record = { A: { name: '그믐달형', pattern: '조용히 많은 것을 감당하며 혼자 버텨온 패턴, 감정 억압과 자기희생 경향' }, B: { name: '반달형', pattern: '앎과 행동 사이의 간극, 시작하지만 멈추는 반복 패턴, 심리적 제동' }, C: { name: '보름달형', pattern: '타인에게 너무 많이 주는 패턴, 타인 기준으로 살아온 경향, 에너지 소진' }, D: { name: '초승달형', pattern: '전환점에 선 사람, 기존 방식이 맞지 않음을 느끼지만 방향 미정, 불확실감' }, }; // generateChapters 함수 시그니처 수정 export async function generateChapters( // 기존 파라미터 유지 ..., scanType?: string | null, ) { // 기존 userData 블록 끝에 아래 추가 const scanContext = scanType && SCAN_TYPE_CONTEXT[scanType] ? `\n\n[달빛 유형 진단 결과] 이 사용자는 사전 진단에서 ${SCAN_TYPE_CONTEXT[scanType]!.name}(${scanType}유형)으로 분류되었습니다. 핵심 패턴: ${SCAN_TYPE_CONTEXT[scanType]!.pattern} 리포트 전반에서 이 패턴이 사주·별자리 배치와 어떻게 연결되는지 구체적으로 분석하고, scan 미리보기에서 언급된 심리 패턴의 천문학적·명리학적 뿌리를 짚어주세요.` : ''; // userData 선언 끝에 scanContext 붙이기 const userData = ` ... (기존 내용 유지) ` + scanContext; 그리고 generateChapters를 호출하는 apps/web/services/reportGenerator.ts에서: typescript// orders에서 scan_type 읽어서 전달 await generateChapters( // 기존 파라미터 유지 ..., order.scan_type ?? null, ); Validation: Supabase orders 테이블에 scan_type 컬럼 생성 확인 /scan → 퀴즈 완료 → "달빛 리포트 전체 보기" URL에 ?scan_type=A (또는 B/C/D) 포함 확인 pnpm run build (apps/web) 통과 확인 무통장 주문 생성 시 Supabase orders row에 scan_type 값 저장 확인 (Toss는 라이브 후) Dependencies: 없음 (Supabase SQL만 먼저 실행)