@readerseye2/cr_type 1.0.92 → 1.0.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,85 +1,88 @@
1
1
  /** 언어 */
2
- export type BookLanguage = "ko" | "en";
2
+ export type BookLanguage = 'ko' | 'en';
3
+ /** 길이 */
4
+ export type BookLength = 'short' | 'medium' | 'long';
5
+ /** 종류 */
6
+ export type BookGenre = 'fiction' | 'non-fiction' | 'other';
7
+ /** 영어레벨 (영어책 전용) */
8
+ export type BookEnLevel = 'story' | 'readers' | 'early-chapter' | 'middle-chapter' | 'chapter' | 'novel';
9
+ /** 출판 연령등급 */
10
+ export type PublishAgeRating = 'all' | '12' | '15' | '19';
11
+ /** 책 상태 (라이프사이클) */
12
+ export type BookStatus = 'draft' | 'pending' | 'published' | 'suspended';
13
+ /** MySQL book 테이블 매핑 (단일 테이블) */
14
+ export interface Book {
15
+ book_idx: number;
16
+ creator_idx: number;
17
+ status: BookStatus;
18
+ book_title: string;
19
+ book_language: BookLanguage;
20
+ book_level: number;
21
+ book_cover_url: string | null;
22
+ genre: BookGenre | null;
23
+ length: BookLength | null;
24
+ en_level: BookEnLevel | null;
25
+ ar_index: number | null;
26
+ lexile_index: number | null;
27
+ series: string | null;
28
+ original_author: string | null;
29
+ description: string | null;
30
+ original_publish_date: string | null;
31
+ original_publisher: string | null;
32
+ isbn: string | null;
33
+ word_count: number | null;
34
+ sound_minutes: number | null;
35
+ section_count: number | null;
36
+ price_point: number | null;
37
+ age_rating: PublishAgeRating;
38
+ quiz_retry_allowed: boolean;
39
+ isdeleted: boolean;
40
+ created_at: string;
41
+ updated_at: string;
42
+ published_at: string | null;
43
+ }
3
44
  export declare const BookLanguageLabel: {
4
45
  readonly ko: "한국어";
5
46
  readonly en: "English";
6
47
  };
7
- /** @deprecated BookLanguage 사용 권장 */
8
- export declare enum BookLanguageCode {
9
- KO = "ko",
10
- EN = "en"
11
- }
12
- /** 권장 연령 범위 (5~19세) */
13
- export declare const BOOK_AGE_MIN = 5;
14
- export declare const BOOK_AGE_MAX = 19;
15
- /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
16
- export declare const BOOK_LEVEL_MIN = 5;
17
- /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
18
- export declare const BOOK_LEVEL_MAX = 19;
19
- /** 길이 */
20
- export type BookLength = "short" | "medium" | "long";
21
48
  export declare const BookLengthLabel: {
22
49
  readonly short: "단편";
23
50
  readonly medium: "중편";
24
51
  readonly long: "장편";
25
52
  };
26
- /** 종류 (단순화) */
27
- export type BookGenre = "fiction" | "non-fiction" | "other";
28
53
  export declare const BookGenreLabel: {
29
54
  readonly fiction: "문학";
30
- readonly "non-fiction": "비문학";
55
+ readonly 'non-fiction': "비문학";
31
56
  readonly other: "기타";
32
57
  };
33
- /** @deprecated BookGenre type 사용 권장 */
34
- export declare enum BookGenreEnum {
35
- FICTION = "fiction",
36
- NON_FICTION = "non-fiction",
37
- FAIRY_TALE = "fairy-tale",
38
- EDUCATIONAL = "educational",
39
- SCIENCE = "science",
40
- HISTORY = "history",
41
- BIOGRAPHY = "biography",
42
- POETRY = "poetry",
43
- OTHER = "other"
44
- }
45
- /** 영어레벨 (영어책 전용) */
46
- export type BookEnLevel = "story" | "readers" | "early-chapter" | "middle-chapter" | "chapter" | "novel";
47
58
  export declare const BookEnLevelLabel: {
48
59
  readonly story: "스토리";
49
60
  readonly readers: "리더스";
50
- readonly "early-chapter": "얼리챕터";
51
- readonly "middle-chapter": "미들챕터";
61
+ readonly 'early-chapter': "얼리챕터";
62
+ readonly 'middle-chapter': "미들챕터";
52
63
  readonly chapter: "챕터";
53
64
  readonly novel: "노블";
54
65
  };
55
- /** 출판 연령등급 (플랫폼 정책용) */
56
- export type PublishAgeRating = "all" | "12" | "15" | "19";
57
66
  export declare const PublishAgeRatingLabel: {
58
67
  readonly all: "전체이용가";
59
- readonly "12": "12세 이용가";
60
- readonly "15": "15세 이용가";
61
- readonly "19": "19세 이용가";
68
+ readonly '12': "12세 이용가";
69
+ readonly '15': "15세 이용가";
70
+ readonly '19': "19세 이용가";
62
71
  };
63
- /** @deprecated PublishAgeRating 사용 권장 */
64
- export declare enum BookAgeGrade {
65
- ALL = "all",
66
- AGE_7 = "7+",
67
- AGE_12 = "12+",
68
- AGE_15 = "15+",
69
- AGE_19 = "19+"
70
- }
72
+ /** 권장 연령 범위 (5~19세) */
73
+ export declare const BOOK_AGE_MIN = 5;
74
+ export declare const BOOK_AGE_MAX = 19;
71
75
  /** 새 책 생성 시 기본값 */
72
76
  export declare const DEFAULT_BOOK_META: {
73
- readonly title: "나의 책";
74
- readonly language: BookLanguage;
75
- readonly age: 5;
77
+ readonly book_title: "나의 책";
78
+ readonly book_language: BookLanguage;
79
+ readonly book_level: 5;
76
80
  readonly length: BookLength;
77
81
  readonly genre: BookGenre;
78
82
  readonly quiz_retry_allowed: true;
79
83
  readonly ar_index: 3;
80
84
  readonly lexile_index: 600;
81
85
  };
82
- /** AR / Lexile 범위 매칭 규칙: min <= value <= max */
83
86
  /** AR 지수 범위별 설명 (소수점 1자리 기준) */
84
87
  export declare const AR_INDEX_RANGES: readonly [{
85
88
  readonly min: 0;
@@ -174,7 +177,7 @@ export declare const LEXILE_INDEX_RANGES: readonly [{
174
177
  readonly level: "성인";
175
178
  readonly description: "학술·고전 문학";
176
179
  }];
177
- /** AR 지수로 해당 범위 설명 조회 (min <= value <= max) */
180
+ /** AR 지수로 해당 범위 설명 조회 */
178
181
  export declare const getARDescription: (ar: number) => {
179
182
  readonly min: 0;
180
183
  readonly max: 1.9;
@@ -221,7 +224,7 @@ export declare const getARDescription: (ar: number) => {
221
224
  readonly level: "고급";
222
225
  readonly description: "성인 소설·고전";
223
226
  } | undefined;
224
- /** Lexile 지수로 해당 범위 설명 조회 (min <= value <= max) */
227
+ /** Lexile 지수로 해당 범위 설명 조회 */
225
228
  export declare const getLexileDescription: (lexile: number) => {
226
229
  readonly min: 0;
227
230
  readonly max: 200;
@@ -300,134 +303,3 @@ export declare const getAgeOptions: () => {
300
303
  value: number;
301
304
  label: string;
302
305
  }[];
303
- /** Draft 책 메타 (MongoDB) */
304
- export interface DraftBookMeta {
305
- draft_book_idx: number;
306
- title: string;
307
- language: BookLanguage;
308
- age: number;
309
- length: BookLength;
310
- genre?: BookGenre;
311
- quiz_retry_allowed?: boolean;
312
- ar_index?: number;
313
- lexile_index?: number;
314
- series?: string;
315
- cover_url?: string;
316
- en_level?: BookEnLevel;
317
- tags?: string[];
318
- description?: string;
319
- original_author?: string;
320
- original_publish_date?: string;
321
- original_publisher?: string;
322
- isbn?: string;
323
- updated_at: string;
324
- }
325
- /** 출판된 책 메타 (MongoDB) */
326
- export interface BookMeta extends DraftBookMeta {
327
- book_idx: number;
328
- source_draft_book_idx: number;
329
- creator_idx: number;
330
- creator_name?: string;
331
- price_point: number;
332
- age_rating: PublishAgeRating;
333
- free_section_arr?: number[];
334
- word_count?: number;
335
- sound_minutes?: number;
336
- section_count?: number;
337
- published_at: string;
338
- }
339
- /** 오디오 메타 정보 (TTS 설정) */
340
- export type AudioMeta = {
341
- provider: "AWS" | "GCP";
342
- language?: "en-US" | "ko-KR";
343
- engine?: "neural" | "standard" | "long-form";
344
- voiceName?: string;
345
- voiceGender?: "Male" | "Female";
346
- };
347
- /** 섹션 요약 정보 */
348
- export interface SectionSummary {
349
- sectionId: string;
350
- title: string;
351
- order: number;
352
- audioCount: number;
353
- imageCount: number;
354
- quizCount: number;
355
- wordCount: number;
356
- soundMinutes?: number;
357
- isAddedSplit?: boolean;
358
- isAddedAudio?: boolean;
359
- isAddedQuiz?: boolean;
360
- updatedAt?: string;
361
- audioMeta?: AudioMeta;
362
- }
363
- /** 책 기본 정보 (리스트용) - Legacy */
364
- export interface BookShort {
365
- id: string;
366
- title: string;
367
- author: string;
368
- coverUrl: string;
369
- language: BookLanguageCode;
370
- level: number;
371
- genre: string;
372
- wordCount?: number;
373
- soundMinutes?: number;
374
- rating?: number;
375
- }
376
- /** 책 상세 정보 - Legacy */
377
- export interface BookDetail extends BookShort {
378
- description?: string;
379
- tags?: string[];
380
- ageGrade?: BookAgeGrade;
381
- isbn?: string;
382
- originalPublisher?: string;
383
- originalPublishDate?: string;
384
- edition?: string;
385
- quizRetryAllowed?: boolean;
386
- toc?: string[];
387
- rating?: number;
388
- publishedAtText?: string;
389
- priceText?: string;
390
- sections?: SectionSummary[];
391
- sectionOrder?: string[];
392
- }
393
- /** 섹션 요약 - API 응답용 */
394
- export interface SectionSummaryResponse {
395
- section_id: string;
396
- title: string;
397
- order: number;
398
- audio_count: number;
399
- image_count: number;
400
- quiz_count: number;
401
- word_count: number;
402
- sound_minutes?: number;
403
- is_added_split?: boolean;
404
- is_added_audio?: boolean;
405
- is_added_quiz?: boolean;
406
- updated_at?: string;
407
- }
408
- /** Draft 책 정보 - API 응답용 (Legacy) */
409
- export interface DraftBookResponse {
410
- draft_book_idx: number;
411
- draft_book_title: string;
412
- draft_book_language: BookLanguageCode;
413
- draft_book_level: number;
414
- draft_book_cover_url: string | null;
415
- draft_book_create_date?: string;
416
- draft_book_update_date: string;
417
- draft_book_author?: string | null;
418
- draft_book_age_grade?: BookAgeGrade | null;
419
- draft_book_genre?: string | null;
420
- draft_book_tags?: string[] | null;
421
- draft_book_description?: string | null;
422
- draft_book_original_publish_date?: string | null;
423
- draft_book_original_publisher?: string | null;
424
- draft_book_edition?: string | null;
425
- draft_book_isbn?: string | null;
426
- draft_book_word_count?: number | null;
427
- draft_book_sound_minutes?: number | null;
428
- draft_book_quiz_retry_allowed?: boolean;
429
- draft_book_ar_index?: number | null;
430
- draft_book_lexile_index?: number | null;
431
- draft_book_sections?: SectionSummaryResponse[];
432
- draft_book_section_order?: string[];
433
- }
@@ -1,112 +1,80 @@
1
1
  "use strict";
2
- // ========== 기본 타입 ==========
2
+ // ========== 리터럴 유니온 타입 ==========
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getAgeOptions = exports.getAgeRatingOptions = exports.getEnLevelOptions = exports.getGenreOptions = exports.getLengthOptions = exports.getLanguageOptions = exports.calcSoundMinutes = exports.getLexileDescription = exports.getARDescription = exports.LEXILE_INDEX_RANGES = exports.AR_INDEX_RANGES = exports.DEFAULT_BOOK_META = exports.BookAgeGrade = exports.PublishAgeRatingLabel = exports.BookEnLevelLabel = exports.BookGenreEnum = exports.BookGenreLabel = exports.BookLengthLabel = exports.BOOK_LEVEL_MAX = exports.BOOK_LEVEL_MIN = exports.BOOK_AGE_MAX = exports.BOOK_AGE_MIN = exports.BookLanguageCode = exports.BookLanguageLabel = void 0;
4
+ exports.getAgeOptions = exports.getAgeRatingOptions = exports.getEnLevelOptions = exports.getGenreOptions = exports.getLengthOptions = exports.getLanguageOptions = exports.calcSoundMinutes = exports.getLexileDescription = exports.getARDescription = exports.LEXILE_INDEX_RANGES = exports.AR_INDEX_RANGES = exports.DEFAULT_BOOK_META = exports.BOOK_AGE_MAX = exports.BOOK_AGE_MIN = exports.PublishAgeRatingLabel = exports.BookEnLevelLabel = exports.BookGenreLabel = exports.BookLengthLabel = exports.BookLanguageLabel = void 0;
5
+ // ========== 라벨 (UI 표시용) ==========
5
6
  exports.BookLanguageLabel = {
6
- ko: "한국어",
7
- en: "English",
7
+ ko: '한국어',
8
+ en: 'English',
8
9
  };
9
- /** @deprecated BookLanguage 사용 권장 */
10
- var BookLanguageCode;
11
- (function (BookLanguageCode) {
12
- BookLanguageCode["KO"] = "ko";
13
- BookLanguageCode["EN"] = "en";
14
- })(BookLanguageCode || (exports.BookLanguageCode = BookLanguageCode = {}));
15
- /** 권장 연령 범위 (5~19세) */
16
- exports.BOOK_AGE_MIN = 5;
17
- exports.BOOK_AGE_MAX = 19;
18
- /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
19
- exports.BOOK_LEVEL_MIN = 5;
20
- /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
21
- exports.BOOK_LEVEL_MAX = 19;
22
10
  exports.BookLengthLabel = {
23
- short: "단편",
24
- medium: "중편",
25
- long: "장편",
11
+ short: '단편',
12
+ medium: '중편',
13
+ long: '장편',
26
14
  };
27
15
  exports.BookGenreLabel = {
28
- fiction: "문학",
29
- "non-fiction": "비문학",
30
- other: "기타",
16
+ fiction: '문학',
17
+ 'non-fiction': '비문학',
18
+ other: '기타',
31
19
  };
32
- /** @deprecated BookGenre type 사용 권장 */
33
- var BookGenreEnum;
34
- (function (BookGenreEnum) {
35
- BookGenreEnum["FICTION"] = "fiction";
36
- BookGenreEnum["NON_FICTION"] = "non-fiction";
37
- BookGenreEnum["FAIRY_TALE"] = "fairy-tale";
38
- BookGenreEnum["EDUCATIONAL"] = "educational";
39
- BookGenreEnum["SCIENCE"] = "science";
40
- BookGenreEnum["HISTORY"] = "history";
41
- BookGenreEnum["BIOGRAPHY"] = "biography";
42
- BookGenreEnum["POETRY"] = "poetry";
43
- BookGenreEnum["OTHER"] = "other";
44
- })(BookGenreEnum || (exports.BookGenreEnum = BookGenreEnum = {}));
45
20
  exports.BookEnLevelLabel = {
46
- story: "스토리",
47
- readers: "리더스",
48
- "early-chapter": "얼리챕터",
49
- "middle-chapter": "미들챕터",
50
- chapter: "챕터",
51
- novel: "노블",
21
+ story: '스토리',
22
+ readers: '리더스',
23
+ 'early-chapter': '얼리챕터',
24
+ 'middle-chapter': '미들챕터',
25
+ chapter: '챕터',
26
+ novel: '노블',
52
27
  };
53
28
  exports.PublishAgeRatingLabel = {
54
- all: "전체이용가",
55
- "12": "12세 이용가",
56
- "15": "15세 이용가",
57
- "19": "19세 이용가",
29
+ all: '전체이용가',
30
+ '12': '12세 이용가',
31
+ '15': '15세 이용가',
32
+ '19': '19세 이용가',
58
33
  };
59
- /** @deprecated PublishAgeRating 사용 권장 */
60
- var BookAgeGrade;
61
- (function (BookAgeGrade) {
62
- BookAgeGrade["ALL"] = "all";
63
- BookAgeGrade["AGE_7"] = "7+";
64
- BookAgeGrade["AGE_12"] = "12+";
65
- BookAgeGrade["AGE_15"] = "15+";
66
- BookAgeGrade["AGE_19"] = "19+";
67
- })(BookAgeGrade || (exports.BookAgeGrade = BookAgeGrade = {}));
68
- // ========== 기본값 ==========
34
+ // ========== 상수 ==========
35
+ /** 권장 연령 범위 (5~19세) */
36
+ exports.BOOK_AGE_MIN = 5;
37
+ exports.BOOK_AGE_MAX = 19;
69
38
  /** 새 책 생성 시 기본값 */
70
39
  exports.DEFAULT_BOOK_META = {
71
- title: "나의 책",
72
- language: "en",
73
- age: 5,
74
- length: "short",
75
- genre: "fiction",
40
+ book_title: '나의 책',
41
+ book_language: 'en',
42
+ book_level: 5,
43
+ length: 'short',
44
+ genre: 'fiction',
76
45
  quiz_retry_allowed: true,
77
46
  ar_index: 3.0,
78
47
  lexile_index: 600,
79
48
  };
80
49
  // ========== AR / Lexile 지수 ==========
81
- /** AR / Lexile 범위 매칭 규칙: min <= value <= max */
82
50
  /** AR 지수 범위별 설명 (소수점 1자리 기준) */
83
51
  exports.AR_INDEX_RANGES = [
84
- { min: 0.0, max: 1.9, level: "유아 ~ 초1", description: "그림책, 아주 짧은 문장" },
85
- { min: 2.0, max: 2.9, level: "초2", description: "기초 리더북" },
86
- { min: 3.0, max: 3.9, level: "초3", description: "챕터북 시작" },
87
- { min: 4.0, max: 4.9, level: "초4", description: "본격적인 이야기 구조" },
88
- { min: 5.0, max: 5.9, level: "초5", description: "어휘·문장 길이 증가" },
89
- { min: 6.0, max: 6.9, level: "초6", description: "논픽션 비중 증가" },
90
- { min: 7.0, max: 8.9, level: "중학생", description: "복합 문장, 추론 필요" },
91
- { min: 9.0, max: 10.9, level: "고등학생", description: "문학 작품, 추상 개념" },
92
- { min: 11.0, max: 12.0, level: "고급", description: "성인 소설·고전" },
52
+ { min: 0.0, max: 1.9, level: '유아 ~ 초1', description: '그림책, 아주 짧은 문장' },
53
+ { min: 2.0, max: 2.9, level: '초2', description: '기초 리더북' },
54
+ { min: 3.0, max: 3.9, level: '초3', description: '챕터북 시작' },
55
+ { min: 4.0, max: 4.9, level: '초4', description: '본격적인 이야기 구조' },
56
+ { min: 5.0, max: 5.9, level: '초5', description: '어휘·문장 길이 증가' },
57
+ { min: 6.0, max: 6.9, level: '초6', description: '논픽션 비중 증가' },
58
+ { min: 7.0, max: 8.9, level: '중학생', description: '복합 문장, 추론 필요' },
59
+ { min: 9.0, max: 10.9, level: '고등학생', description: '문학 작품, 추상 개념' },
60
+ { min: 11.0, max: 12.0, level: '고급', description: '성인 소설·고전' },
93
61
  ];
94
62
  /** Lexile 지수 범위별 설명 */
95
63
  exports.LEXILE_INDEX_RANGES = [
96
- { min: 0, max: 200, level: "유아", description: "알파벳·기초 단어" },
97
- { min: 200, max: 400, level: "초1", description: "아주 쉬운 문장" },
98
- { min: 400, max: 600, level: "초2", description: "간단한 스토리" },
99
- { min: 600, max: 800, level: "초3", description: "챕터북" },
100
- { min: 800, max: 1000, level: "초4", description: "정보량 증가" },
101
- { min: 1000, max: 1200, level: "초5~6", description: "교과서 수준" },
102
- { min: 1200, max: 1400, level: "중학생", description: "추론·비판적 읽기" },
103
- { min: 1400, max: 1600, level: "고등학생", description: "문학·비문학 혼합" },
104
- { min: 1600, max: 2000, level: "성인", description: "학술·고전 문학" },
64
+ { min: 0, max: 200, level: '유아', description: '알파벳·기초 단어' },
65
+ { min: 200, max: 400, level: '초1', description: '아주 쉬운 문장' },
66
+ { min: 400, max: 600, level: '초2', description: '간단한 스토리' },
67
+ { min: 600, max: 800, level: '초3', description: '챕터북' },
68
+ { min: 800, max: 1000, level: '초4', description: '정보량 증가' },
69
+ { min: 1000, max: 1200, level: '초5~6', description: '교과서 수준' },
70
+ { min: 1200, max: 1400, level: '중학생', description: '추론·비판적 읽기' },
71
+ { min: 1400, max: 1600, level: '고등학생', description: '문학·비문학 혼합' },
72
+ { min: 1600, max: 2000, level: '성인', description: '학술·고전 문학' },
105
73
  ];
106
- /** AR 지수로 해당 범위 설명 조회 (min <= value <= max) */
74
+ /** AR 지수로 해당 범위 설명 조회 */
107
75
  const getARDescription = (ar) => exports.AR_INDEX_RANGES.find(r => ar >= r.min && ar <= r.max);
108
76
  exports.getARDescription = getARDescription;
109
- /** Lexile 지수로 해당 범위 설명 조회 (min <= value <= max) */
77
+ /** Lexile 지수로 해당 범위 설명 조회 */
110
78
  const getLexileDescription = (lexile) => exports.LEXILE_INDEX_RANGES.find(r => lexile >= r.min && lexile <= r.max);
111
79
  exports.getLexileDescription = getLexileDescription;
112
80
  // ========== 헬퍼 함수 ==========
@@ -1 +1,4 @@
1
1
  export * from './book.type';
2
+ export * from './book-sections.type';
3
+ export * from './book-log.type';
4
+ export * from './tag.type';
@@ -15,3 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./book.type"), exports);
18
+ __exportStar(require("./book-sections.type"), exports);
19
+ __exportStar(require("./book-log.type"), exports);
20
+ __exportStar(require("./tag.type"), exports);
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @deprecated Legacy 타입 — 신규 코드에서 사용 금지
3
+ * Book 통합 리팩토링 전 타입 백업 (2026-02-02)
4
+ * 신규: Book (book.type.ts), BookDTO (book-api.type.ts), MakeBookState (store.types.ts)
5
+ */
6
+ import type { BookLanguage, BookLength, BookGenre, BookEnLevel, PublishAgeRating, SectionSummary, SectionSummaryResponse } from './book.type';
7
+ import type { SectionData, SectionId } from '../ast/ast.types';
8
+ /** @deprecated BookLanguage 사용 권장 */
9
+ export declare enum BookLanguageCode {
10
+ KO = "ko",
11
+ EN = "en"
12
+ }
13
+ /** @deprecated BookGenre type 사용 권장 */
14
+ export declare enum BookGenreEnum {
15
+ FICTION = "fiction",
16
+ NON_FICTION = "non-fiction",
17
+ FAIRY_TALE = "fairy-tale",
18
+ EDUCATIONAL = "educational",
19
+ SCIENCE = "science",
20
+ HISTORY = "history",
21
+ BIOGRAPHY = "biography",
22
+ POETRY = "poetry",
23
+ OTHER = "other"
24
+ }
25
+ /** @deprecated PublishAgeRating 사용 권장 */
26
+ export declare enum BookAgeGrade {
27
+ ALL = "all",
28
+ AGE_7 = "7+",
29
+ AGE_12 = "12+",
30
+ AGE_15 = "15+",
31
+ AGE_19 = "19+"
32
+ }
33
+ /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
34
+ export declare const BOOK_LEVEL_MIN = 5;
35
+ /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
36
+ export declare const BOOK_LEVEL_MAX = 19;
37
+ /** @deprecated Book 인터페이스 사용 권장 */
38
+ export interface DraftBookMeta {
39
+ draft_book_idx: number;
40
+ title: string;
41
+ language: BookLanguage;
42
+ age: number;
43
+ length: BookLength;
44
+ genre?: BookGenre;
45
+ quiz_retry_allowed?: boolean;
46
+ ar_index?: number;
47
+ lexile_index?: number;
48
+ series?: string;
49
+ cover_url?: string;
50
+ en_level?: BookEnLevel;
51
+ tags?: string[];
52
+ description?: string;
53
+ original_author?: string;
54
+ original_publish_date?: string;
55
+ original_publisher?: string;
56
+ isbn?: string;
57
+ updated_at: string;
58
+ }
59
+ /** @deprecated Book 인터페이스 사용 권장 */
60
+ export interface BookMeta extends DraftBookMeta {
61
+ book_idx: number;
62
+ source_draft_book_idx: number;
63
+ creator_idx: number;
64
+ creator_name?: string;
65
+ price_point: number;
66
+ age_rating: PublishAgeRating;
67
+ free_section_arr?: number[];
68
+ word_count?: number;
69
+ sound_minutes?: number;
70
+ section_count?: number;
71
+ published_at: string;
72
+ }
73
+ /** @deprecated BookListItem 사용 권장 */
74
+ export interface BookShort {
75
+ id: string;
76
+ title: string;
77
+ author: string;
78
+ coverUrl: string;
79
+ language: BookLanguageCode;
80
+ level: number;
81
+ genre: string;
82
+ wordCount?: number;
83
+ soundMinutes?: number;
84
+ rating?: number;
85
+ }
86
+ /** @deprecated BookDTO 사용 권장 */
87
+ export interface BookDetail extends BookShort {
88
+ description?: string;
89
+ tags?: string[];
90
+ ageGrade?: BookAgeGrade;
91
+ isbn?: string;
92
+ originalPublisher?: string;
93
+ originalPublishDate?: string;
94
+ edition?: string;
95
+ quizRetryAllowed?: boolean;
96
+ toc?: string[];
97
+ rating?: number;
98
+ publishedAtText?: string;
99
+ priceText?: string;
100
+ sections?: SectionSummary[];
101
+ sectionOrder?: string[];
102
+ }
103
+ /** @deprecated Book 인터페이스 사용 권장 (draft_book_ prefix 제거됨) */
104
+ export interface DraftBookResponse {
105
+ draft_book_idx: number;
106
+ draft_book_title: string;
107
+ draft_book_language: BookLanguageCode;
108
+ draft_book_level: number;
109
+ draft_book_cover_url: string | null;
110
+ draft_book_create_date?: string;
111
+ draft_book_update_date: string;
112
+ draft_book_author?: string | null;
113
+ draft_book_age_grade?: BookAgeGrade | null;
114
+ draft_book_genre?: string | null;
115
+ draft_book_tags?: string[] | null;
116
+ draft_book_description?: string | null;
117
+ draft_book_original_publish_date?: string | null;
118
+ draft_book_original_publisher?: string | null;
119
+ draft_book_edition?: string | null;
120
+ draft_book_isbn?: string | null;
121
+ draft_book_word_count?: number | null;
122
+ draft_book_sound_minutes?: number | null;
123
+ draft_book_quiz_retry_allowed?: boolean;
124
+ draft_book_ar_index?: number | null;
125
+ draft_book_lexile_index?: number | null;
126
+ draft_book_sections?: SectionSummaryResponse[];
127
+ draft_book_section_order?: string[];
128
+ }
129
+ /** @deprecated Book 인터페이스 사용 권장 */
130
+ export interface DraftMeta {
131
+ draft_book_idx: number;
132
+ draft_book_title: string;
133
+ draft_book_language: 'ko' | 'en';
134
+ draft_book_level: number;
135
+ draft_book_cover_url: string | null;
136
+ draft_book_length: string | null;
137
+ draft_book_genre: string | null;
138
+ draft_book_en_level: string | null;
139
+ draft_book_series: string | null;
140
+ draft_book_author: string | null;
141
+ draft_book_tags: string[] | null;
142
+ draft_book_description: string | null;
143
+ draft_book_original_publish_date: string | null;
144
+ draft_book_original_publisher: string | null;
145
+ draft_book_isbn: string | null;
146
+ draft_book_word_count: number | null;
147
+ draft_book_ar_index: number | null;
148
+ draft_book_lexile_index: number | null;
149
+ draft_book_quiz_retry_allowed: boolean;
150
+ draft_book_create_date: string;
151
+ draft_book_update_date: string;
152
+ draft_book_publish_status?: 'draft' | 'pending' | 'rejected';
153
+ }
154
+ /** @deprecated BookDTO 사용 권장 */
155
+ export type DraftSummary = {
156
+ sectionOrder: SectionId[];
157
+ sections?: SectionSummary[];
158
+ };
159
+ /** @deprecated BookDTO 사용 권장 */
160
+ export type BookDraftDTO = {
161
+ meta: DraftMeta;
162
+ summary: DraftSummary;
163
+ content: SectionData[];
164
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * @deprecated Legacy 타입 — 신규 코드에서 사용 금지
4
+ * Book 통합 리팩토링 전 타입 백업 (2026-02-02)
5
+ * 신규: Book (book.type.ts), BookDTO (book-api.type.ts), MakeBookState (store.types.ts)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BOOK_LEVEL_MAX = exports.BOOK_LEVEL_MIN = exports.BookAgeGrade = exports.BookGenreEnum = exports.BookLanguageCode = void 0;
9
+ // ========== deprecated enums ==========
10
+ /** @deprecated BookLanguage 사용 권장 */
11
+ var BookLanguageCode;
12
+ (function (BookLanguageCode) {
13
+ BookLanguageCode["KO"] = "ko";
14
+ BookLanguageCode["EN"] = "en";
15
+ })(BookLanguageCode || (exports.BookLanguageCode = BookLanguageCode = {}));
16
+ /** @deprecated BookGenre type 사용 권장 */
17
+ var BookGenreEnum;
18
+ (function (BookGenreEnum) {
19
+ BookGenreEnum["FICTION"] = "fiction";
20
+ BookGenreEnum["NON_FICTION"] = "non-fiction";
21
+ BookGenreEnum["FAIRY_TALE"] = "fairy-tale";
22
+ BookGenreEnum["EDUCATIONAL"] = "educational";
23
+ BookGenreEnum["SCIENCE"] = "science";
24
+ BookGenreEnum["HISTORY"] = "history";
25
+ BookGenreEnum["BIOGRAPHY"] = "biography";
26
+ BookGenreEnum["POETRY"] = "poetry";
27
+ BookGenreEnum["OTHER"] = "other";
28
+ })(BookGenreEnum || (exports.BookGenreEnum = BookGenreEnum = {}));
29
+ /** @deprecated PublishAgeRating 사용 권장 */
30
+ var BookAgeGrade;
31
+ (function (BookAgeGrade) {
32
+ BookAgeGrade["ALL"] = "all";
33
+ BookAgeGrade["AGE_7"] = "7+";
34
+ BookAgeGrade["AGE_12"] = "12+";
35
+ BookAgeGrade["AGE_15"] = "15+";
36
+ BookAgeGrade["AGE_19"] = "19+";
37
+ })(BookAgeGrade || (exports.BookAgeGrade = BookAgeGrade = {}));
38
+ /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
39
+ exports.BOOK_LEVEL_MIN = 5;
40
+ /** @deprecated BOOK_AGE_MIN/MAX 사용 권장 */
41
+ exports.BOOK_LEVEL_MAX = 19;