> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 작업 API 및 복구

새 작업을 만들지 않고 불확실한 제출을 복구하세요.

## 시작하기 전에

파일 → 폴더 열기를 사용하여 Visual Studio Code에서 다운로드한 supastack 프로젝트를 연 다음 터미널 → 새 터미널을 선택합니다. 저장소 루트는 package.json, 앱 및 패키지가 포함된 폴더입니다. 아래 명령을 실행하고 터미널을 열어 두십시오. 명령이 인식되지 않으면 계속하기 전에 도구 설치 가이드를 완료하세요.

먼저 플랫폼 튜토리얼을 읽어보세요. 서버는 브라우저 또는 전화 요청에 응답하는 앱 프로세스입니다. 웹은 apps/web/.env.local를 읽고, Expo는 apps/mobile/.env.local를 읽고, 데이터베이스 마이그레이션 명령은 루트 .env를 읽습니다. 데이터베이스 없는 /dashboard 데모는 Postgres를 마이그레이션해야 하는 실제 /auth 계정과 별개입니다. 전화 또는 데스크톱 전용 결제에는 별도로 실행되는 웹 백엔드가 필요합니다.

[도구 설치 및 코드 받기](https://supastack.dev/ko/docs/web/before-you-start.md)

[명령, 파일 및 구성 알아보기](https://supastack.dev/ko/docs/web/terminal-basics.md)

[웹 첫 실행 튜토리얼 완료](https://supastack.dev/ko/docs/web/ship-in-5-minutes.md)

```
corepack pnpm --filter @supastack/web dev
```


## 설치 및 설정

POST /api/ai/tasks는 인증된 워크스페이스와 활성 권한이 필요합니다. 키가 있는 요청은 디스패치 전에 불변의 작업을 예약합니다. Idempotency-Key는 16~128자의 ASCII 문자, 숫자, 밑줄, 하이픈을 허용합니다.

```
POST /api/ai/tasks
Idempotency-Key: a-stable-client-submission-key

Recovery body: { "resume": true }
Status: GET /api/ai/tasks/{taskId}
```


## 구현 워크플로

제출 전에 복구 키를 영속화하세요. 불확실한 디스패치 후에는 같은 키와 resume 본문을 재사용하세요. 서버는 원래 입력을 로드하고 같은 작업 범위 Trigger ID로 재시도합니다. 같은 키로 수정된 입력은 409 idempotencyConflict를 반환합니다.

모호한 enqueue 후의 HTTP 202는 디스패치가 불확실하다는 의미입니다. Trigger가 작업을 수락했다는 증명이 아닙니다. 이미 실행 중이거나 종료된 작업은 다른 enqueue 없이 저장된 상태를 반환합니다. 복구는 여전히 인증, 소유권, 권한이 필요합니다.


## 검증 및 문제 해결

손실된 응답, 수정된 입력 충돌, 다른 워크스페이스의 요청, 새로고침 후 복원을 실행하세요. 자동 outbox 디스패처도 종단 간 exactly-once 보장도 없습니다. 부작용을 조사하지 않고 실행 중인 작업을 재큐하지 마세요.


## 다음

[Trigger.dev 작업](https://supastack.dev/ko/docs/modules/jobs.md)
