@magmamath/students-features 1.5.1 → 1.5.3-rc.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/commonjs/features/chatbot/index.js +7 -0
- package/dist/commonjs/features/chatbot/index.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.js +99 -0
- package/dist/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.js.map +1 -0
- package/dist/commonjs/features/pmProgress/model/PmProgressModel.js +7 -1
- package/dist/commonjs/features/pmProgress/model/PmProgressModel.js.map +1 -1
- package/dist/commonjs/features/pmProgress/model/PmRecommendationsModel.js +20 -4
- package/dist/commonjs/features/pmProgress/model/PmRecommendationsModel.js.map +1 -1
- package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js +22 -1
- package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
- package/dist/module/features/chatbot/index.js +1 -0
- package/dist/module/features/chatbot/index.js.map +1 -1
- package/dist/module/features/chatbot/model/VoiceTranscriptSnapshotModel.js +94 -0
- package/dist/module/features/chatbot/model/VoiceTranscriptSnapshotModel.js.map +1 -0
- package/dist/module/features/pmProgress/model/PmProgressModel.js +7 -1
- package/dist/module/features/pmProgress/model/PmProgressModel.js.map +1 -1
- package/dist/module/features/pmProgress/model/PmRecommendationsModel.js +20 -4
- package/dist/module/features/pmProgress/model/PmRecommendationsModel.js.map +1 -1
- package/dist/module/features/pmProgress/shared/pmProgress.helpers.js +20 -0
- package/dist/module/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/index.d.ts +1 -0
- package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts +27 -0
- package/dist/typescript/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/model/PmProgressModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/model/PmRecommendationsModel.d.ts +9 -38
- package/dist/typescript/commonjs/features/pmProgress/model/PmRecommendationsModel.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
- package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts +1 -0
- package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/index.d.ts +1 -0
- package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts +27 -0
- package/dist/typescript/module/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/model/PmProgressModel.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/model/PmRecommendationsModel.d.ts +9 -38
- package/dist/typescript/module/features/pmProgress/model/PmRecommendationsModel.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
- package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts +1 -0
- package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/features/chatbot/index.ts +1 -0
- package/src/features/chatbot/model/VoiceTranscriptSnapshotModel.ts +128 -0
- package/src/features/chatbot/types/api.types.ts +1 -0
- package/src/features/pmProgress/model/PmProgressModel.ts +4 -1
- package/src/features/pmProgress/model/PmRecommendationsModel.ts +22 -6
- package/src/features/pmProgress/shared/pmProgress.helpers.ts +33 -0
|
@@ -39,8 +39,15 @@ Object.defineProperty(exports, "MessageVariant", {
|
|
|
39
39
|
return _modelTypes.MessageVariant;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "VoiceTranscriptSnapshotModel", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _VoiceTranscriptSnapshotModel.VoiceTranscriptSnapshotModel;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
var _Chatbot = require("./components/Chatbot.js");
|
|
43
49
|
var _ChatBotModel = require("./model/ChatBotModel.js");
|
|
50
|
+
var _VoiceTranscriptSnapshotModel = require("./model/VoiceTranscriptSnapshotModel.js");
|
|
44
51
|
var _t2sTypes = require("./types/t2s.types.js");
|
|
45
52
|
var _modelTypes = require("./types/model.types.js");
|
|
46
53
|
var _DefaultMessageCreator = require("./model/DefaultMessageCreator.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Chatbot","require","_ChatBotModel","_t2sTypes","_modelTypes","_DefaultMessageCreator","_styleTypes"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Chatbot","require","_ChatBotModel","_VoiceTranscriptSnapshotModel","_t2sTypes","_modelTypes","_DefaultMessageCreator","_styleTypes"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAeA,IAAAK,sBAAA,GAAAL,OAAA;AAGA,IAAAM,WAAA,GAAAN,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VoiceTranscriptSnapshotModel = void 0;
|
|
7
|
+
var _effector = require("effector");
|
|
8
|
+
var _types = require("../../voice/types.js");
|
|
9
|
+
const TRANSCRIPT_RETRY_INTERVAL_MS = 3000;
|
|
10
|
+
const TRANSCRIPT_MAX_RETRIES = 20;
|
|
11
|
+
// Voice key: `${assignmentId}-${problemId}-${attemptsCount}`
|
|
12
|
+
// Chat key: `${assignmentId}-${problemId}` — survives attempt increments and voice deletion.
|
|
13
|
+
const toChatKey = voiceKey => {
|
|
14
|
+
const lastDashIndex = voiceKey.lastIndexOf('-');
|
|
15
|
+
if (lastDashIndex <= 0) return null;
|
|
16
|
+
return voiceKey.slice(0, lastDashIndex);
|
|
17
|
+
};
|
|
18
|
+
class VoiceTranscriptSnapshotModel {
|
|
19
|
+
fetchTranscript = audioFileId => {
|
|
20
|
+
const cached = this.transcriptByAudioFileId.get(audioFileId);
|
|
21
|
+
if (cached) return cached;
|
|
22
|
+
const promise = this.pollTranscript(audioFileId).catch(() => undefined);
|
|
23
|
+
this.transcriptByAudioFileId.set(audioFileId, promise);
|
|
24
|
+
return promise;
|
|
25
|
+
};
|
|
26
|
+
getTranscriptForCurrent = async () => {
|
|
27
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
28
|
+
if (!voiceKey) return undefined;
|
|
29
|
+
const chatKey = toChatKey(voiceKey);
|
|
30
|
+
if (chatKey) {
|
|
31
|
+
const snapshot = this.snapshotByChatKey.get(chatKey);
|
|
32
|
+
if (snapshot) return snapshot;
|
|
33
|
+
}
|
|
34
|
+
const record = this.voiceRecord.collection.get(voiceKey);
|
|
35
|
+
if (!record) return undefined;
|
|
36
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
37
|
+
if (!audioFileId) return undefined;
|
|
38
|
+
return this.fetchTranscript(audioFileId);
|
|
39
|
+
};
|
|
40
|
+
wrapRequestHint = apiFn => {
|
|
41
|
+
return async (params, requestConfig) => {
|
|
42
|
+
const voiceTranscript = await this.getTranscriptForCurrent();
|
|
43
|
+
return apiFn(voiceTranscript ? {
|
|
44
|
+
...params,
|
|
45
|
+
voiceTranscript
|
|
46
|
+
} : params, requestConfig);
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
constructor({
|
|
50
|
+
voiceRecord,
|
|
51
|
+
api
|
|
52
|
+
}) {
|
|
53
|
+
this.voiceRecord = voiceRecord;
|
|
54
|
+
this.api = api;
|
|
55
|
+
(0, _effector.sample)({
|
|
56
|
+
clock: voiceRecord.setCurrentRecord,
|
|
57
|
+
source: voiceRecord.$currentKey,
|
|
58
|
+
filter: (_, record) => !!record,
|
|
59
|
+
fn: (voiceKey, record) => ({
|
|
60
|
+
voiceKey,
|
|
61
|
+
record
|
|
62
|
+
}),
|
|
63
|
+
target: this.captureSnapshotFx
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
transcriptByAudioFileId = new Map();
|
|
67
|
+
snapshotByChatKey = new Map();
|
|
68
|
+
captureSnapshotFx = (0, _effector.createEffect)(async ({
|
|
69
|
+
voiceKey,
|
|
70
|
+
record
|
|
71
|
+
}) => {
|
|
72
|
+
const chatKey = toChatKey(voiceKey);
|
|
73
|
+
if (!chatKey) return;
|
|
74
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
75
|
+
if (!audioFileId) return;
|
|
76
|
+
this.snapshotByChatKey.set(chatKey, this.fetchTranscript(audioFileId));
|
|
77
|
+
});
|
|
78
|
+
async pollTranscript(audioFileId) {
|
|
79
|
+
for (let attempt = 0; attempt < TRANSCRIPT_MAX_RETRIES; attempt++) {
|
|
80
|
+
await new Promise(resolve => setTimeout(resolve, TRANSCRIPT_RETRY_INTERVAL_MS));
|
|
81
|
+
const response = await this.api.getAudioFileTranscript(audioFileId);
|
|
82
|
+
if (response.status === _types.TranscriptionStatus.COMPLETED) return response.text;
|
|
83
|
+
if (response.status === _types.TranscriptionStatus.FAILED) return undefined;
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
async resolveAudioFileId(record) {
|
|
88
|
+
if (record.id) return record.id;
|
|
89
|
+
if (!record.audioUploadPromise) return undefined;
|
|
90
|
+
try {
|
|
91
|
+
const result = await record.audioUploadPromise;
|
|
92
|
+
return result?.id;
|
|
93
|
+
} catch {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.VoiceTranscriptSnapshotModel = VoiceTranscriptSnapshotModel;
|
|
99
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_effector","require","_types","TRANSCRIPT_RETRY_INTERVAL_MS","TRANSCRIPT_MAX_RETRIES","toChatKey","voiceKey","lastDashIndex","lastIndexOf","slice","VoiceTranscriptSnapshotModel","fetchTranscript","audioFileId","cached","transcriptByAudioFileId","get","promise","pollTranscript","catch","undefined","set","getTranscriptForCurrent","voiceRecord","$currentKey","getState","chatKey","snapshot","snapshotByChatKey","record","collection","resolveAudioFileId","wrapRequestHint","apiFn","params","requestConfig","voiceTranscript","constructor","api","sample","clock","setCurrentRecord","source","filter","_","fn","target","captureSnapshotFx","Map","createEffect","attempt","Promise","resolve","setTimeout","response","getAudioFileTranscript","status","TranscriptionStatus","COMPLETED","text","FAILED","id","audioUploadPromise","result","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,8 +35,14 @@ class PmProgressModel {
|
|
|
35
35
|
(0, _effector.sample)({
|
|
36
36
|
clock: this.tree.initTreeFx.done,
|
|
37
37
|
fn: ({
|
|
38
|
+
params: {
|
|
39
|
+
user
|
|
40
|
+
},
|
|
38
41
|
result: [tree]
|
|
39
|
-
}) =>
|
|
42
|
+
}) => ({
|
|
43
|
+
tree,
|
|
44
|
+
lockedGrades: user.setting.practiceModeLockedGrades
|
|
45
|
+
}),
|
|
40
46
|
target: this.recommendations.initRecommendationsFx
|
|
41
47
|
});
|
|
42
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_effectorReact","_not","_PmProgressApi","_PmTreeModel","_PmInsightsModel","_PmRecommendationsModel","_PmSolvingFlowModel","_PmHighlightModel","PmProgressModel","gate","createGate","constructor","api","PmProgressApi","highlight","PmHighlightModel","insights","PmInsightsModel","tree","PmTreeModel","recommendations","PmRecommendationsModel","solving","PmSolvingFlowModel","init","sample","clock","open","filter","not","initTreeFx","pending","target","getUserInsightsFx","done","fn","result","initRecommendationsFx","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmProgressModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,uBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AAMO,MAAMS,eAAe,CAAC;EACXC,IAAI,GAAG,IAAAC,yBAAU,EAAsB,CAAC;EASxDC,WAAWA,CAAC;IAAEC;EAA0B,CAAC,EAAE;IACzC,IAAI,CAACA,GAAG,GAAG,IAAIC,4BAAa,CAACD,GAAG,CAAC;IACjC,IAAI,CAACE,SAAS,GAAG,IAAIC,kCAAgB,CAAC,CAAC;IACvC,IAAI,CAACC,QAAQ,GAAG,IAAIC,gCAAe,CAAC,IAAI,CAACL,GAAG,CAAC;IAC7C,IAAI,CAACM,IAAI,GAAG,IAAIC,wBAAW,CAAC,IAAI,CAACP,GAAG,CAAC;IACrC,IAAI,CAACQ,eAAe,GAAG,IAAIC,8CAAsB,CAAC,IAAI,CAACT,GAAG,CAAC;IAC3D,IAAI,CAACU,OAAO,GAAG,IAAIC,sCAAkB,CAAC,IAAI,CAACL,IAAI,EAAE,IAAI,CAACE,eAAe,CAAC;IAEtE,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,IAAAC,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACjB,IAAI,CAACkB,IAAI;MACrBC,MAAM,EAAE,IAAAC,QAAG,EAAC,IAAI,CAACX,IAAI,CAACY,UAAU,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAACd,IAAI,CAACY,UAAU,EAAE,IAAI,CAAClB,GAAG,CAACqB,iBAAiB;IAC3D,CAAC,CAAC;IAEF,IAAAR,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACR,IAAI,CAACY,UAAU,CAACI,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"names":["_effector","require","_effectorReact","_not","_PmProgressApi","_PmTreeModel","_PmInsightsModel","_PmRecommendationsModel","_PmSolvingFlowModel","_PmHighlightModel","PmProgressModel","gate","createGate","constructor","api","PmProgressApi","highlight","PmHighlightModel","insights","PmInsightsModel","tree","PmTreeModel","recommendations","PmRecommendationsModel","solving","PmSolvingFlowModel","init","sample","clock","open","filter","not","initTreeFx","pending","target","getUserInsightsFx","done","fn","params","user","result","lockedGrades","setting","practiceModeLockedGrades","initRecommendationsFx","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmProgressModel.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,uBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AAMO,MAAMS,eAAe,CAAC;EACXC,IAAI,GAAG,IAAAC,yBAAU,EAAsB,CAAC;EASxDC,WAAWA,CAAC;IAAEC;EAA0B,CAAC,EAAE;IACzC,IAAI,CAACA,GAAG,GAAG,IAAIC,4BAAa,CAACD,GAAG,CAAC;IACjC,IAAI,CAACE,SAAS,GAAG,IAAIC,kCAAgB,CAAC,CAAC;IACvC,IAAI,CAACC,QAAQ,GAAG,IAAIC,gCAAe,CAAC,IAAI,CAACL,GAAG,CAAC;IAC7C,IAAI,CAACM,IAAI,GAAG,IAAIC,wBAAW,CAAC,IAAI,CAACP,GAAG,CAAC;IACrC,IAAI,CAACQ,eAAe,GAAG,IAAIC,8CAAsB,CAAC,IAAI,CAACT,GAAG,CAAC;IAC3D,IAAI,CAACU,OAAO,GAAG,IAAIC,sCAAkB,CAAC,IAAI,CAACL,IAAI,EAAE,IAAI,CAACE,eAAe,CAAC;IAEtE,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACb,IAAAC,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACjB,IAAI,CAACkB,IAAI;MACrBC,MAAM,EAAE,IAAAC,QAAG,EAAC,IAAI,CAACX,IAAI,CAACY,UAAU,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAACd,IAAI,CAACY,UAAU,EAAE,IAAI,CAAClB,GAAG,CAACqB,iBAAiB;IAC3D,CAAC,CAAC;IAEF,IAAAR,gBAAM,EAAC;MACLC,KAAK,EAAE,IAAI,CAACR,IAAI,CAACY,UAAU,CAACI,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC,MAAM,EAAE;UAAEC;QAAK,CAAC;QAAEC,MAAM,EAAE,CAACpB,IAAI;MAAE,CAAC,MAAM;QAC7CA,IAAI;QACJqB,YAAY,EAAEF,IAAI,CAACG,OAAO,CAACC;MAC7B,CAAC,CAAC;MACFT,MAAM,EAAE,IAAI,CAACZ,eAAe,CAACsB;IAC/B,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAAnC,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.PmRecommendationsModel = void 0;
|
|
7
7
|
var _effector = require("effector");
|
|
8
8
|
var _pmProgressConstants = require("../shared/pmProgress.constants.js");
|
|
9
|
+
var _pmProgressHelpers = require("../shared/pmProgress.helpers.js");
|
|
9
10
|
const EMPTY_RECS = {
|
|
10
11
|
items: [],
|
|
11
12
|
offset: 0,
|
|
@@ -24,10 +25,25 @@ class PmRecommendationsModel {
|
|
|
24
25
|
fetchTeacherRecsFx = (0, _effector.createEffect)(tree => this.fetchRecs(tree, _pmProgressConstants.SolvingFlow.TEACHER, () => this.api.getTeacherRecsFx({
|
|
25
26
|
limit: _pmProgressConstants.RECOMMENDATIONS_LIMIT_PARAM
|
|
26
27
|
})));
|
|
27
|
-
fetchMagmaRecsFx = (0, _effector.createEffect)(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
fetchMagmaRecsFx = (0, _effector.createEffect)(async ({
|
|
29
|
+
tree,
|
|
30
|
+
lockedGrades
|
|
31
|
+
}) => {
|
|
32
|
+
const recs = await this.fetchRecs(tree, _pmProgressConstants.SolvingFlow.MAGMA, () => this.api.getMagmaRecsFx({
|
|
33
|
+
limit: _pmProgressConstants.RECOMMENDATIONS_LIMIT_PARAM
|
|
34
|
+
}));
|
|
35
|
+
return {
|
|
36
|
+
...recs,
|
|
37
|
+
items: (0, _pmProgressHelpers.filterLockedGradeRecs)(recs.items, tree.treeMapping, lockedGrades)
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
initRecommendationsFx = (0, _effector.createEffect)(({
|
|
41
|
+
tree,
|
|
42
|
+
lockedGrades
|
|
43
|
+
}) => Promise.all([this.fetchTeacherRecsFx(tree), this.fetchMagmaRecsFx({
|
|
44
|
+
tree,
|
|
45
|
+
lockedGrades
|
|
46
|
+
})]));
|
|
31
47
|
fetchRecs = async (tree, type, fetcher) => {
|
|
32
48
|
const recommendations = await fetcher();
|
|
33
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_pmProgressConstants","EMPTY_RECS","items","offset","limit","total","PmRecommendationsModel","reset","createEvent","$teacher","createStore","$magma","constructor","api","on","fetchTeacherRecsFx","doneData","_","data","fetchMagmaRecsFx","createEffect","tree","fetchRecs","SolvingFlow","TEACHER","getTeacherRecsFx","RECOMMENDATIONS_LIMIT_PARAM","MAGMA","getMagmaRecsFx","initRecommendationsFx","Promise","all","type","fetcher","recommendations","flatMap","skillId","skill","skillsMapping","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmRecommendationsModel.ts"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,oBAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_effector","require","_pmProgressConstants","_pmProgressHelpers","EMPTY_RECS","items","offset","limit","total","PmRecommendationsModel","reset","createEvent","$teacher","createStore","$magma","constructor","api","on","fetchTeacherRecsFx","doneData","_","data","fetchMagmaRecsFx","createEffect","tree","fetchRecs","SolvingFlow","TEACHER","getTeacherRecsFx","RECOMMENDATIONS_LIMIT_PARAM","lockedGrades","recs","MAGMA","getMagmaRecsFx","filterLockedGradeRecs","treeMapping","initRecommendationsFx","Promise","all","type","fetcher","recommendations","flatMap","skillId","skill","skillsMapping","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmRecommendationsModel.ts"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAOA,MAAMG,UAA2B,GAAG;EAAEC,KAAK,EAAE,EAAE;EAAEC,MAAM,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,KAAK,EAAE;AAAE,CAAC;AAEzE,MAAMC,sBAAsB,CAAC;EAClBC,KAAK,GAAG,IAAAC,qBAAW,EAAC,CAAC;EAErBC,QAAQ,GAAG,IAAAC,qBAAW,EAAkBT,UAAU,CAAC,CAACM,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACrEI,MAAM,GAAG,IAAAD,qBAAW,EAAkBT,UAAU,CAAC,CAACM,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEnFK,WAAWA,CAAkBC,GAAkB,EAAE;IAAA,KAApBA,GAAkB,GAAlBA,GAAkB;IAC7C,IAAI,CAACJ,QAAQ,CAACK,EAAE,CAAC,IAAI,CAACC,kBAAkB,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;IACrE,IAAI,CAACP,MAAM,CAACG,EAAE,CAAC,IAAI,CAACK,gBAAgB,CAACH,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;EACnE;EAEgBH,kBAAkB,GAAG,IAAAK,sBAAY,EAAEC,IAAyB,IAC1E,IAAI,CAACC,SAAS,CAACD,IAAI,EAAEE,gCAAW,CAACC,OAAO,EAAE,MACxC,IAAI,CAACX,GAAG,CAACY,gBAAgB,CAAC;IAAErB,KAAK,EAAEsB;EAA4B,CAAC,CAClE,CACF,CAAC;EAEeP,gBAAgB,GAAG,IAAAC,sBAAY,EAC7C,OAAO;IAAEC,IAAI;IAAEM;EAAmC,CAAC,KAAK;IACtD,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACN,SAAS,CAACD,IAAI,EAAEE,gCAAW,CAACM,KAAK,EAAE,MACzD,IAAI,CAAChB,GAAG,CAACiB,cAAc,CAAC;MAAE1B,KAAK,EAAEsB;IAA4B,CAAC,CAChE,CAAC;IACD,OAAO;MACL,GAAGE,IAAI;MACP1B,KAAK,EAAE,IAAA6B,wCAAqB,EAACH,IAAI,CAAC1B,KAAK,EAAEmB,IAAI,CAACW,WAAW,EAAEL,YAAY;IACzE,CAAC;EACH,CACF,CAAC;EAEeM,qBAAqB,GAAG,IAAAb,sBAAY,EAClD,CAAC;IAAEC,IAAI;IAAEM;EAAmC,CAAC,KAC3CO,OAAO,CAACC,GAAG,CAAC,CACV,IAAI,CAACpB,kBAAkB,CAACM,IAAI,CAAC,EAC7B,IAAI,CAACF,gBAAgB,CAAC;IAAEE,IAAI;IAAEM;EAAa,CAAC,CAAC,CAC9C,CACL,CAAC;EAEOL,SAAS,GAAG,MAAAA,CAClBD,IAAyB,EACzBe,IAAiB,EACjBC,OAAoC,KACjC;IACH,MAAMC,eAAe,GAAG,MAAMD,OAAO,CAAC,CAAC;IACvC,OAAO;MACL,GAAGC,eAAe;MAClBpC,KAAK,EAAEoC,eAAe,CAACpC,KAAK,CAACqC,OAAO,CAAC,CAAC;QAAEC;MAAQ,CAAC,KAAK;QACpD,MAAMC,KAAK,GAAGpB,IAAI,CAACqB,aAAa,CAACF,OAAO,CAAC;QACzC,OAAOC,KAAK,GAAG,CAAC;UAAE,GAAGA,KAAK;UAAEL;QAAK,CAAC,CAAC,GAAG,EAAE;MAC1C,CAAC;IACH,CAAC;EACH,CAAC;AACH;AAACO,OAAA,CAAArC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.withoutDuplicates = exports.startGradesFrom = exports.shiftToBeginningOfArray = exports.isTreeDataWithoutGradeReady = exports.isTreeDataReady = exports.isFluencyDomain = exports.getUncompletedSkillsFromStandard = exports.getUncompletedSkillsFromDomain = exports.getTreeGrades = exports.getInitialPmGrade = exports.getDomainStructure = exports.getAllUncompletedSkills = exports.getAllSkillsFromStandard = exports.formatTime = exports.formatGradeName = exports.formatGradeLabel = exports.findDomainBySkillId = exports.createChartConfig = void 0;
|
|
6
|
+
exports.withoutDuplicates = exports.startGradesFrom = exports.shiftToBeginningOfArray = exports.isTreeDataWithoutGradeReady = exports.isTreeDataReady = exports.isFluencyDomain = exports.getUncompletedSkillsFromStandard = exports.getUncompletedSkillsFromDomain = exports.getTreeGrades = exports.getInitialPmGrade = exports.getDomainStructure = exports.getAllUncompletedSkills = exports.getAllSkillsFromStandard = exports.formatTime = exports.formatGradeName = exports.formatGradeLabel = exports.findDomainBySkillId = exports.filterLockedGradeRecs = exports.createChartConfig = void 0;
|
|
7
7
|
var _reactNativeUi = require("@magmamath/react-native-ui");
|
|
8
8
|
var _pmProgressConstants = require("./pmProgress.constants.js");
|
|
9
9
|
var _chartHelpers = require("../components/chart/chart.helpers.js");
|
|
@@ -224,6 +224,27 @@ const formatGradeLabel = (grade, customLabelsMap) => {
|
|
|
224
224
|
return `${(0, _i18n.getText)('pmProgress.grade')} ${label.name}`;
|
|
225
225
|
};
|
|
226
226
|
exports.formatGradeLabel = formatGradeLabel;
|
|
227
|
+
const buildSkillGradeMap = treeMapping => {
|
|
228
|
+
const map = new Map();
|
|
229
|
+
const collectSkills = (nodeId, gradeValue) => {
|
|
230
|
+
const node = treeMapping[nodeId];
|
|
231
|
+
if (!node) return;
|
|
232
|
+
node.skills.forEach(skillId => map.set(skillId, gradeValue));
|
|
233
|
+
node.children.forEach(childId => collectSkills(childId, gradeValue));
|
|
234
|
+
};
|
|
235
|
+
Object.values(treeMapping).filter(node => node.type === 'grade').forEach(gradeNode => collectSkills(gradeNode._id, gradeNode.attributes.grade));
|
|
236
|
+
return map;
|
|
237
|
+
};
|
|
238
|
+
const filterLockedGradeRecs = (skills, treeMapping, lockedGrades) => {
|
|
239
|
+
if (lockedGrades.length === 0) return skills;
|
|
240
|
+
const locked = new Set(lockedGrades);
|
|
241
|
+
const skillGradeMap = buildSkillGradeMap(treeMapping);
|
|
242
|
+
return skills.filter(skill => {
|
|
243
|
+
const grade = skillGradeMap.get(skill._id);
|
|
244
|
+
return grade === undefined || !locked.has(grade);
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
exports.filterLockedGradeRecs = filterLockedGradeRecs;
|
|
227
248
|
const getTreeGrades = (tree, user) => {
|
|
228
249
|
const lockedGrades = new Set(user.setting.practiceModeLockedGrades);
|
|
229
250
|
const gradeNodes = Object.values(tree.treeMapping).filter(node => node?.type === 'grade' && node.attributes.grade !== null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeUi","require","_pmProgressConstants","_chartHelpers","_i18n","groupStandardsByDomain","standardStats","treeMapping","grouped","Map","standardId","stat","Object","entries","domainId","skillIds","skillsCount","scorePercentage","skillsToPractice","has","set","completed","failed","length","unattempted","left","get","push","title","shortDescriptionTranslations","nameTranslations","subtitle","originalId","isCompleted","skillsLeft","averageScorePercentage","standards","sum","reduce","acc","s","Math","round","resolveDomainColors","nonFluencyIndex","color","COLORS","PRIMARY_ORANGE","borderColor","ORANGE_6","DOMAIN_COLORS","DOMAIN_BORDER_COLORS","getDomainStructure","data","Array","from","nonFluencyDomainIds","map","id","filter","isFluencyDomain","indexOf","backgroundColor","NEUTRAL_4","exports","getInitialPmGrade","treeGrades","lockedGrades","enrolledGrades","userGrade","locked","Set","unlocked","g","sort","a","b","isUserGradeMissing","undefined","unlockedEnrolled","includes","min","nearestBelow","reverse","find","grade","nearestAbove","formatTime","ms","totalMinutes","floor","hours","isTreeDataReady","source","tree","stats","user","isTreeDataWithoutGradeReady","createChartConfig","size","OUTER_MARGIN","outerRadius","innerRadius","dynamicInnerRadius","cornerRadius","dynamicCornerRadius","gapBetweenSlices","pressOffset","borderWidth","colors","background","NEUTRAL_1","highlightedBackground","NEUTRAL_6","outerArc","strokeWidth","dashWidth","getAllSkillsFromStandard","standard","skillsMapping","Boolean","_id","difficulty","getUncompletedSkillsFromStandard","skillId","getUncompletedSkillsFromDomain","domain","excludeStandardId","flatMap","getAllUncompletedSkills","domains","d","some","shiftToBeginningOfArray","items","index","findIndex","item","slice","withoutDuplicates","skills","seen","skill","add","findDomainBySkillId","startGradesFrom","grades","startGrade","value","toLowerCase","CustomDomain","FLUENCY","formatGradeName","getText","formatGradeLabel","customLabelsMap","label","String","noPrefix","name","getTreeGrades","setting","practiceModeLockedGrades","gradeNodes","values","node","type","attributes","uniqueSortedGrades","isLocked"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.helpers.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNativeUi","require","_pmProgressConstants","_chartHelpers","_i18n","groupStandardsByDomain","standardStats","treeMapping","grouped","Map","standardId","stat","Object","entries","domainId","skillIds","skillsCount","scorePercentage","skillsToPractice","has","set","completed","failed","length","unattempted","left","get","push","title","shortDescriptionTranslations","nameTranslations","subtitle","originalId","isCompleted","skillsLeft","averageScorePercentage","standards","sum","reduce","acc","s","Math","round","resolveDomainColors","nonFluencyIndex","color","COLORS","PRIMARY_ORANGE","borderColor","ORANGE_6","DOMAIN_COLORS","DOMAIN_BORDER_COLORS","getDomainStructure","data","Array","from","nonFluencyDomainIds","map","id","filter","isFluencyDomain","indexOf","backgroundColor","NEUTRAL_4","exports","getInitialPmGrade","treeGrades","lockedGrades","enrolledGrades","userGrade","locked","Set","unlocked","g","sort","a","b","isUserGradeMissing","undefined","unlockedEnrolled","includes","min","nearestBelow","reverse","find","grade","nearestAbove","formatTime","ms","totalMinutes","floor","hours","isTreeDataReady","source","tree","stats","user","isTreeDataWithoutGradeReady","createChartConfig","size","OUTER_MARGIN","outerRadius","innerRadius","dynamicInnerRadius","cornerRadius","dynamicCornerRadius","gapBetweenSlices","pressOffset","borderWidth","colors","background","NEUTRAL_1","highlightedBackground","NEUTRAL_6","outerArc","strokeWidth","dashWidth","getAllSkillsFromStandard","standard","skillsMapping","Boolean","_id","difficulty","getUncompletedSkillsFromStandard","skillId","getUncompletedSkillsFromDomain","domain","excludeStandardId","flatMap","getAllUncompletedSkills","domains","d","some","shiftToBeginningOfArray","items","index","findIndex","item","slice","withoutDuplicates","skills","seen","skill","add","findDomainBySkillId","startGradesFrom","grades","startGrade","value","toLowerCase","CustomDomain","FLUENCY","formatGradeName","getText","formatGradeLabel","customLabelsMap","label","String","noPrefix","name","buildSkillGradeMap","collectSkills","nodeId","gradeValue","node","forEach","children","childId","values","type","gradeNode","attributes","filterLockedGradeRecs","skillGradeMap","getTreeGrades","setting","practiceModeLockedGrades","gradeNodes","uniqueSortedGrades","isLocked"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.helpers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
export { Chatbot } from "./components/Chatbot.js";
|
|
4
4
|
export { ChatbotModel } from "./model/ChatBotModel.js";
|
|
5
|
+
export { VoiceTranscriptSnapshotModel } from "./model/VoiceTranscriptSnapshotModel.js";
|
|
5
6
|
export { AudioStatus } from "./types/t2s.types.js";
|
|
6
7
|
export { MessageVariant } from "./types/model.types.js";
|
|
7
8
|
export { DefaultMessagesCreator } from "./model/DefaultMessageCreator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Chatbot","ChatbotModel","AudioStatus","MessageVariant","DefaultMessagesCreator","ColorScheme"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,WAAW,QAAuF,sBAAmB;AAC9H,SACEC,cAAc,QAGT,wBAAqB;AAW5B,SAASC,sBAAsB,QAAQ,kCAA+B;AAGtE,SAASC,WAAW,QAAQ,wBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Chatbot","ChatbotModel","VoiceTranscriptSnapshotModel","AudioStatus","MessageVariant","DefaultMessagesCreator","ColorScheme"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,4BAA4B,QAAQ,yCAAsC;AACnF,SAASC,WAAW,QAAuF,sBAAmB;AAC9H,SACEC,cAAc,QAGT,wBAAqB;AAW5B,SAASC,sBAAsB,QAAQ,kCAA+B;AAGtE,SAASC,WAAW,QAAQ,wBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createEffect, sample } from 'effector';
|
|
4
|
+
import { TranscriptionStatus } from "../../voice/types.js";
|
|
5
|
+
const TRANSCRIPT_RETRY_INTERVAL_MS = 3000;
|
|
6
|
+
const TRANSCRIPT_MAX_RETRIES = 20;
|
|
7
|
+
// Voice key: `${assignmentId}-${problemId}-${attemptsCount}`
|
|
8
|
+
// Chat key: `${assignmentId}-${problemId}` — survives attempt increments and voice deletion.
|
|
9
|
+
const toChatKey = voiceKey => {
|
|
10
|
+
const lastDashIndex = voiceKey.lastIndexOf('-');
|
|
11
|
+
if (lastDashIndex <= 0) return null;
|
|
12
|
+
return voiceKey.slice(0, lastDashIndex);
|
|
13
|
+
};
|
|
14
|
+
export class VoiceTranscriptSnapshotModel {
|
|
15
|
+
fetchTranscript = audioFileId => {
|
|
16
|
+
const cached = this.transcriptByAudioFileId.get(audioFileId);
|
|
17
|
+
if (cached) return cached;
|
|
18
|
+
const promise = this.pollTranscript(audioFileId).catch(() => undefined);
|
|
19
|
+
this.transcriptByAudioFileId.set(audioFileId, promise);
|
|
20
|
+
return promise;
|
|
21
|
+
};
|
|
22
|
+
getTranscriptForCurrent = async () => {
|
|
23
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
24
|
+
if (!voiceKey) return undefined;
|
|
25
|
+
const chatKey = toChatKey(voiceKey);
|
|
26
|
+
if (chatKey) {
|
|
27
|
+
const snapshot = this.snapshotByChatKey.get(chatKey);
|
|
28
|
+
if (snapshot) return snapshot;
|
|
29
|
+
}
|
|
30
|
+
const record = this.voiceRecord.collection.get(voiceKey);
|
|
31
|
+
if (!record) return undefined;
|
|
32
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
33
|
+
if (!audioFileId) return undefined;
|
|
34
|
+
return this.fetchTranscript(audioFileId);
|
|
35
|
+
};
|
|
36
|
+
wrapRequestHint = apiFn => {
|
|
37
|
+
return async (params, requestConfig) => {
|
|
38
|
+
const voiceTranscript = await this.getTranscriptForCurrent();
|
|
39
|
+
return apiFn(voiceTranscript ? {
|
|
40
|
+
...params,
|
|
41
|
+
voiceTranscript
|
|
42
|
+
} : params, requestConfig);
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
constructor({
|
|
46
|
+
voiceRecord,
|
|
47
|
+
api
|
|
48
|
+
}) {
|
|
49
|
+
this.voiceRecord = voiceRecord;
|
|
50
|
+
this.api = api;
|
|
51
|
+
sample({
|
|
52
|
+
clock: voiceRecord.setCurrentRecord,
|
|
53
|
+
source: voiceRecord.$currentKey,
|
|
54
|
+
filter: (_, record) => !!record,
|
|
55
|
+
fn: (voiceKey, record) => ({
|
|
56
|
+
voiceKey,
|
|
57
|
+
record
|
|
58
|
+
}),
|
|
59
|
+
target: this.captureSnapshotFx
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
transcriptByAudioFileId = new Map();
|
|
63
|
+
snapshotByChatKey = new Map();
|
|
64
|
+
captureSnapshotFx = createEffect(async ({
|
|
65
|
+
voiceKey,
|
|
66
|
+
record
|
|
67
|
+
}) => {
|
|
68
|
+
const chatKey = toChatKey(voiceKey);
|
|
69
|
+
if (!chatKey) return;
|
|
70
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
71
|
+
if (!audioFileId) return;
|
|
72
|
+
this.snapshotByChatKey.set(chatKey, this.fetchTranscript(audioFileId));
|
|
73
|
+
});
|
|
74
|
+
async pollTranscript(audioFileId) {
|
|
75
|
+
for (let attempt = 0; attempt < TRANSCRIPT_MAX_RETRIES; attempt++) {
|
|
76
|
+
await new Promise(resolve => setTimeout(resolve, TRANSCRIPT_RETRY_INTERVAL_MS));
|
|
77
|
+
const response = await this.api.getAudioFileTranscript(audioFileId);
|
|
78
|
+
if (response.status === TranscriptionStatus.COMPLETED) return response.text;
|
|
79
|
+
if (response.status === TranscriptionStatus.FAILED) return undefined;
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
async resolveAudioFileId(record) {
|
|
84
|
+
if (record.id) return record.id;
|
|
85
|
+
if (!record.audioUploadPromise) return undefined;
|
|
86
|
+
try {
|
|
87
|
+
const result = await record.audioUploadPromise;
|
|
88
|
+
return result?.id;
|
|
89
|
+
} catch {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","sample","TranscriptionStatus","TRANSCRIPT_RETRY_INTERVAL_MS","TRANSCRIPT_MAX_RETRIES","toChatKey","voiceKey","lastDashIndex","lastIndexOf","slice","VoiceTranscriptSnapshotModel","fetchTranscript","audioFileId","cached","transcriptByAudioFileId","get","promise","pollTranscript","catch","undefined","set","getTranscriptForCurrent","voiceRecord","$currentKey","getState","chatKey","snapshot","snapshotByChatKey","record","collection","resolveAudioFileId","wrapRequestHint","apiFn","params","requestConfig","voiceTranscript","constructor","api","clock","setCurrentRecord","source","filter","_","fn","target","captureSnapshotFx","Map","attempt","Promise","resolve","setTimeout","response","getAudioFileTranscript","status","COMPLETED","text","FAILED","id","audioUploadPromise","result"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,8 +31,14 @@ export class PmProgressModel {
|
|
|
31
31
|
sample({
|
|
32
32
|
clock: this.tree.initTreeFx.done,
|
|
33
33
|
fn: ({
|
|
34
|
+
params: {
|
|
35
|
+
user
|
|
36
|
+
},
|
|
34
37
|
result: [tree]
|
|
35
|
-
}) =>
|
|
38
|
+
}) => ({
|
|
39
|
+
tree,
|
|
40
|
+
lockedGrades: user.setting.practiceModeLockedGrades
|
|
41
|
+
}),
|
|
36
42
|
target: this.recommendations.initRecommendationsFx
|
|
37
43
|
});
|
|
38
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sample","createGate","not","PmProgressApi","PmTreeModel","PmInsightsModel","PmRecommendationsModel","PmSolvingFlowModel","PmHighlightModel","PmProgressModel","gate","constructor","api","highlight","insights","tree","recommendations","solving","init","clock","open","filter","initTreeFx","pending","target","getUserInsightsFx","done","fn","result","initRecommendationsFx"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmProgressModel.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AACjC,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,GAAG,QAAQ,cAAc;AAElC,SAASC,aAAa,QAAiC,oBAAiB;AACxE,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,gBAAgB,QAAQ,uBAAoB;AAMrD,OAAO,MAAMC,eAAe,CAAC;EACXC,IAAI,GAAGT,UAAU,CAAsB,CAAC;EASxDU,WAAWA,CAAC;IAAEC;EAA0B,CAAC,EAAE;IACzC,IAAI,CAACA,GAAG,GAAG,IAAIT,aAAa,CAACS,GAAG,CAAC;IACjC,IAAI,CAACC,SAAS,GAAG,IAAIL,gBAAgB,CAAC,CAAC;IACvC,IAAI,CAACM,QAAQ,GAAG,IAAIT,eAAe,CAAC,IAAI,CAACO,GAAG,CAAC;IAC7C,IAAI,CAACG,IAAI,GAAG,IAAIX,WAAW,CAAC,IAAI,CAACQ,GAAG,CAAC;IACrC,IAAI,CAACI,eAAe,GAAG,IAAIV,sBAAsB,CAAC,IAAI,CAACM,GAAG,CAAC;IAC3D,IAAI,CAACK,OAAO,GAAG,IAAIV,kBAAkB,CAAC,IAAI,CAACQ,IAAI,EAAE,IAAI,CAACC,eAAe,CAAC;IAEtE,IAAI,CAACE,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACblB,MAAM,CAAC;MACLmB,KAAK,EAAE,IAAI,CAACT,IAAI,CAACU,IAAI;MACrBC,MAAM,EAAEnB,GAAG,CAAC,IAAI,CAACa,IAAI,CAACO,UAAU,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAACT,IAAI,CAACO,UAAU,EAAE,IAAI,CAACV,GAAG,CAACa,iBAAiB;IAC3D,CAAC,CAAC;IAEFzB,MAAM,CAAC;MACLmB,KAAK,EAAE,IAAI,CAACJ,IAAI,CAACO,UAAU,CAACI,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"names":["sample","createGate","not","PmProgressApi","PmTreeModel","PmInsightsModel","PmRecommendationsModel","PmSolvingFlowModel","PmHighlightModel","PmProgressModel","gate","constructor","api","highlight","insights","tree","recommendations","solving","init","clock","open","filter","initTreeFx","pending","target","getUserInsightsFx","done","fn","params","user","result","lockedGrades","setting","practiceModeLockedGrades","initRecommendationsFx"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmProgressModel.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AACjC,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,GAAG,QAAQ,cAAc;AAElC,SAASC,aAAa,QAAiC,oBAAiB;AACxE,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,gBAAgB,QAAQ,uBAAoB;AAMrD,OAAO,MAAMC,eAAe,CAAC;EACXC,IAAI,GAAGT,UAAU,CAAsB,CAAC;EASxDU,WAAWA,CAAC;IAAEC;EAA0B,CAAC,EAAE;IACzC,IAAI,CAACA,GAAG,GAAG,IAAIT,aAAa,CAACS,GAAG,CAAC;IACjC,IAAI,CAACC,SAAS,GAAG,IAAIL,gBAAgB,CAAC,CAAC;IACvC,IAAI,CAACM,QAAQ,GAAG,IAAIT,eAAe,CAAC,IAAI,CAACO,GAAG,CAAC;IAC7C,IAAI,CAACG,IAAI,GAAG,IAAIX,WAAW,CAAC,IAAI,CAACQ,GAAG,CAAC;IACrC,IAAI,CAACI,eAAe,GAAG,IAAIV,sBAAsB,CAAC,IAAI,CAACM,GAAG,CAAC;IAC3D,IAAI,CAACK,OAAO,GAAG,IAAIV,kBAAkB,CAAC,IAAI,CAACQ,IAAI,EAAE,IAAI,CAACC,eAAe,CAAC;IAEtE,IAAI,CAACE,IAAI,CAAC,CAAC;EACb;EAEQA,IAAIA,CAAA,EAAG;IACblB,MAAM,CAAC;MACLmB,KAAK,EAAE,IAAI,CAACT,IAAI,CAACU,IAAI;MACrBC,MAAM,EAAEnB,GAAG,CAAC,IAAI,CAACa,IAAI,CAACO,UAAU,CAACC,OAAO,CAAC;MACzCC,MAAM,EAAE,CAAC,IAAI,CAACT,IAAI,CAACO,UAAU,EAAE,IAAI,CAACV,GAAG,CAACa,iBAAiB;IAC3D,CAAC,CAAC;IAEFzB,MAAM,CAAC;MACLmB,KAAK,EAAE,IAAI,CAACJ,IAAI,CAACO,UAAU,CAACI,IAAI;MAChCC,EAAE,EAAEA,CAAC;QAAEC,MAAM,EAAE;UAAEC;QAAK,CAAC;QAAEC,MAAM,EAAE,CAACf,IAAI;MAAE,CAAC,MAAM;QAC7CA,IAAI;QACJgB,YAAY,EAAEF,IAAI,CAACG,OAAO,CAACC;MAC7B,CAAC,CAAC;MACFT,MAAM,EAAE,IAAI,CAACR,eAAe,CAACkB;IAC/B,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { createEffect, createEvent, createStore } from 'effector';
|
|
4
4
|
import { RECOMMENDATIONS_LIMIT_PARAM, SolvingFlow } from "../shared/pmProgress.constants.js";
|
|
5
|
+
import { filterLockedGradeRecs } from "../shared/pmProgress.helpers.js";
|
|
5
6
|
const EMPTY_RECS = {
|
|
6
7
|
items: [],
|
|
7
8
|
offset: 0,
|
|
@@ -20,10 +21,25 @@ export class PmRecommendationsModel {
|
|
|
20
21
|
fetchTeacherRecsFx = createEffect(tree => this.fetchRecs(tree, SolvingFlow.TEACHER, () => this.api.getTeacherRecsFx({
|
|
21
22
|
limit: RECOMMENDATIONS_LIMIT_PARAM
|
|
22
23
|
})));
|
|
23
|
-
fetchMagmaRecsFx = createEffect(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
fetchMagmaRecsFx = createEffect(async ({
|
|
25
|
+
tree,
|
|
26
|
+
lockedGrades
|
|
27
|
+
}) => {
|
|
28
|
+
const recs = await this.fetchRecs(tree, SolvingFlow.MAGMA, () => this.api.getMagmaRecsFx({
|
|
29
|
+
limit: RECOMMENDATIONS_LIMIT_PARAM
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
...recs,
|
|
33
|
+
items: filterLockedGradeRecs(recs.items, tree.treeMapping, lockedGrades)
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
initRecommendationsFx = createEffect(({
|
|
37
|
+
tree,
|
|
38
|
+
lockedGrades
|
|
39
|
+
}) => Promise.all([this.fetchTeacherRecsFx(tree), this.fetchMagmaRecsFx({
|
|
40
|
+
tree,
|
|
41
|
+
lockedGrades
|
|
42
|
+
})]));
|
|
27
43
|
fetchRecs = async (tree, type, fetcher) => {
|
|
28
44
|
const recommendations = await fetcher();
|
|
29
45
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createEvent","createStore","RECOMMENDATIONS_LIMIT_PARAM","SolvingFlow","EMPTY_RECS","items","offset","limit","total","PmRecommendationsModel","reset","$teacher","$magma","constructor","api","on","fetchTeacherRecsFx","doneData","_","data","fetchMagmaRecsFx","tree","fetchRecs","TEACHER","getTeacherRecsFx","MAGMA","getMagmaRecsFx","initRecommendationsFx","Promise","all","type","fetcher","recommendations","flatMap","skillId","skill","skillsMapping"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmRecommendationsModel.ts"],"mappings":";;AACA,SAASA,YAAY,EAAEC,WAAW,EAAEC,WAAW,QAAgB,UAAU;AAEzE,SAASC,2BAA2B,EAAEC,WAAW,QAAQ,mCAAgC;
|
|
1
|
+
{"version":3,"names":["createEffect","createEvent","createStore","RECOMMENDATIONS_LIMIT_PARAM","SolvingFlow","filterLockedGradeRecs","EMPTY_RECS","items","offset","limit","total","PmRecommendationsModel","reset","$teacher","$magma","constructor","api","on","fetchTeacherRecsFx","doneData","_","data","fetchMagmaRecsFx","tree","fetchRecs","TEACHER","getTeacherRecsFx","lockedGrades","recs","MAGMA","getMagmaRecsFx","treeMapping","initRecommendationsFx","Promise","all","type","fetcher","recommendations","flatMap","skillId","skill","skillsMapping"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmRecommendationsModel.ts"],"mappings":";;AACA,SAASA,YAAY,EAAEC,WAAW,EAAEC,WAAW,QAAgB,UAAU;AAEzE,SAASC,2BAA2B,EAAEC,WAAW,QAAQ,mCAAgC;AACzF,SAASC,qBAAqB,QAAQ,iCAA8B;AAOpE,MAAMC,UAA2B,GAAG;EAAEC,KAAK,EAAE,EAAE;EAAEC,MAAM,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,KAAK,EAAE;AAAE,CAAC;AAEhF,OAAO,MAAMC,sBAAsB,CAAC;EAClBC,KAAK,GAAGX,WAAW,CAAC,CAAC;EAErBY,QAAQ,GAAGX,WAAW,CAAkBI,UAAU,CAAC,CAACM,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACrEE,MAAM,GAAGZ,WAAW,CAAkBI,UAAU,CAAC,CAACM,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEnFG,WAAWA,CAAkBC,GAAkB,EAAE;IAAA,KAApBA,GAAkB,GAAlBA,GAAkB;IAC7C,IAAI,CAACH,QAAQ,CAACI,EAAE,CAAC,IAAI,CAACC,kBAAkB,CAACC,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;IACrE,IAAI,CAACP,MAAM,CAACG,EAAE,CAAC,IAAI,CAACK,gBAAgB,CAACH,QAAQ,EAAE,CAACC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAAC;EACnE;EAEgBH,kBAAkB,GAAGlB,YAAY,CAAEuB,IAAyB,IAC1E,IAAI,CAACC,SAAS,CAACD,IAAI,EAAEnB,WAAW,CAACqB,OAAO,EAAE,MACxC,IAAI,CAACT,GAAG,CAACU,gBAAgB,CAAC;IAAEjB,KAAK,EAAEN;EAA4B,CAAC,CAClE,CACF,CAAC;EAEemB,gBAAgB,GAAGtB,YAAY,CAC7C,OAAO;IAAEuB,IAAI;IAAEI;EAAmC,CAAC,KAAK;IACtD,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACD,IAAI,EAAEnB,WAAW,CAACyB,KAAK,EAAE,MACzD,IAAI,CAACb,GAAG,CAACc,cAAc,CAAC;MAAErB,KAAK,EAAEN;IAA4B,CAAC,CAChE,CAAC;IACD,OAAO;MACL,GAAGyB,IAAI;MACPrB,KAAK,EAAEF,qBAAqB,CAACuB,IAAI,CAACrB,KAAK,EAAEgB,IAAI,CAACQ,WAAW,EAAEJ,YAAY;IACzE,CAAC;EACH,CACF,CAAC;EAEeK,qBAAqB,GAAGhC,YAAY,CAClD,CAAC;IAAEuB,IAAI;IAAEI;EAAmC,CAAC,KAC3CM,OAAO,CAACC,GAAG,CAAC,CACV,IAAI,CAAChB,kBAAkB,CAACK,IAAI,CAAC,EAC7B,IAAI,CAACD,gBAAgB,CAAC;IAAEC,IAAI;IAAEI;EAAa,CAAC,CAAC,CAC9C,CACL,CAAC;EAEOH,SAAS,GAAG,MAAAA,CAClBD,IAAyB,EACzBY,IAAiB,EACjBC,OAAoC,KACjC;IACH,MAAMC,eAAe,GAAG,MAAMD,OAAO,CAAC,CAAC;IACvC,OAAO;MACL,GAAGC,eAAe;MAClB9B,KAAK,EAAE8B,eAAe,CAAC9B,KAAK,CAAC+B,OAAO,CAAC,CAAC;QAAEC;MAAQ,CAAC,KAAK;QACpD,MAAMC,KAAK,GAAGjB,IAAI,CAACkB,aAAa,CAACF,OAAO,CAAC;QACzC,OAAOC,KAAK,GAAG,CAAC;UAAE,GAAGA,KAAK;UAAEL;QAAK,CAAC,CAAC,GAAG,EAAE;MAC1C,CAAC;IACH,CAAC;EACH,CAAC;AACH","ignoreList":[]}
|
|
@@ -203,6 +203,26 @@ export const formatGradeLabel = (grade, customLabelsMap) => {
|
|
|
203
203
|
if (label.noPrefix) return label.name;
|
|
204
204
|
return `${getText('pmProgress.grade')} ${label.name}`;
|
|
205
205
|
};
|
|
206
|
+
const buildSkillGradeMap = treeMapping => {
|
|
207
|
+
const map = new Map();
|
|
208
|
+
const collectSkills = (nodeId, gradeValue) => {
|
|
209
|
+
const node = treeMapping[nodeId];
|
|
210
|
+
if (!node) return;
|
|
211
|
+
node.skills.forEach(skillId => map.set(skillId, gradeValue));
|
|
212
|
+
node.children.forEach(childId => collectSkills(childId, gradeValue));
|
|
213
|
+
};
|
|
214
|
+
Object.values(treeMapping).filter(node => node.type === 'grade').forEach(gradeNode => collectSkills(gradeNode._id, gradeNode.attributes.grade));
|
|
215
|
+
return map;
|
|
216
|
+
};
|
|
217
|
+
export const filterLockedGradeRecs = (skills, treeMapping, lockedGrades) => {
|
|
218
|
+
if (lockedGrades.length === 0) return skills;
|
|
219
|
+
const locked = new Set(lockedGrades);
|
|
220
|
+
const skillGradeMap = buildSkillGradeMap(treeMapping);
|
|
221
|
+
return skills.filter(skill => {
|
|
222
|
+
const grade = skillGradeMap.get(skill._id);
|
|
223
|
+
return grade === undefined || !locked.has(grade);
|
|
224
|
+
});
|
|
225
|
+
};
|
|
206
226
|
export const getTreeGrades = (tree, user) => {
|
|
207
227
|
const lockedGrades = new Set(user.setting.practiceModeLockedGrades);
|
|
208
228
|
const gradeNodes = Object.values(tree.treeMapping).filter(node => node?.type === 'grade' && node.attributes.grade !== null);
|