shinkan-jinkendo/frontend/src/api/skillProfiles.js

41 lines
1.5 KiB
JavaScript
Raw Normal View History

import { request } from './client.js'
export async function getFrameworkProgramSkillProfile(frameworkId) {
return request(`/api/training-framework-programs/${frameworkId}/skill-profile`)
}
export async function getTrainingModuleSkillProfile(moduleId) {
return request(`/api/training-modules/${moduleId}/skill-profile`)
}
export async function getProgressionGraphSkillProfile(graphId) {
return request(`/api/exercise-progression-graphs/${graphId}/skill-profile`)
}
/**
* @param {number[]} skillIds
* @param {{ types?: string, limit?: number }} opts
*/
export async function getSkillDiscoverySuggestions(skillIds, opts = {}) {
const ids = (skillIds || []).filter((x) => x != null && Number(x) > 0).join(',')
if (!ids) return { skill_ids: [], suggestions: [] }
const params = new URLSearchParams({ skill_ids: ids })
if (opts.types) params.set('types', opts.types)
if (opts.limit != null) params.set('limit', String(opts.limit))
return request(`/api/skill-discovery/suggestions?${params.toString()}`)
}
/**
* Batch-Summaries für Listen (ein Vereins-Corpus-Scan).
* @param {{ frameworkProgramIds?: number[], trainingModuleIds?: number[] }} payload
*/
export async function batchSkillProfileSummaries(payload = {}) {
return request('/api/skill-profiles/batch-summaries', {
method: 'POST',
body: JSON.stringify({
framework_program_ids: payload.frameworkProgramIds || [],
training_module_ids: payload.trainingModuleIds || [],
}),
})
}