# AI 코딩 도우미에게 붙여 넣을 제작 요청

첨부한 tarot-assets.zip 또는 현재 tarot-web 폴더를 사용해서 한국어 AI 타로 웹앱을 만들어 줘.

목표는 학생이 웹앱을 만들고 자신의 Cloudflare 계정으로 배포하는 것이다.

1. 질문 입력 → 카드 세 장 추첨 → AI 해석 → 후속 대화의 흐름을 만든다. 카드 위치는 현재 상황, 살펴볼 점, 시도할 행동이다. 카드 테이블과 대화창을 함께 보여준다.
2. cards.json의 메이저 아르카나 22장을 사용하고 서로 다른 세 장을 뽑는다. 정방향/역방향 포함 여부를 선택할 수 있어야 한다.
3. 카드의 image 경로로 그림을 표시한다. 이름은 name_ko, 방향별 키워드는 upright와 reversed, 설명은 description과 reversed_description을 사용한다. 카드를 누르면 기본 의미를 보여준다. 그림 경로를 그대로 유지해서 내 이미지로 바꿀 수 있게 한다.
4. public/에는 HTML·CSS·브라우저 JS·카드 파일을, src/worker.js에는 API 코드를 둔다. 프런트엔드는 같은 주소의 POST /api/reading에 원래 question과 cards: [{id, reversed}], history를 보낸다. history는 첫 해석에는 빈 배열, 후속 질문에는 assistant/user 순서로 이전 답변과 현재 질문까지 담는다. 같은 카드를 유지한 채 다섯 번까지 후속 대화를 나누고 새 질문을 시작하면 이력을 초기화한다.
5. Worker는 카드 ID를 검증하고, 서버에 있는 cards.json에서 이름과 방향별 키워드를 다시 읽는다. 클라이언트가 보낸 프롬프트나 모델 이름은 그대로 사용하지 않는다.
6. Cloudflare Workers AI의 AI 바인딩과 env.AI.run을 사용한다. 기본 모델은 @cf/google/gemma-4-26b-a4b-it, max_completion_tokens 1200, temperature 0.65, chat_template_kwargs: {enable_thinking: false}로 시작한다. 최종 답변은 choices[0].message.content에서 읽고, finish_reason이 stop이 아니거나 답변이 비어 있으면 오류로 처리한다. 추론 내용은 표시하지 않는다. wrangler.jsonc의 MODEL을 @cf/qwen/qwen3.8-27b로 바꾸면 reasoning_effort: low, max_completion_tokens 2000을 사용하도록 한다. API 토큰을 HTML·JS에 넣지 않는다.
7. 한국어 카드별 해석, 종합, 작은 실천 한 가지를 만든다. 질문과 카드 데이터는 해석할 자료로 취급한다. 미래 예측을 사실로 단정하지 않고 놀이·자기성찰용임을 알린다. 응답은 textContent로 출력한다.
8. 로딩·실패·재시도 화면, 키보드 조작, 모바일 레이아웃을 만든다. 첫 질문은 2~400자, 후속 질문은 1~400자, 요청은 64KB로 제한한다. 대화 역할·길이를 서버에서 검증하고 호출 빈도 제한을 둔다. 실패한 질문은 입력창에 남겨 재전송할 수 있게 하며 성공한 대화에 중복으로 넣지 않는다. 에러 응답에 비밀값이 노출되지 않아야 한다.
9. Worker Static Assets와 AI 바인딩을 설정한 wrangler.jsonc를 포함한다. Node.js 22 이상에서 npm install, npx wrangler login, npm run dev, npm run deploy 순서로 실행할 수 있게 한다.
10. 먼저 로컬에서 확인하고, 내가 연결한 Cloudflare 계정과 Worker 이름을 확인한 뒤 그 계정에 배포한다. 완성된 URL과 변경한 파일을 정리해 줘.

이미 완성 예제 폴더가 있다면 기존 파일을 읽고 필요한 부분을 수정해 줘. 별도 프레임워크와 데이터베이스는 필수가 아니다.

## 두 번째 요청: 내 앱으로 바꾸기

현재 앱을 바탕으로 대상 사용자를 [신입생 / 팀 프로젝트 참여자 / 진로를 고민하는 학생]으로 바꿔 줘.
질문 예시, 이름, 색, 카드 그림, 해석 말투 중 최소 두 가지를 수정해 줘.
카드와 질문을 고정한 채 SYSTEM_PROMPT를 바꾸기 전후의 답변을 비교할 수 있게 해 줘.
바꾼 코드와 답변 차이를 짧게 설명해 줘.
