academe-kit 0.10.0 → 0.10.2
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/index.cjs +181 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +451 -4
- package/dist/index.esm.js +181 -41
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/JourneyStep/frames/types.d.ts +10 -0
- package/dist/types/services/ReportService.d.ts +67 -0
- package/dist/types/services/SubmissionService.d.ts +21 -1
- package/dist/types/services/UserProgressService.d.ts +239 -0
- package/dist/types/services/index.d.ts +3 -0
- package/dist/types/types/academe-api.d.ts +126 -3
- package/package.json +1 -1
|
@@ -26,9 +26,19 @@ export interface FrameRenderArgs {
|
|
|
26
26
|
scale: number;
|
|
27
27
|
layout: FrameLayout;
|
|
28
28
|
progress?: number;
|
|
29
|
+
/** Frames que renderizam o próprio ícone (3D) recebem-no aqui. */
|
|
30
|
+
icon?: ReactNode;
|
|
31
|
+
/** Permite ao frame estilizar o ícone no estado bloqueado. */
|
|
32
|
+
isLocked?: boolean;
|
|
29
33
|
}
|
|
30
34
|
export interface FrameRenderer {
|
|
31
35
|
kind: FrameKind;
|
|
36
|
+
/**
|
|
37
|
+
* Frames 3D (ex.: sphere) desenham profundidade (base/skirt + lift + squash)
|
|
38
|
+
* e renderizam o próprio ícone. Quando true, o JourneyStep adiciona a classe
|
|
39
|
+
* `is-3d`, repassa o ícone ao frame e não desenha o ícone padrão.
|
|
40
|
+
*/
|
|
41
|
+
is3d?: boolean;
|
|
32
42
|
layout: (scale: number) => FrameLayout;
|
|
33
43
|
render: (args: FrameRenderArgs) => ReactNode;
|
|
34
44
|
}
|
|
@@ -645,6 +645,73 @@ export declare function createReportService(apiClient: AcademeApiClient): {
|
|
|
645
645
|
} | undefined;
|
|
646
646
|
};
|
|
647
647
|
}, `${string}/${string}`>>;
|
|
648
|
+
/**
|
|
649
|
+
* Status de jornada dos alunos para os summary cards da rota /students.
|
|
650
|
+
*
|
|
651
|
+
* @param id UUID da instituição.
|
|
652
|
+
* @param params.periodId UUID do bimestre, ou `"all"` para todos os bimestres
|
|
653
|
+
* do ano letivo. Omitido = bimestre corrente.
|
|
654
|
+
* @param params.challengeId UUID de UM challenge específico para restringir o
|
|
655
|
+
* cálculo dentro do recorte temporal.
|
|
656
|
+
*/
|
|
657
|
+
getStudentsJourneyStatusByInstitution(id: string, params?: {
|
|
658
|
+
periodId?: string;
|
|
659
|
+
challengeId?: string;
|
|
660
|
+
}): Promise<import("openapi-fetch").FetchResponse<{
|
|
661
|
+
parameters: {
|
|
662
|
+
query?: {
|
|
663
|
+
periodId?: string;
|
|
664
|
+
challengeId?: string;
|
|
665
|
+
};
|
|
666
|
+
header?: never;
|
|
667
|
+
path: {
|
|
668
|
+
id: string;
|
|
669
|
+
};
|
|
670
|
+
cookie?: never;
|
|
671
|
+
};
|
|
672
|
+
requestBody?: never;
|
|
673
|
+
responses: {
|
|
674
|
+
200: {
|
|
675
|
+
headers: {
|
|
676
|
+
[name: string]: unknown;
|
|
677
|
+
};
|
|
678
|
+
content: {
|
|
679
|
+
"application/json": {
|
|
680
|
+
status?: string;
|
|
681
|
+
data?: import("../types/academe-api").components["schemas"]["StudentsJourneyStatusResponse"];
|
|
682
|
+
};
|
|
683
|
+
};
|
|
684
|
+
};
|
|
685
|
+
400: {
|
|
686
|
+
headers: {
|
|
687
|
+
[name: string]: unknown;
|
|
688
|
+
};
|
|
689
|
+
content?: never;
|
|
690
|
+
};
|
|
691
|
+
401: {
|
|
692
|
+
headers: {
|
|
693
|
+
[name: string]: unknown;
|
|
694
|
+
};
|
|
695
|
+
content?: never;
|
|
696
|
+
};
|
|
697
|
+
500: {
|
|
698
|
+
headers: {
|
|
699
|
+
[name: string]: unknown;
|
|
700
|
+
};
|
|
701
|
+
content?: never;
|
|
702
|
+
};
|
|
703
|
+
};
|
|
704
|
+
}, {
|
|
705
|
+
params: {
|
|
706
|
+
path: {
|
|
707
|
+
id: string;
|
|
708
|
+
};
|
|
709
|
+
query: {
|
|
710
|
+
periodId?: string;
|
|
711
|
+
challengeId?: string;
|
|
712
|
+
} | undefined;
|
|
713
|
+
};
|
|
714
|
+
}, `${string}/${string}`>>;
|
|
648
715
|
};
|
|
649
716
|
export type ReportService = ReturnType<typeof createReportService>;
|
|
650
717
|
export {};
|
|
@@ -19,7 +19,11 @@ export declare function createSubmissionService(apiClient: AcademeApiClient): {
|
|
|
19
19
|
userId?: string;
|
|
20
20
|
groupId?: string;
|
|
21
21
|
institutionId?: string;
|
|
22
|
+
institutionClassroomId?: string;
|
|
23
|
+
serieId?: string;
|
|
22
24
|
status?: "submitted" | "ai_evaluated" | "approved" | "rejected";
|
|
25
|
+
search?: string;
|
|
26
|
+
periodId?: string;
|
|
23
27
|
page?: import("../types/academe-api").components["parameters"]["page"];
|
|
24
28
|
limit?: import("../types/academe-api").components["parameters"]["limit"];
|
|
25
29
|
};
|
|
@@ -36,7 +40,13 @@ export declare function createSubmissionService(apiClient: AcademeApiClient): {
|
|
|
36
40
|
content: {
|
|
37
41
|
"application/json": {
|
|
38
42
|
status?: string;
|
|
39
|
-
data?: import("../types/academe-api").components["schemas"]["Submission"]
|
|
43
|
+
data?: (import("../types/academe-api").components["schemas"]["Submission"] & {
|
|
44
|
+
period?: {
|
|
45
|
+
id?: string;
|
|
46
|
+
index?: number;
|
|
47
|
+
label?: string;
|
|
48
|
+
} | null;
|
|
49
|
+
})[];
|
|
40
50
|
meta?: import("../types/academe-api").components["schemas"]["PaginationMeta"] & {
|
|
41
51
|
statusCounts?: {
|
|
42
52
|
submitted?: number;
|
|
@@ -44,6 +54,12 @@ export declare function createSubmissionService(apiClient: AcademeApiClient): {
|
|
|
44
54
|
approved?: number;
|
|
45
55
|
rejected?: number;
|
|
46
56
|
};
|
|
57
|
+
periods?: {
|
|
58
|
+
id?: string;
|
|
59
|
+
index?: number;
|
|
60
|
+
label?: string;
|
|
61
|
+
isCurrent?: boolean;
|
|
62
|
+
}[];
|
|
47
63
|
};
|
|
48
64
|
};
|
|
49
65
|
};
|
|
@@ -57,7 +73,11 @@ export declare function createSubmissionService(apiClient: AcademeApiClient): {
|
|
|
57
73
|
userId?: string;
|
|
58
74
|
groupId?: string;
|
|
59
75
|
institutionId?: string;
|
|
76
|
+
institutionClassroomId?: string;
|
|
77
|
+
serieId?: string;
|
|
60
78
|
status?: "submitted" | "ai_evaluated" | "approved" | "rejected";
|
|
79
|
+
search?: string;
|
|
80
|
+
periodId?: string;
|
|
61
81
|
page?: import("../types/academe-api").components["parameters"]["page"];
|
|
62
82
|
limit?: import("../types/academe-api").components["parameters"]["limit"];
|
|
63
83
|
} | undefined;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import type { AcademeApiClient } from "./index";
|
|
2
|
+
import type { components } from "../types/academe-api";
|
|
3
|
+
export type JourneyStepView = components["schemas"]["JourneyStepView"];
|
|
4
|
+
export type JourneyChallengeView = components["schemas"]["JourneyChallengeView"];
|
|
5
|
+
export type JourneyView = components["schemas"]["JourneyView"];
|
|
6
|
+
/**
|
|
7
|
+
* Service do agregado `user-challenge-progress` — o caminho oficial para os
|
|
8
|
+
* clientes (web/mobile) montarem a jornada e o progresso do usuário. Espelha
|
|
9
|
+
* app-academe-v2/src/services/academe/user-progress.service.ts.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createUserProgressService(apiClient: AcademeApiClient): {
|
|
12
|
+
/**
|
|
13
|
+
* Jornada pré-computada do usuário (status, progress, color, icon,
|
|
14
|
+
* isUpcoming, série) — base de renderização direta da tela de jornada.
|
|
15
|
+
*/
|
|
16
|
+
getJourney(serieId?: string): Promise<JourneyView>;
|
|
17
|
+
/**
|
|
18
|
+
* Visão step-by-step do progresso do usuário em um desafio. Cada step traz
|
|
19
|
+
* `myStartedAt`, `myCompletedAt` e (em desafios em grupo) os agregados do
|
|
20
|
+
* grupo.
|
|
21
|
+
*/
|
|
22
|
+
getChallengeProgress(challengeId: string): Promise<import("openapi-fetch").FetchResponse<{
|
|
23
|
+
parameters: {
|
|
24
|
+
query?: never;
|
|
25
|
+
header?: never;
|
|
26
|
+
path: {
|
|
27
|
+
id: components["parameters"]["id"];
|
|
28
|
+
};
|
|
29
|
+
cookie?: never;
|
|
30
|
+
};
|
|
31
|
+
requestBody?: never;
|
|
32
|
+
responses: {
|
|
33
|
+
200: {
|
|
34
|
+
headers: {
|
|
35
|
+
[name: string]: unknown;
|
|
36
|
+
};
|
|
37
|
+
content: {
|
|
38
|
+
"application/json": {
|
|
39
|
+
status?: string;
|
|
40
|
+
data?: {
|
|
41
|
+
challengeStepId?: string;
|
|
42
|
+
stepName?: string;
|
|
43
|
+
index?: number;
|
|
44
|
+
totalMembers?: number;
|
|
45
|
+
completedMembers?: number;
|
|
46
|
+
groupCompleted?: boolean;
|
|
47
|
+
myStartedAt?: string | null;
|
|
48
|
+
myCompletedAt?: string | null;
|
|
49
|
+
}[];
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
401: components["responses"]["Unauthorized"];
|
|
54
|
+
404: components["responses"]["NotFound"];
|
|
55
|
+
};
|
|
56
|
+
}, {
|
|
57
|
+
params: {
|
|
58
|
+
path: {
|
|
59
|
+
id: string;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
}, `${string}/${string}`>>;
|
|
63
|
+
/**
|
|
64
|
+
* Avança um tick na jornada do usuário no desafio, agnóstico do tipo da
|
|
65
|
+
* etapa. Cada chamada executa UMA ação:
|
|
66
|
+
* - Sem progresso na etapa atual → action='started'
|
|
67
|
+
* - Etapa iniciada (sem completedAt) → action='completed'
|
|
68
|
+
* - Todas as etapas concluídas → action='finished' (no-op)
|
|
69
|
+
*
|
|
70
|
+
* Caminho oficial para clientes (web/mobile). Não usar os endpoints
|
|
71
|
+
* internos `/steps/{stepId}/start` ou `/steps/{stepId}/complete`.
|
|
72
|
+
*/
|
|
73
|
+
advance(challengeId: string): Promise<import("openapi-fetch").FetchResponse<{
|
|
74
|
+
parameters: {
|
|
75
|
+
query?: never;
|
|
76
|
+
header?: never;
|
|
77
|
+
path: {
|
|
78
|
+
id: components["parameters"]["id"];
|
|
79
|
+
};
|
|
80
|
+
cookie?: never;
|
|
81
|
+
};
|
|
82
|
+
requestBody?: never;
|
|
83
|
+
responses: {
|
|
84
|
+
200: {
|
|
85
|
+
headers: {
|
|
86
|
+
[name: string]: unknown;
|
|
87
|
+
};
|
|
88
|
+
content: {
|
|
89
|
+
"application/json": {
|
|
90
|
+
status?: string;
|
|
91
|
+
data?: {
|
|
92
|
+
action?: "started" | "completed" | "finished";
|
|
93
|
+
challengeId?: string;
|
|
94
|
+
currentStep?: {
|
|
95
|
+
id?: string;
|
|
96
|
+
index?: number;
|
|
97
|
+
name?: string;
|
|
98
|
+
startedAt?: string | null;
|
|
99
|
+
completedAt?: string | null;
|
|
100
|
+
} | null;
|
|
101
|
+
nextStep?: {
|
|
102
|
+
id?: string;
|
|
103
|
+
index?: number;
|
|
104
|
+
name?: string;
|
|
105
|
+
startedAt?: string | null;
|
|
106
|
+
} | null;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
401: components["responses"]["Unauthorized"];
|
|
112
|
+
404: components["responses"]["NotFound"];
|
|
113
|
+
};
|
|
114
|
+
}, {
|
|
115
|
+
params: {
|
|
116
|
+
path: {
|
|
117
|
+
id: string;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
}, `${string}/${string}`>>;
|
|
121
|
+
/**
|
|
122
|
+
* Status de conclusão do grupo numa etapa. Em desafios em grupo: retorna a
|
|
123
|
+
* agregação (`canAdvance=true` quando todos concluíram). Em desafios
|
|
124
|
+
* individuais: retorna o status do próprio usuário.
|
|
125
|
+
*/
|
|
126
|
+
getStepGroupStatus(stepId: string): Promise<import("openapi-fetch").FetchResponse<{
|
|
127
|
+
parameters: {
|
|
128
|
+
query?: never;
|
|
129
|
+
header?: never;
|
|
130
|
+
path: {
|
|
131
|
+
stepId: string;
|
|
132
|
+
};
|
|
133
|
+
cookie?: never;
|
|
134
|
+
};
|
|
135
|
+
requestBody?: never;
|
|
136
|
+
responses: {
|
|
137
|
+
200: {
|
|
138
|
+
headers: {
|
|
139
|
+
[name: string]: unknown;
|
|
140
|
+
};
|
|
141
|
+
content: {
|
|
142
|
+
"application/json": {
|
|
143
|
+
status?: string;
|
|
144
|
+
data?: {
|
|
145
|
+
isGroupChallenge?: boolean;
|
|
146
|
+
totalMembers?: number;
|
|
147
|
+
completedMembers?: number;
|
|
148
|
+
canAdvance?: boolean;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
401: components["responses"]["Unauthorized"];
|
|
154
|
+
404: components["responses"]["NotFound"];
|
|
155
|
+
};
|
|
156
|
+
}, {
|
|
157
|
+
params: {
|
|
158
|
+
path: {
|
|
159
|
+
stepId: string;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
}, `${string}/${string}`>>;
|
|
163
|
+
/**
|
|
164
|
+
* Progresso agregado do usuário em um módulo (ou no curso inteiro quando
|
|
165
|
+
* `moduleId` é omitido). Usado pelos steps do tipo `course` da jornada.
|
|
166
|
+
*/
|
|
167
|
+
getCourseProgress(courseId: string, moduleId?: string | null): Promise<import("openapi-fetch").FetchResponse<{
|
|
168
|
+
parameters: {
|
|
169
|
+
query?: never;
|
|
170
|
+
header?: never;
|
|
171
|
+
path: {
|
|
172
|
+
courseId: string;
|
|
173
|
+
moduleId: string;
|
|
174
|
+
};
|
|
175
|
+
cookie?: never;
|
|
176
|
+
};
|
|
177
|
+
requestBody?: never;
|
|
178
|
+
responses: {
|
|
179
|
+
200: {
|
|
180
|
+
headers: {
|
|
181
|
+
[name: string]: unknown;
|
|
182
|
+
};
|
|
183
|
+
content: {
|
|
184
|
+
"application/json": {
|
|
185
|
+
status?: string;
|
|
186
|
+
data?: components["schemas"]["UsersCourseLogProgress"];
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
401: components["responses"]["Unauthorized"];
|
|
191
|
+
404: components["responses"]["NotFound"];
|
|
192
|
+
};
|
|
193
|
+
}, {
|
|
194
|
+
params: {
|
|
195
|
+
path: {
|
|
196
|
+
courseId: string;
|
|
197
|
+
moduleId: string;
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
}, `${string}/${string}`>>;
|
|
201
|
+
/**
|
|
202
|
+
* [Interno] Força o início de uma etapa específica (idempotente). Clientes
|
|
203
|
+
* devem preferir `advance`; mantido para casos pontuais (ex.: iniciar a
|
|
204
|
+
* próxima etapa após concluir um curso aberto a partir da jornada).
|
|
205
|
+
*/
|
|
206
|
+
start(stepId: string): Promise<import("openapi-fetch").FetchResponse<{
|
|
207
|
+
parameters: {
|
|
208
|
+
query?: never;
|
|
209
|
+
header?: never;
|
|
210
|
+
path: {
|
|
211
|
+
stepId: string;
|
|
212
|
+
};
|
|
213
|
+
cookie?: never;
|
|
214
|
+
};
|
|
215
|
+
requestBody?: never;
|
|
216
|
+
responses: {
|
|
217
|
+
201: {
|
|
218
|
+
headers: {
|
|
219
|
+
[name: string]: unknown;
|
|
220
|
+
};
|
|
221
|
+
content: {
|
|
222
|
+
"application/json": {
|
|
223
|
+
status?: string;
|
|
224
|
+
data?: components["schemas"]["UserChallengeProgress"];
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
401: components["responses"]["Unauthorized"];
|
|
229
|
+
404: components["responses"]["NotFound"];
|
|
230
|
+
};
|
|
231
|
+
}, {
|
|
232
|
+
params: {
|
|
233
|
+
path: {
|
|
234
|
+
stepId: string;
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
}, `${string}/${string}`>>;
|
|
238
|
+
};
|
|
239
|
+
export type UserProgressService = ReturnType<typeof createUserProgressService>;
|
|
@@ -21,6 +21,7 @@ import { type StorageFileService } from './StorageFileService';
|
|
|
21
21
|
import { type ChallengeService } from './ChallengeService';
|
|
22
22
|
import { type StepService } from './StepService';
|
|
23
23
|
import { type SubmissionService } from './SubmissionService';
|
|
24
|
+
import { type UserProgressService } from './UserProgressService';
|
|
24
25
|
export type AcademeApiClient = ReturnType<typeof createClient<paths>>;
|
|
25
26
|
export declare function createAcademeApiClient(baseUrl: string): AcademeApiClient;
|
|
26
27
|
export interface AcademeServices {
|
|
@@ -45,6 +46,7 @@ export interface AcademeServices {
|
|
|
45
46
|
challenge: ChallengeService;
|
|
46
47
|
step: StepService;
|
|
47
48
|
submission: SubmissionService;
|
|
49
|
+
userProgress: UserProgressService;
|
|
48
50
|
}
|
|
49
51
|
export declare function createAcademeServices(apiClient: AcademeApiClient): AcademeServices;
|
|
50
52
|
export { createUserService, type UserService } from "./userService";
|
|
@@ -67,3 +69,4 @@ export { createStorageFileService, type StorageFileService } from './StorageFile
|
|
|
67
69
|
export { createChallengeService, type ChallengeService } from './ChallengeService';
|
|
68
70
|
export { createStepService, type StepService } from './StepService';
|
|
69
71
|
export { createSubmissionService, type SubmissionService } from './SubmissionService';
|
|
72
|
+
export { createUserProgressService, type UserProgressService } from './UserProgressService';
|
|
@@ -10703,6 +10703,77 @@ export interface paths {
|
|
|
10703
10703
|
patch?: never;
|
|
10704
10704
|
trace?: never;
|
|
10705
10705
|
};
|
|
10706
|
+
"/reports/students-journey-status/{id}": {
|
|
10707
|
+
parameters: {
|
|
10708
|
+
query?: never;
|
|
10709
|
+
header?: never;
|
|
10710
|
+
path?: never;
|
|
10711
|
+
cookie?: never;
|
|
10712
|
+
};
|
|
10713
|
+
/**
|
|
10714
|
+
* Status de jornada dos alunos por bimestre (cards de /students)
|
|
10715
|
+
* @description Recorta os alunos ativos da escola em 4 categorias mutuamente exclusivas
|
|
10716
|
+
* (notStarted, inJourney, inReview, completed) considerando os challenges
|
|
10717
|
+
* do bimestre alvo. Cada aluno cai na categoria mais avançada que alcançou.
|
|
10718
|
+
*/
|
|
10719
|
+
get: {
|
|
10720
|
+
parameters: {
|
|
10721
|
+
query?: {
|
|
10722
|
+
/** @description UUID do educational_model_period, OU a string literal `"all"` para considerar todos os bimestres. Omitido = corrente. */
|
|
10723
|
+
periodId?: string;
|
|
10724
|
+
/** @description Quando presente, restringe o cálculo a UM challenge específico dentro do recorte temporal. */
|
|
10725
|
+
challengeId?: string;
|
|
10726
|
+
};
|
|
10727
|
+
header?: never;
|
|
10728
|
+
path: {
|
|
10729
|
+
/** @description UUID da instituição */
|
|
10730
|
+
id: string;
|
|
10731
|
+
};
|
|
10732
|
+
cookie?: never;
|
|
10733
|
+
};
|
|
10734
|
+
requestBody?: never;
|
|
10735
|
+
responses: {
|
|
10736
|
+
/** @description Status agregado */
|
|
10737
|
+
200: {
|
|
10738
|
+
headers: {
|
|
10739
|
+
[name: string]: unknown;
|
|
10740
|
+
};
|
|
10741
|
+
content: {
|
|
10742
|
+
"application/json": {
|
|
10743
|
+
/** @example success */
|
|
10744
|
+
status?: string;
|
|
10745
|
+
data?: components["schemas"]["StudentsJourneyStatusResponse"];
|
|
10746
|
+
};
|
|
10747
|
+
};
|
|
10748
|
+
};
|
|
10749
|
+
400: {
|
|
10750
|
+
headers: {
|
|
10751
|
+
[name: string]: unknown;
|
|
10752
|
+
};
|
|
10753
|
+
content?: never;
|
|
10754
|
+
};
|
|
10755
|
+
401: {
|
|
10756
|
+
headers: {
|
|
10757
|
+
[name: string]: unknown;
|
|
10758
|
+
};
|
|
10759
|
+
content?: never;
|
|
10760
|
+
};
|
|
10761
|
+
500: {
|
|
10762
|
+
headers: {
|
|
10763
|
+
[name: string]: unknown;
|
|
10764
|
+
};
|
|
10765
|
+
content?: never;
|
|
10766
|
+
};
|
|
10767
|
+
};
|
|
10768
|
+
};
|
|
10769
|
+
put?: never;
|
|
10770
|
+
post?: never;
|
|
10771
|
+
delete?: never;
|
|
10772
|
+
options?: never;
|
|
10773
|
+
head?: never;
|
|
10774
|
+
patch?: never;
|
|
10775
|
+
trace?: never;
|
|
10776
|
+
};
|
|
10706
10777
|
"/roles": {
|
|
10707
10778
|
parameters: {
|
|
10708
10779
|
query?: never;
|
|
@@ -11687,7 +11758,13 @@ export interface paths {
|
|
|
11687
11758
|
userId?: string;
|
|
11688
11759
|
groupId?: string;
|
|
11689
11760
|
institutionId?: string;
|
|
11761
|
+
institutionClassroomId?: string;
|
|
11762
|
+
serieId?: string;
|
|
11690
11763
|
status?: "submitted" | "ai_evaluated" | "approved" | "rejected";
|
|
11764
|
+
/** @description Busca por nome ou e-mail do aluno */
|
|
11765
|
+
search?: string;
|
|
11766
|
+
/** @description UUID de um educational_model_period. Recorta as submissões cuja data de envio (submittedAt) cai no intervalo [start, end] do período. Omitido = todos os períodos. */
|
|
11767
|
+
periodId?: string;
|
|
11691
11768
|
/** @description Page number */
|
|
11692
11769
|
page?: components["parameters"]["page"];
|
|
11693
11770
|
/** @description Items per page */
|
|
@@ -11708,7 +11785,16 @@ export interface paths {
|
|
|
11708
11785
|
"application/json": {
|
|
11709
11786
|
/** @example success */
|
|
11710
11787
|
status?: string;
|
|
11711
|
-
data?: components["schemas"]["Submission"]
|
|
11788
|
+
data?: (components["schemas"]["Submission"] & {
|
|
11789
|
+
/** @description Período letivo cujo intervalo contém a data de envio (submittedAt). Null quando a escola não tem períodos ou o envio caiu fora de qualquer período. */
|
|
11790
|
+
period?: {
|
|
11791
|
+
id?: string;
|
|
11792
|
+
/** @description 0-based (0 = 1º período) */
|
|
11793
|
+
index?: number;
|
|
11794
|
+
/** @example 1º Bimestre */
|
|
11795
|
+
label?: string;
|
|
11796
|
+
} | null;
|
|
11797
|
+
})[];
|
|
11712
11798
|
meta?: components["schemas"]["PaginationMeta"] & {
|
|
11713
11799
|
/**
|
|
11714
11800
|
* @description Contagem por status, ignorando o filtro `status`. Útil para
|
|
@@ -11724,6 +11810,14 @@ export interface paths {
|
|
|
11724
11810
|
/** @example 2 */
|
|
11725
11811
|
rejected?: number;
|
|
11726
11812
|
};
|
|
11813
|
+
/** @description Períodos letivos da escola (ORDER BY start ASC) para o dropdown de filtro. */
|
|
11814
|
+
periods?: {
|
|
11815
|
+
id?: string;
|
|
11816
|
+
index?: number;
|
|
11817
|
+
/** @example 1º Bimestre */
|
|
11818
|
+
label?: string;
|
|
11819
|
+
isCurrent?: boolean;
|
|
11820
|
+
}[];
|
|
11727
11821
|
};
|
|
11728
11822
|
};
|
|
11729
11823
|
};
|
|
@@ -14672,6 +14766,9 @@ export interface components {
|
|
|
14672
14766
|
createdAt: string;
|
|
14673
14767
|
/** Format: date-time */
|
|
14674
14768
|
updatedAt: string;
|
|
14769
|
+
organization?: components["schemas"]["Organization"] | null;
|
|
14770
|
+
address?: components["schemas"]["Address"] | null;
|
|
14771
|
+
institutionReward?: Record<string, never> | null;
|
|
14675
14772
|
};
|
|
14676
14773
|
Organization: {
|
|
14677
14774
|
/** Format: uuid */
|
|
@@ -16464,10 +16561,36 @@ export interface components {
|
|
|
16464
16561
|
courses?: components["schemas"]["EncourageJourneyCourse"][];
|
|
16465
16562
|
};
|
|
16466
16563
|
EncourageSubmissions: {
|
|
16564
|
+
/** @description Total de alunos ativos da escola (denominador para % concluído) */
|
|
16467
16565
|
total?: number;
|
|
16468
|
-
|
|
16566
|
+
/** @description Última submissão por (aluno, challenge do bimestre corrente) com teacher_score preenchido */
|
|
16567
|
+
finalized?: number;
|
|
16568
|
+
/** @description Última submissão por (aluno, challenge do bimestre corrente) ainda SEM teacher_score */
|
|
16469
16569
|
awaitingTeacher?: number;
|
|
16470
|
-
|
|
16570
|
+
};
|
|
16571
|
+
StudentsJourneyStatusSummary: {
|
|
16572
|
+
/** @description Alunos sem step concluído nos challenges do recorte */
|
|
16573
|
+
notStarted?: number;
|
|
16574
|
+
/** @description Tem step concluído mas sem submissão */
|
|
16575
|
+
inJourney?: number;
|
|
16576
|
+
/** @description Submissão pendente de avaliação (teacher_score nulo) */
|
|
16577
|
+
inReview?: number;
|
|
16578
|
+
/** @description Submissão já avaliada (teacher_score preenchido) */
|
|
16579
|
+
completed?: number;
|
|
16580
|
+
};
|
|
16581
|
+
StudentsJourneyStatusScope: {
|
|
16582
|
+
/** @description UUID do bimestre alvo; null quando allPeriods */
|
|
16583
|
+
periodId?: string | null;
|
|
16584
|
+
/** @description UUID do challenge alvo; null quando todos do recorte */
|
|
16585
|
+
challengeId?: string | null;
|
|
16586
|
+
/** @description Quantidade de challenges no recorte */
|
|
16587
|
+
challengesCount?: number;
|
|
16588
|
+
/** @description Total de alunos ativos da escola — fecha com a soma dos 4 status */
|
|
16589
|
+
totalStudents?: number;
|
|
16590
|
+
};
|
|
16591
|
+
StudentsJourneyStatusResponse: {
|
|
16592
|
+
summary?: components["schemas"]["StudentsJourneyStatusSummary"];
|
|
16593
|
+
scope?: components["schemas"]["StudentsJourneyStatusScope"];
|
|
16471
16594
|
};
|
|
16472
16595
|
EncourageClassPerformance: {
|
|
16473
16596
|
/** Format: uuid */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "academe-kit",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Official React SDK for Academe ecosystem - Authentication, protected routes, API services, and UI components for educational management applications",
|
|
6
6
|
"main": "dist/index.cjs",
|