feat(survey): lib/survey/types — SurveyStep, SurveyResponse, SavedProgress
7 질문 step 정의 + 응답 객체 타입. survey_responses 테이블과 1:1 대응. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
51
lib/survey/types.ts
Normal file
51
lib/survey/types.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* CONTOUR 설문 타입.
|
||||
* survey_responses 테이블 스키마와 1:1 대응.
|
||||
*/
|
||||
|
||||
export type SurveyStep =
|
||||
| 'intro'
|
||||
| 'q1'
|
||||
| 'q2'
|
||||
| 'q3'
|
||||
| 'q4'
|
||||
| 'q5'
|
||||
| 'q6'
|
||||
| 'q7'
|
||||
| 'thanks';
|
||||
|
||||
export const QUESTION_STEPS: SurveyStep[] = ['q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7'];
|
||||
export const TOTAL_QUESTIONS = QUESTION_STEPS.length; // 7
|
||||
|
||||
export interface SurveyResponse {
|
||||
// Q1
|
||||
age_range?: string;
|
||||
status?: string;
|
||||
// Q2
|
||||
awareness_freq?: string;
|
||||
// Q3
|
||||
tools_used?: string[];
|
||||
tools_other?: string;
|
||||
// Q4
|
||||
cost_range?: string;
|
||||
// Q5
|
||||
best_tool?: string;
|
||||
best_satisfy?: number;
|
||||
// Q6
|
||||
free_opinion?: string;
|
||||
// Q7
|
||||
email?: string;
|
||||
// 메타 (제출 시 자동 채워짐)
|
||||
user_agent?: string;
|
||||
referrer?: string;
|
||||
utm_source?: string;
|
||||
utm_medium?: string;
|
||||
utm_campaign?: string;
|
||||
completion_seconds?: number;
|
||||
}
|
||||
|
||||
export interface SavedProgress {
|
||||
step: SurveyStep;
|
||||
response: SurveyResponse;
|
||||
startedAt: number; // ms epoch
|
||||
}
|
||||
Reference in New Issue
Block a user