@readerseye2/cr_type 1.0.120 → 1.0.122

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,15 +1,15 @@
1
- import type { Book, SectionSummary } from './book.type';
2
- import type { SectionData } from '../ast/ast.types';
3
- /** 책 목록 조회용 (간략) */
4
- export type BookListItem = Pick<Book, 'book_idx' | 'creator_idx' | 'status' | 'book_title' | 'book_language' | 'book_level' | 'book_cover_url' | 'genre' | 'word_count' | 'section_count' | 'created_at' | 'updated_at'> & {
5
- creator_name?: string;
6
- };
7
- /** 책 상세 응답 (메타 + 요약 + 콘텐츠) */
8
- export type BookDTO = {
9
- meta: Book;
10
- summary: {
11
- sectionOrder: string[];
12
- sections: SectionSummary[];
13
- };
14
- content: SectionData[];
15
- };
1
+ import type { Book, SectionSummary } from './book.type';
2
+ import type { SectionData } from '../ast/ast.types';
3
+ /** 책 목록 조회용 (간략) */
4
+ export type BookListItem = Pick<Book, 'book_idx' | 'creator_idx' | 'status' | 'book_title' | 'book_language' | 'book_level' | 'book_cover_url' | 'genre' | 'word_count' | 'section_count' | 'created_at' | 'updated_at'> & {
5
+ creator_name?: string;
6
+ };
7
+ /** 책 상세 응답 (메타 + 요약 + 콘텐츠) */
8
+ export type BookDTO = {
9
+ meta: Book;
10
+ summary: {
11
+ sectionOrder: string[];
12
+ sections: SectionSummary[];
13
+ };
14
+ content: SectionData[];
15
+ };
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,14 +1,14 @@
1
- /** book_log.action ENUM */
2
- export type BookLogAction = 'request' | 'approve' | 'reject' | 'cancel' | 'suspend' | 'unsuspend';
3
- /** book_log.acted_by_type ENUM */
4
- export type BookLogActorType = 'admin' | 'creator';
5
- /** MySQL book_log 테이블 1:1 */
6
- export interface BookLog {
7
- book_log_idx: number;
8
- book_idx: number;
9
- action: BookLogAction;
10
- acted_by_type: BookLogActorType;
11
- acted_by_idx: number;
12
- reason: string | null;
13
- created_at: string;
14
- }
1
+ /** book_log.action ENUM */
2
+ export type BookLogAction = 'request' | 'approve' | 'reject' | 'cancel' | 'suspend' | 'unsuspend';
3
+ /** book_log.acted_by_type ENUM */
4
+ export type BookLogActorType = 'admin' | 'creator';
5
+ /** MySQL book_log 테이블 1:1 */
6
+ export interface BookLog {
7
+ book_log_idx: number;
8
+ book_idx: number;
9
+ action: BookLogAction;
10
+ acted_by_type: BookLogActorType;
11
+ acted_by_idx: number;
12
+ reason: string | null;
13
+ created_at: string;
14
+ }
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,274 +1,274 @@
1
- /** 언어 */
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
- export declare const BookLanguageLabel: {
14
- readonly ko: "한국어";
15
- readonly en: "English";
16
- };
17
- export declare const BookLengthLabel: {
18
- readonly short: "단편";
19
- readonly medium: "중편";
20
- readonly long: "장편";
21
- };
22
- export declare const BookGenreLabel: {
23
- readonly fiction: "문학";
24
- readonly 'non-fiction': "비문학";
25
- readonly other: "기타";
26
- };
27
- export declare const BookEnLevelLabel: {
28
- readonly story: "스토리";
29
- readonly readers: "리더스";
30
- readonly 'early-chapter': "얼리챕터";
31
- readonly 'middle-chapter': "미들챕터";
32
- readonly chapter: "챕터";
33
- readonly novel: "노블";
34
- };
35
- export declare const PublishAgeRatingLabel: {
36
- readonly all: "전체이용가";
37
- readonly '12': "12세 이용가";
38
- readonly '15': "15세 이용가";
39
- readonly '19': "19세 이용가";
40
- };
41
- /** 권장 연령 범위 (5~19세) */
42
- export declare const BOOK_AGE_MIN = 5;
43
- export declare const BOOK_AGE_MAX = 19;
44
- /** 새 책 생성 시 기본값 */
45
- export declare const DEFAULT_BOOK_META: {
46
- readonly title: "나의 책";
47
- readonly language: BookLanguage;
48
- readonly age: 5;
49
- readonly length: BookLength;
50
- readonly genre: BookGenre;
51
- readonly quiz_retry_allowed: true;
52
- readonly ar_index: 3;
53
- readonly lexile_index: 600;
54
- };
55
- /** AR 지수 범위별 설명 (소수점 1자리 기준) */
56
- export declare const AR_INDEX_RANGES: readonly [{
57
- readonly min: 0;
58
- readonly max: 1.9;
59
- readonly level: "유아 ~ 초1";
60
- readonly description: "그림책, 아주 짧은 문장";
61
- }, {
62
- readonly min: 2;
63
- readonly max: 2.9;
64
- readonly level: "초2";
65
- readonly description: "기초 리더북";
66
- }, {
67
- readonly min: 3;
68
- readonly max: 3.9;
69
- readonly level: "초3";
70
- readonly description: "챕터북 시작";
71
- }, {
72
- readonly min: 4;
73
- readonly max: 4.9;
74
- readonly level: "초4";
75
- readonly description: "본격적인 이야기 구조";
76
- }, {
77
- readonly min: 5;
78
- readonly max: 5.9;
79
- readonly level: "초5";
80
- readonly description: "어휘·문장 길이 증가";
81
- }, {
82
- readonly min: 6;
83
- readonly max: 6.9;
84
- readonly level: "초6";
85
- readonly description: "논픽션 비중 증가";
86
- }, {
87
- readonly min: 7;
88
- readonly max: 8.9;
89
- readonly level: "중학생";
90
- readonly description: "복합 문장, 추론 필요";
91
- }, {
92
- readonly min: 9;
93
- readonly max: 10.9;
94
- readonly level: "고등학생";
95
- readonly description: "문학 작품, 추상 개념";
96
- }, {
97
- readonly min: 11;
98
- readonly max: 12;
99
- readonly level: "고급";
100
- readonly description: "성인 소설·고전";
101
- }];
102
- /** Lexile 지수 범위별 설명 */
103
- export declare const LEXILE_INDEX_RANGES: readonly [{
104
- readonly min: 0;
105
- readonly max: 200;
106
- readonly level: "유아";
107
- readonly description: "알파벳·기초 단어";
108
- }, {
109
- readonly min: 200;
110
- readonly max: 400;
111
- readonly level: "초1";
112
- readonly description: "아주 쉬운 문장";
113
- }, {
114
- readonly min: 400;
115
- readonly max: 600;
116
- readonly level: "초2";
117
- readonly description: "간단한 스토리";
118
- }, {
119
- readonly min: 600;
120
- readonly max: 800;
121
- readonly level: "초3";
122
- readonly description: "챕터북";
123
- }, {
124
- readonly min: 800;
125
- readonly max: 1000;
126
- readonly level: "초4";
127
- readonly description: "정보량 증가";
128
- }, {
129
- readonly min: 1000;
130
- readonly max: 1200;
131
- readonly level: "초5~6";
132
- readonly description: "교과서 수준";
133
- }, {
134
- readonly min: 1200;
135
- readonly max: 1400;
136
- readonly level: "중학생";
137
- readonly description: "추론·비판적 읽기";
138
- }, {
139
- readonly min: 1400;
140
- readonly max: 1600;
141
- readonly level: "고등학생";
142
- readonly description: "문학·비문학 혼합";
143
- }, {
144
- readonly min: 1600;
145
- readonly max: 2000;
146
- readonly level: "성인";
147
- readonly description: "학술·고전 문학";
148
- }];
149
- /** AR 지수로 해당 범위 설명 조회 */
150
- export declare const getARDescription: (ar: number) => {
151
- readonly min: 0;
152
- readonly max: 1.9;
153
- readonly level: "유아 ~ 초1";
154
- readonly description: "그림책, 아주 짧은 문장";
155
- } | {
156
- readonly min: 2;
157
- readonly max: 2.9;
158
- readonly level: "초2";
159
- readonly description: "기초 리더북";
160
- } | {
161
- readonly min: 3;
162
- readonly max: 3.9;
163
- readonly level: "초3";
164
- readonly description: "챕터북 시작";
165
- } | {
166
- readonly min: 4;
167
- readonly max: 4.9;
168
- readonly level: "초4";
169
- readonly description: "본격적인 이야기 구조";
170
- } | {
171
- readonly min: 5;
172
- readonly max: 5.9;
173
- readonly level: "초5";
174
- readonly description: "어휘·문장 길이 증가";
175
- } | {
176
- readonly min: 6;
177
- readonly max: 6.9;
178
- readonly level: "초6";
179
- readonly description: "논픽션 비중 증가";
180
- } | {
181
- readonly min: 7;
182
- readonly max: 8.9;
183
- readonly level: "중학생";
184
- readonly description: "복합 문장, 추론 필요";
185
- } | {
186
- readonly min: 9;
187
- readonly max: 10.9;
188
- readonly level: "고등학생";
189
- readonly description: "문학 작품, 추상 개념";
190
- } | {
191
- readonly min: 11;
192
- readonly max: 12;
193
- readonly level: "고급";
194
- readonly description: "성인 소설·고전";
195
- } | undefined;
196
- /** Lexile 지수로 해당 범위 설명 조회 */
197
- export declare const getLexileDescription: (lexile: number) => {
198
- readonly min: 0;
199
- readonly max: 200;
200
- readonly level: "유아";
201
- readonly description: "알파벳·기초 단어";
202
- } | {
203
- readonly min: 200;
204
- readonly max: 400;
205
- readonly level: "초1";
206
- readonly description: "아주 쉬운 문장";
207
- } | {
208
- readonly min: 400;
209
- readonly max: 600;
210
- readonly level: "초2";
211
- readonly description: "간단한 스토리";
212
- } | {
213
- readonly min: 600;
214
- readonly max: 800;
215
- readonly level: "초3";
216
- readonly description: "챕터북";
217
- } | {
218
- readonly min: 800;
219
- readonly max: 1000;
220
- readonly level: "초4";
221
- readonly description: "정보량 증가";
222
- } | {
223
- readonly min: 1000;
224
- readonly max: 1200;
225
- readonly level: "초5~6";
226
- readonly description: "교과서 수준";
227
- } | {
228
- readonly min: 1200;
229
- readonly max: 1400;
230
- readonly level: "중학생";
231
- readonly description: "추론·비판적 읽기";
232
- } | {
233
- readonly min: 1400;
234
- readonly max: 1600;
235
- readonly level: "고등학생";
236
- readonly description: "문학·비문학 혼합";
237
- } | {
238
- readonly min: 1600;
239
- readonly max: 2000;
240
- readonly level: "성인";
241
- readonly description: "학술·고전 문학";
242
- } | undefined;
243
- /** 어절 수 → 재생 분수 계산 (200 WPM 기준) */
244
- export declare const calcSoundMinutes: (wordCount: number) => number;
245
- /** 언어 옵션 (UI Select용) */
246
- export declare const getLanguageOptions: () => {
247
- value: BookLanguage;
248
- label: "한국어" | "English";
249
- }[];
250
- /** 길이 옵션 (UI Select용) */
251
- export declare const getLengthOptions: () => {
252
- value: BookLength;
253
- label: "단편" | "중편" | "장편";
254
- }[];
255
- /** 장르 옵션 (UI Select용) */
256
- export declare const getGenreOptions: () => {
257
- value: BookGenre;
258
- label: "문학" | "비문학" | "기타";
259
- }[];
260
- /** 영어레벨 옵션 (UI Select용) */
261
- export declare const getEnLevelOptions: () => {
262
- value: BookEnLevel;
263
- label: "스토리" | "리더스" | "얼리챕터" | "미들챕터" | "챕터" | "노블";
264
- }[];
265
- /** 출판 연령등급 옵션 (UI Select용) */
266
- export declare const getAgeRatingOptions: () => {
267
- value: PublishAgeRating;
268
- label: "전체이용가" | "12세 이용가" | "15세 이용가" | "19세 이용가";
269
- }[];
270
- /** 권장 연령 옵션 (5~19세) */
271
- export declare const getAgeOptions: () => {
272
- value: number;
273
- label: string;
274
- }[];
1
+ /** 언어 */
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
+ export declare const BookLanguageLabel: {
14
+ readonly ko: "한국어";
15
+ readonly en: "English";
16
+ };
17
+ export declare const BookLengthLabel: {
18
+ readonly short: "단편";
19
+ readonly medium: "중편";
20
+ readonly long: "장편";
21
+ };
22
+ export declare const BookGenreLabel: {
23
+ readonly fiction: "문학";
24
+ readonly 'non-fiction': "비문학";
25
+ readonly other: "기타";
26
+ };
27
+ export declare const BookEnLevelLabel: {
28
+ readonly story: "스토리";
29
+ readonly readers: "리더스";
30
+ readonly 'early-chapter': "얼리챕터";
31
+ readonly 'middle-chapter': "미들챕터";
32
+ readonly chapter: "챕터";
33
+ readonly novel: "노블";
34
+ };
35
+ export declare const PublishAgeRatingLabel: {
36
+ readonly all: "전체이용가";
37
+ readonly '12': "12세 이용가";
38
+ readonly '15': "15세 이용가";
39
+ readonly '19': "19세 이용가";
40
+ };
41
+ /** 권장 연령 범위 (5~19세) */
42
+ export declare const BOOK_AGE_MIN = 5;
43
+ export declare const BOOK_AGE_MAX = 19;
44
+ /** 새 책 생성 시 기본값 */
45
+ export declare const DEFAULT_BOOK_META: {
46
+ readonly title: "나의 책";
47
+ readonly language: BookLanguage;
48
+ readonly age: 5;
49
+ readonly length: BookLength;
50
+ readonly genre: BookGenre;
51
+ readonly quiz_retry_allowed: true;
52
+ readonly ar_index: 3;
53
+ readonly lexile_index: 600;
54
+ };
55
+ /** AR 지수 범위별 설명 (소수점 1자리 기준) */
56
+ export declare const AR_INDEX_RANGES: readonly [{
57
+ readonly min: 0;
58
+ readonly max: 1.9;
59
+ readonly level: "유아 ~ 초1";
60
+ readonly description: "그림책, 아주 짧은 문장";
61
+ }, {
62
+ readonly min: 2;
63
+ readonly max: 2.9;
64
+ readonly level: "초2";
65
+ readonly description: "기초 리더북";
66
+ }, {
67
+ readonly min: 3;
68
+ readonly max: 3.9;
69
+ readonly level: "초3";
70
+ readonly description: "챕터북 시작";
71
+ }, {
72
+ readonly min: 4;
73
+ readonly max: 4.9;
74
+ readonly level: "초4";
75
+ readonly description: "본격적인 이야기 구조";
76
+ }, {
77
+ readonly min: 5;
78
+ readonly max: 5.9;
79
+ readonly level: "초5";
80
+ readonly description: "어휘·문장 길이 증가";
81
+ }, {
82
+ readonly min: 6;
83
+ readonly max: 6.9;
84
+ readonly level: "초6";
85
+ readonly description: "논픽션 비중 증가";
86
+ }, {
87
+ readonly min: 7;
88
+ readonly max: 8.9;
89
+ readonly level: "중학생";
90
+ readonly description: "복합 문장, 추론 필요";
91
+ }, {
92
+ readonly min: 9;
93
+ readonly max: 10.9;
94
+ readonly level: "고등학생";
95
+ readonly description: "문학 작품, 추상 개념";
96
+ }, {
97
+ readonly min: 11;
98
+ readonly max: 12;
99
+ readonly level: "고급";
100
+ readonly description: "성인 소설·고전";
101
+ }];
102
+ /** Lexile 지수 범위별 설명 */
103
+ export declare const LEXILE_INDEX_RANGES: readonly [{
104
+ readonly min: 0;
105
+ readonly max: 200;
106
+ readonly level: "유아";
107
+ readonly description: "알파벳·기초 단어";
108
+ }, {
109
+ readonly min: 200;
110
+ readonly max: 400;
111
+ readonly level: "초1";
112
+ readonly description: "아주 쉬운 문장";
113
+ }, {
114
+ readonly min: 400;
115
+ readonly max: 600;
116
+ readonly level: "초2";
117
+ readonly description: "간단한 스토리";
118
+ }, {
119
+ readonly min: 600;
120
+ readonly max: 800;
121
+ readonly level: "초3";
122
+ readonly description: "챕터북";
123
+ }, {
124
+ readonly min: 800;
125
+ readonly max: 1000;
126
+ readonly level: "초4";
127
+ readonly description: "정보량 증가";
128
+ }, {
129
+ readonly min: 1000;
130
+ readonly max: 1200;
131
+ readonly level: "초5~6";
132
+ readonly description: "교과서 수준";
133
+ }, {
134
+ readonly min: 1200;
135
+ readonly max: 1400;
136
+ readonly level: "중학생";
137
+ readonly description: "추론·비판적 읽기";
138
+ }, {
139
+ readonly min: 1400;
140
+ readonly max: 1600;
141
+ readonly level: "고등학생";
142
+ readonly description: "문학·비문학 혼합";
143
+ }, {
144
+ readonly min: 1600;
145
+ readonly max: 2000;
146
+ readonly level: "성인";
147
+ readonly description: "학술·고전 문학";
148
+ }];
149
+ /** AR 지수로 해당 범위 설명 조회 */
150
+ export declare const getARDescription: (ar: number) => {
151
+ readonly min: 0;
152
+ readonly max: 1.9;
153
+ readonly level: "유아 ~ 초1";
154
+ readonly description: "그림책, 아주 짧은 문장";
155
+ } | {
156
+ readonly min: 2;
157
+ readonly max: 2.9;
158
+ readonly level: "초2";
159
+ readonly description: "기초 리더북";
160
+ } | {
161
+ readonly min: 3;
162
+ readonly max: 3.9;
163
+ readonly level: "초3";
164
+ readonly description: "챕터북 시작";
165
+ } | {
166
+ readonly min: 4;
167
+ readonly max: 4.9;
168
+ readonly level: "초4";
169
+ readonly description: "본격적인 이야기 구조";
170
+ } | {
171
+ readonly min: 5;
172
+ readonly max: 5.9;
173
+ readonly level: "초5";
174
+ readonly description: "어휘·문장 길이 증가";
175
+ } | {
176
+ readonly min: 6;
177
+ readonly max: 6.9;
178
+ readonly level: "초6";
179
+ readonly description: "논픽션 비중 증가";
180
+ } | {
181
+ readonly min: 7;
182
+ readonly max: 8.9;
183
+ readonly level: "중학생";
184
+ readonly description: "복합 문장, 추론 필요";
185
+ } | {
186
+ readonly min: 9;
187
+ readonly max: 10.9;
188
+ readonly level: "고등학생";
189
+ readonly description: "문학 작품, 추상 개념";
190
+ } | {
191
+ readonly min: 11;
192
+ readonly max: 12;
193
+ readonly level: "고급";
194
+ readonly description: "성인 소설·고전";
195
+ } | undefined;
196
+ /** Lexile 지수로 해당 범위 설명 조회 */
197
+ export declare const getLexileDescription: (lexile: number) => {
198
+ readonly min: 0;
199
+ readonly max: 200;
200
+ readonly level: "유아";
201
+ readonly description: "알파벳·기초 단어";
202
+ } | {
203
+ readonly min: 200;
204
+ readonly max: 400;
205
+ readonly level: "초1";
206
+ readonly description: "아주 쉬운 문장";
207
+ } | {
208
+ readonly min: 400;
209
+ readonly max: 600;
210
+ readonly level: "초2";
211
+ readonly description: "간단한 스토리";
212
+ } | {
213
+ readonly min: 600;
214
+ readonly max: 800;
215
+ readonly level: "초3";
216
+ readonly description: "챕터북";
217
+ } | {
218
+ readonly min: 800;
219
+ readonly max: 1000;
220
+ readonly level: "초4";
221
+ readonly description: "정보량 증가";
222
+ } | {
223
+ readonly min: 1000;
224
+ readonly max: 1200;
225
+ readonly level: "초5~6";
226
+ readonly description: "교과서 수준";
227
+ } | {
228
+ readonly min: 1200;
229
+ readonly max: 1400;
230
+ readonly level: "중학생";
231
+ readonly description: "추론·비판적 읽기";
232
+ } | {
233
+ readonly min: 1400;
234
+ readonly max: 1600;
235
+ readonly level: "고등학생";
236
+ readonly description: "문학·비문학 혼합";
237
+ } | {
238
+ readonly min: 1600;
239
+ readonly max: 2000;
240
+ readonly level: "성인";
241
+ readonly description: "학술·고전 문학";
242
+ } | undefined;
243
+ /** 어절 수 → 재생 분수 계산 (200 WPM 기준) */
244
+ export declare const calcSoundMinutes: (wordCount: number) => number;
245
+ /** 언어 옵션 (UI Select용) */
246
+ export declare const getLanguageOptions: () => {
247
+ value: BookLanguage;
248
+ label: "한국어" | "English";
249
+ }[];
250
+ /** 길이 옵션 (UI Select용) */
251
+ export declare const getLengthOptions: () => {
252
+ value: BookLength;
253
+ label: "단편" | "중편" | "장편";
254
+ }[];
255
+ /** 장르 옵션 (UI Select용) */
256
+ export declare const getGenreOptions: () => {
257
+ value: BookGenre;
258
+ label: "문학" | "비문학" | "기타";
259
+ }[];
260
+ /** 영어레벨 옵션 (UI Select용) */
261
+ export declare const getEnLevelOptions: () => {
262
+ value: BookEnLevel;
263
+ label: "스토리" | "리더스" | "얼리챕터" | "미들챕터" | "챕터" | "노블";
264
+ }[];
265
+ /** 출판 연령등급 옵션 (UI Select용) */
266
+ export declare const getAgeRatingOptions: () => {
267
+ value: PublishAgeRating;
268
+ label: "전체이용가" | "12세 이용가" | "15세 이용가" | "19세 이용가";
269
+ }[];
270
+ /** 권장 연령 옵션 (5~19세) */
271
+ export declare const getAgeOptions: () => {
272
+ value: number;
273
+ label: string;
274
+ }[];