opensoma 0.4.0 → 0.5.1
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.
- package/dist/package.json +1 -1
- package/dist/src/client.d.ts +7 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +13 -11
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands/auth.d.ts +1 -1
- package/dist/src/commands/auth.d.ts.map +1 -1
- package/dist/src/commands/auth.js +94 -52
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/constants.d.ts +40 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +42 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/formatters.d.ts.map +1 -1
- package/dist/src/formatters.js +42 -16
- package/dist/src/formatters.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/shared/utils/swmaestro.d.ts.map +1 -1
- package/dist/src/shared/utils/swmaestro.js +1 -5
- package/dist/src/shared/utils/swmaestro.js.map +1 -1
- package/dist/src/shared/utils/toz.d.ts +23 -0
- package/dist/src/shared/utils/toz.d.ts.map +1 -0
- package/dist/src/shared/utils/toz.js +72 -0
- package/dist/src/shared/utils/toz.js.map +1 -0
- package/dist/src/token-extractor.d.ts +9 -1
- package/dist/src/token-extractor.d.ts.map +1 -1
- package/dist/src/token-extractor.js +54 -10
- package/dist/src/token-extractor.js.map +1 -1
- package/dist/src/toz-formatters.d.ts +9 -0
- package/dist/src/toz-formatters.d.ts.map +1 -0
- package/dist/src/toz-formatters.js +151 -0
- package/dist/src/toz-formatters.js.map +1 -0
- package/dist/src/toz-http.d.ts +27 -0
- package/dist/src/toz-http.d.ts.map +1 -0
- package/dist/src/toz-http.js +154 -0
- package/dist/src/toz-http.js.map +1 -0
- package/dist/src/types.d.ts +52 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +46 -0
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/src/__fixtures__/toz/toz_all_branches.json +211 -0
- package/src/__fixtures__/toz/toz_booking.html +2190 -0
- package/src/__fixtures__/toz/toz_boothes.json +59 -0
- package/src/__fixtures__/toz/toz_duration.json +25 -0
- package/src/__fixtures__/toz/toz_mypage_response.html +388 -0
- package/src/__fixtures__/toz/toz_page.html +211 -0
- package/src/client.test.ts +135 -117
- package/src/client.ts +16 -12
- package/src/commands/auth.test.ts +7 -7
- package/src/commands/auth.ts +107 -50
- package/src/commands/helpers.test.ts +8 -8
- package/src/commands/report.test.ts +7 -7
- package/src/constants.ts +50 -0
- package/src/credential-manager.test.ts +5 -5
- package/src/formatters.test.ts +22 -22
- package/src/formatters.ts +44 -16
- package/src/http.test.ts +37 -37
- package/src/index.ts +3 -0
- package/src/shared/utils/mentoring-params.test.ts +16 -16
- package/src/shared/utils/swmaestro.test.ts +87 -8
- package/src/shared/utils/swmaestro.ts +1 -6
- package/src/shared/utils/toz.test.ts +138 -0
- package/src/shared/utils/toz.ts +100 -0
- package/src/token-extractor.test.ts +40 -15
- package/src/token-extractor.ts +65 -13
- package/src/toz-formatters.test.ts +197 -0
- package/src/toz-formatters.ts +211 -0
- package/src/toz-http.test.ts +157 -0
- package/src/toz-http.ts +188 -0
- package/src/types.test.ts +220 -204
- package/src/types.ts +58 -0
package/src/types.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect,
|
|
1
|
+
import { describe, expect, it } from 'bun:test'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
ApplicationHistoryItemSchema,
|
|
@@ -20,226 +20,242 @@ import {
|
|
|
20
20
|
} from './types'
|
|
21
21
|
|
|
22
22
|
describe('schemas', () => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
23
|
+
it('preserves valid MentoringListItem values through parse', () => {
|
|
24
|
+
const input = {
|
|
25
|
+
id: 9572,
|
|
26
|
+
title: 'AI 멘토링',
|
|
27
|
+
type: '자유 멘토링' as const,
|
|
28
|
+
registrationPeriod: { start: '2026-04-01', end: '2026-04-10' },
|
|
29
|
+
sessionDate: '2026-04-11',
|
|
30
|
+
sessionTime: { start: '14:00', end: '15:30' },
|
|
31
|
+
attendees: { current: 3, max: 4 },
|
|
32
|
+
approved: true,
|
|
33
|
+
status: '접수중' as const,
|
|
34
|
+
author: '전수열',
|
|
35
|
+
createdAt: '2026-04-01',
|
|
36
|
+
}
|
|
37
|
+
expect(MentoringListItemSchema.parse(input)).toEqual(input)
|
|
38
|
+
})
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
).
|
|
40
|
+
it('preserves valid MentoringDetail values through parse', () => {
|
|
41
|
+
const input = {
|
|
42
|
+
id: 9572,
|
|
43
|
+
title: 'AI 멘토링',
|
|
44
|
+
type: '멘토 특강' as const,
|
|
45
|
+
registrationPeriod: { start: '2026-04-01', end: '2026-04-10' },
|
|
46
|
+
sessionDate: '2026-04-11',
|
|
47
|
+
sessionTime: { start: '14:00', end: '15:30' },
|
|
48
|
+
attendees: { current: 6, max: 20 },
|
|
49
|
+
approved: false,
|
|
50
|
+
status: '마감' as const,
|
|
51
|
+
author: '전수열',
|
|
52
|
+
createdAt: '2026-04-01',
|
|
53
|
+
content: '<p>내용</p>',
|
|
54
|
+
venue: '온라인(Webex)',
|
|
55
|
+
applicants: [],
|
|
56
|
+
}
|
|
57
|
+
expect(MentoringDetailSchema.parse(input)).toEqual(input)
|
|
58
|
+
})
|
|
58
59
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
).
|
|
60
|
+
it('preserves valid RoomCard values through parse', () => {
|
|
61
|
+
const input = {
|
|
62
|
+
itemId: 17,
|
|
63
|
+
name: '스페이스 A1',
|
|
64
|
+
capacity: 4,
|
|
65
|
+
availablePeriod: { start: '2026-04-01', end: '2026-12-31' },
|
|
66
|
+
description: '소회의실 : 4인',
|
|
67
|
+
timeSlots: [
|
|
68
|
+
{ time: '09:00', available: true },
|
|
69
|
+
{ time: '09:30', available: false, reservation: { title: '팀 회의', bookedBy: '전수열' } },
|
|
70
|
+
],
|
|
71
|
+
}
|
|
72
|
+
expect(RoomCardSchema.parse(input)).toEqual(input)
|
|
73
|
+
})
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
).
|
|
75
|
+
it('preserves valid Dashboard values through parse', () => {
|
|
76
|
+
const input = {
|
|
77
|
+
name: '전수열',
|
|
78
|
+
role: '멘토',
|
|
79
|
+
organization: 'Indent',
|
|
80
|
+
position: '',
|
|
81
|
+
team: { name: '오픈소마', members: '전수열, 김개발', mentor: '전수열' },
|
|
82
|
+
mentoringSessions: [{ title: 'AI 멘토링', url: '/mentoring/1', status: '접수중' }],
|
|
83
|
+
roomReservations: [{ title: 'A1 회의', url: '/room/1', status: '예약완료' }],
|
|
84
|
+
}
|
|
85
|
+
expect(DashboardSchema.parse(input)).toEqual(input)
|
|
86
|
+
})
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
).
|
|
88
|
+
it('preserves valid NoticeListItem values through parse', () => {
|
|
89
|
+
const input = {
|
|
90
|
+
id: 1,
|
|
91
|
+
title: '공지',
|
|
92
|
+
author: '관리자',
|
|
93
|
+
createdAt: '2026-04-01',
|
|
94
|
+
}
|
|
95
|
+
expect(NoticeListItemSchema.parse(input)).toEqual(input)
|
|
96
|
+
})
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
).
|
|
98
|
+
it('preserves valid NoticeDetail values through parse', () => {
|
|
99
|
+
const input = {
|
|
100
|
+
id: 1,
|
|
101
|
+
title: '공지',
|
|
102
|
+
author: '관리자',
|
|
103
|
+
createdAt: '2026-04-01',
|
|
104
|
+
content: '<p>내용</p>',
|
|
105
|
+
}
|
|
106
|
+
expect(NoticeDetailSchema.parse(input)).toEqual(input)
|
|
107
|
+
})
|
|
103
108
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
).
|
|
109
|
+
it('preserves valid TeamInfo values through parse', () => {
|
|
110
|
+
const input = {
|
|
111
|
+
teams: [
|
|
112
|
+
{ name: '오픈소마', memberCount: 3, joinStatus: '참여중' },
|
|
113
|
+
{ name: '김앤강', memberCount: 5, joinStatus: '참여하기' },
|
|
114
|
+
],
|
|
115
|
+
currentTeams: 1,
|
|
116
|
+
maxTeams: 100,
|
|
117
|
+
}
|
|
118
|
+
expect(TeamInfoSchema.parse(input)).toEqual(input)
|
|
119
|
+
})
|
|
114
120
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
).
|
|
121
|
+
it('preserves valid MemberInfo values through parse', () => {
|
|
122
|
+
const input = {
|
|
123
|
+
email: 'neo@example.com',
|
|
124
|
+
name: '전수열',
|
|
125
|
+
gender: '남자',
|
|
126
|
+
birthDate: '1995-01-14',
|
|
127
|
+
phone: '01012345678',
|
|
128
|
+
organization: 'Indent',
|
|
129
|
+
position: '',
|
|
130
|
+
}
|
|
131
|
+
expect(MemberInfoSchema.parse(input)).toEqual(input)
|
|
132
|
+
})
|
|
126
133
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
).
|
|
134
|
+
it('preserves valid EventListItem values through parse', () => {
|
|
135
|
+
const input = {
|
|
136
|
+
id: 11,
|
|
137
|
+
category: '행사',
|
|
138
|
+
title: '데모데이',
|
|
139
|
+
registrationPeriod: { start: '2026-04-01', end: '2026-04-05' },
|
|
140
|
+
eventPeriod: { start: '2026-04-10', end: '2026-04-10' },
|
|
141
|
+
status: '접수중',
|
|
142
|
+
createdAt: '2026-03-30',
|
|
143
|
+
}
|
|
144
|
+
expect(EventListItemSchema.parse(input)).toEqual(input)
|
|
145
|
+
})
|
|
138
146
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
).
|
|
147
|
+
it('preserves valid ApplicationHistoryItem values through parse', () => {
|
|
148
|
+
const input = {
|
|
149
|
+
id: 99,
|
|
150
|
+
category: '멘토 특강',
|
|
151
|
+
title: 'AI 멘토링',
|
|
152
|
+
author: '전수열',
|
|
153
|
+
sessionDate: '2026-04-11',
|
|
154
|
+
appliedAt: '2026-04-02 09:00',
|
|
155
|
+
applicationStatus: '신청완료',
|
|
156
|
+
approvalStatus: 'OK',
|
|
157
|
+
applicationDetail: '승인대기',
|
|
158
|
+
note: '-',
|
|
159
|
+
}
|
|
160
|
+
expect(ApplicationHistoryItemSchema.parse(input)).toEqual(input)
|
|
161
|
+
})
|
|
153
162
|
|
|
154
|
-
|
|
163
|
+
it('preserves valid Pagination values through parse', () => {
|
|
164
|
+
const input = { total: 23, currentPage: 2, totalPages: 3 }
|
|
165
|
+
expect(PaginationSchema.parse(input)).toEqual(input)
|
|
166
|
+
})
|
|
155
167
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
).
|
|
168
|
+
it('preserves valid Credentials values through parse', () => {
|
|
169
|
+
const input = {
|
|
170
|
+
sessionCookie: 'session-token',
|
|
171
|
+
csrfToken: 'csrf-token',
|
|
172
|
+
username: 'neo@example.com',
|
|
173
|
+
loggedInAt: '2026-04-09T00:00:00.000Z',
|
|
174
|
+
}
|
|
175
|
+
expect(CredentialsSchema.parse(input)).toEqual(input)
|
|
176
|
+
})
|
|
164
177
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
).
|
|
178
|
+
it('preserves valid ReportListItem values through parse', () => {
|
|
179
|
+
const input = {
|
|
180
|
+
id: 1,
|
|
181
|
+
category: '멘토링',
|
|
182
|
+
title: 'AI 멘토링 보고서',
|
|
183
|
+
progressDate: '2026-04-10',
|
|
184
|
+
status: '승인완료',
|
|
185
|
+
author: '전수열',
|
|
186
|
+
createdAt: '2026-04-11',
|
|
187
|
+
acceptedTime: '2시간',
|
|
188
|
+
payAmount: '100000',
|
|
189
|
+
}
|
|
190
|
+
expect(ReportListItemSchema.parse(input)).toEqual(input)
|
|
191
|
+
})
|
|
178
192
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
).
|
|
193
|
+
it('preserves valid ReportDetail values through parse', () => {
|
|
194
|
+
const input = {
|
|
195
|
+
id: 1,
|
|
196
|
+
category: '멘토링',
|
|
197
|
+
title: 'AI 멘토링 보고서',
|
|
198
|
+
progressDate: '2026-04-10',
|
|
199
|
+
status: '승인완료',
|
|
200
|
+
author: '전수열',
|
|
201
|
+
createdAt: '2026-04-11',
|
|
202
|
+
acceptedTime: '2시간',
|
|
203
|
+
payAmount: '100000',
|
|
204
|
+
content: '멘토링 진행 내용',
|
|
205
|
+
subject: 'AI 기술 멘토링',
|
|
206
|
+
menteeRegion: 'S',
|
|
207
|
+
reportType: 'MRC010',
|
|
208
|
+
teamNames: '오픈소마',
|
|
209
|
+
venue: '스페이스 A1',
|
|
210
|
+
attendanceCount: 4,
|
|
211
|
+
attendanceNames: '김개발, 박코딩, 이알고, 최리즘',
|
|
212
|
+
progressStartTime: '14:00',
|
|
213
|
+
progressEndTime: '16:00',
|
|
214
|
+
exceptStartTime: '',
|
|
215
|
+
exceptEndTime: '',
|
|
216
|
+
exceptReason: '',
|
|
217
|
+
mentorOpinion: '우수',
|
|
218
|
+
nonAttendanceNames: '',
|
|
219
|
+
etc: '',
|
|
220
|
+
files: [],
|
|
221
|
+
}
|
|
222
|
+
expect(ReportDetailSchema.parse(input)).toEqual(input)
|
|
223
|
+
})
|
|
209
224
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
).
|
|
225
|
+
it('preserves valid ApprovalListItem values through parse', () => {
|
|
226
|
+
const input = {
|
|
227
|
+
id: 1,
|
|
228
|
+
category: '멘토링',
|
|
229
|
+
title: 'AI 멘토링 보고서',
|
|
230
|
+
progressDate: '2026-04-10',
|
|
231
|
+
status: '승인완료',
|
|
232
|
+
author: '전수열',
|
|
233
|
+
createdAt: '2026-04-11',
|
|
234
|
+
acceptedTime: '2시간',
|
|
235
|
+
travelExpense: '50000',
|
|
236
|
+
mentoringAllowance: '100000',
|
|
237
|
+
}
|
|
238
|
+
expect(ApprovalListItemSchema.parse(input)).toEqual(input)
|
|
239
|
+
})
|
|
224
240
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
).
|
|
241
|
+
it('preserves valid ReportCreateOptions values through parse', () => {
|
|
242
|
+
const input = {
|
|
243
|
+
menteeRegion: 'S',
|
|
244
|
+
reportType: 'MRC010',
|
|
245
|
+
progressDate: '2026-04-10',
|
|
246
|
+
venue: '스페이스 A1',
|
|
247
|
+
attendanceCount: 4,
|
|
248
|
+
attendanceNames: '김개발, 박코딩, 이알고, 최리즘',
|
|
249
|
+
progressStartTime: '14:00',
|
|
250
|
+
progressEndTime: '16:00',
|
|
251
|
+
subject: 'AI 멘토링 진행 보고',
|
|
252
|
+
content:
|
|
253
|
+
'이번 멘토링에서는 AI 기술의 기초 개념과 실제 적용 사례에 대해 다루었습니다. 참가자들은 머신러닝의 기본 원리와 딥러닝의 구조에 대해 학습하고, 실습을 통해 모델을 구현해보았습니다.',
|
|
254
|
+
}
|
|
255
|
+
expect(ReportCreateOptionsSchema.parse(input)).toEqual(input)
|
|
240
256
|
})
|
|
241
257
|
|
|
242
|
-
|
|
258
|
+
it('rejects invalid values for every schema', () => {
|
|
243
259
|
expect(() => MentoringListItemSchema.parse({})).toThrow()
|
|
244
260
|
expect(() => MentoringDetailSchema.parse({ content: 123 })).toThrow()
|
|
245
261
|
expect(() => RoomCardSchema.parse({ itemId: '17' })).toThrow()
|
package/src/types.ts
CHANGED
|
@@ -151,9 +151,67 @@ export const CredentialsSchema = z.object({
|
|
|
151
151
|
username: z.string().optional(),
|
|
152
152
|
password: z.string().optional(),
|
|
153
153
|
loggedInAt: z.string().optional(),
|
|
154
|
+
tozName: z.string().optional(),
|
|
155
|
+
tozPhone: z.string().optional(),
|
|
154
156
|
})
|
|
155
157
|
export type Credentials = z.infer<typeof CredentialsSchema>
|
|
156
158
|
|
|
159
|
+
export const TozBranchSchema = z.object({
|
|
160
|
+
id: z.number(),
|
|
161
|
+
name: z.string(),
|
|
162
|
+
})
|
|
163
|
+
export type TozBranch = z.infer<typeof TozBranchSchema>
|
|
164
|
+
|
|
165
|
+
export const TozMeetingSchema = z.object({
|
|
166
|
+
id: z.number(),
|
|
167
|
+
name: z.string(),
|
|
168
|
+
})
|
|
169
|
+
export type TozMeeting = z.infer<typeof TozMeetingSchema>
|
|
170
|
+
|
|
171
|
+
export const TozDurationSchema = z.object({
|
|
172
|
+
key: z.string(),
|
|
173
|
+
value: z.string(),
|
|
174
|
+
minutes: z.number(),
|
|
175
|
+
})
|
|
176
|
+
export type TozDuration = z.infer<typeof TozDurationSchema>
|
|
177
|
+
|
|
178
|
+
export const TozBoothSchema = z.object({
|
|
179
|
+
id: z.number(),
|
|
180
|
+
name: z.string(),
|
|
181
|
+
branchName: z.string(),
|
|
182
|
+
branchTel: z.string(),
|
|
183
|
+
minUseUserCount: z.number(),
|
|
184
|
+
enableMaxUserCount: z.number(),
|
|
185
|
+
boothGroupName: z.string(),
|
|
186
|
+
boothGroupUrl: z.string().nullable(),
|
|
187
|
+
boothMemoForUser: z.string(),
|
|
188
|
+
isLargeBooth: z.boolean(),
|
|
189
|
+
})
|
|
190
|
+
export type TozBooth = z.infer<typeof TozBoothSchema>
|
|
191
|
+
|
|
192
|
+
export const TozReservedSchema = z.object({
|
|
193
|
+
reservationId: z.string(),
|
|
194
|
+
branchName: z.string(),
|
|
195
|
+
branchTel: z.string(),
|
|
196
|
+
boothGroupName: z.string(),
|
|
197
|
+
isLargeBooth: z.boolean(),
|
|
198
|
+
})
|
|
199
|
+
export type TozReserved = z.infer<typeof TozReservedSchema>
|
|
200
|
+
|
|
201
|
+
export const TozReservationSchema = z.object({
|
|
202
|
+
no: z.number(),
|
|
203
|
+
reservationId: z.number().nullable(),
|
|
204
|
+
meetingName: z.string(),
|
|
205
|
+
date: z.string(),
|
|
206
|
+
startTime: z.string(),
|
|
207
|
+
endTime: z.string(),
|
|
208
|
+
branchName: z.string(),
|
|
209
|
+
boothName: z.string(),
|
|
210
|
+
reservedAt: z.string(),
|
|
211
|
+
status: z.string(),
|
|
212
|
+
})
|
|
213
|
+
export type TozReservation = z.infer<typeof TozReservationSchema>
|
|
214
|
+
|
|
157
215
|
export const ReportListItemSchema = z.object({
|
|
158
216
|
id: z.number(),
|
|
159
217
|
category: z.string(),
|