forked from gongxuegit/tiku-backend.net
feat: add practice session workflow endpoints
This commit is contained in:
@@ -15,6 +15,88 @@ public sealed class LearningController(
|
||||
ICurrentUser currentUser,
|
||||
ICurrentTenant currentTenant) : ControllerBase
|
||||
{
|
||||
[HttpPost("practice-sessions")]
|
||||
[EndpointSummary("创建练习会话")]
|
||||
[ProducesResponseType<PracticeSessionItem>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status409Conflict)]
|
||||
public async Task<ActionResult<PracticeSessionItem>> CreatePracticeSession(
|
||||
CreatePracticeSessionDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.CreatePracticeSessionAsync(
|
||||
ResolveActor(),
|
||||
request.ToCommand(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("practice-sessions/detail")]
|
||||
[EndpointSummary("获取练习会话详情")]
|
||||
[ProducesResponseType<PracticeSessionDetailItem>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult<PracticeSessionDetailItem>> GetPracticeSessionDetail(
|
||||
[FromQuery] PracticeSessionQueryDto query,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.GetPracticeSessionDetailAsync(
|
||||
ResolveActor(),
|
||||
query.ToFilter(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("practice-sessions/submit")]
|
||||
[EndpointSummary("提交练习会话并生成报告")]
|
||||
[ProducesResponseType<PracticeSessionReportItem>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult<PracticeSessionReportItem>> SubmitPracticeSession(
|
||||
SubmitPracticeSessionDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.SubmitPracticeSessionAsync(
|
||||
ResolveActor(),
|
||||
request.ToFilter(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("practice-sessions/report")]
|
||||
[EndpointSummary("获取练习会话报告")]
|
||||
[ProducesResponseType<PracticeSessionReportItem>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult<PracticeSessionReportItem>> GetPracticeSessionReport(
|
||||
[FromQuery] PracticeSessionQueryDto query,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.GetPracticeSessionReportAsync(
|
||||
ResolveActor(),
|
||||
query.ToFilter(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("practice-reports")]
|
||||
[EndpointSummary("查询练习报告列表")]
|
||||
[ProducesResponseType<LearningList<PracticeSessionReportItem>>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<LearningList<PracticeSessionReportItem>>> GetPracticeReports(
|
||||
[FromQuery] PracticeSessionQueryDto query,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.GetPracticeReportsAsync(
|
||||
ResolveActor(),
|
||||
query.ToFilter(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("practice-sessions/history")]
|
||||
[EndpointSummary("查询练习历史")]
|
||||
[ProducesResponseType<LearningList<PracticeHistoryItem>>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<LearningList<PracticeHistoryItem>>> GetPracticeHistory(
|
||||
[FromQuery] PracticeSessionQueryDto query,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await learningActivityService.GetPracticeHistoryAsync(
|
||||
ResolveActor(),
|
||||
query.ToFilter(),
|
||||
cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("answers")]
|
||||
[EndpointSummary("提交题目答案")]
|
||||
[ProducesResponseType<AnswerRecordItem>(StatusCodes.Status200OK)]
|
||||
|
||||
Reference in New Issue
Block a user