forked from gongxuegit/tiku-backend.net
feat: migrate direct tenant content and learning endpoints
This commit is contained in:
@@ -2,6 +2,20 @@ namespace Tiku.Application.Learning;
|
||||
|
||||
public interface ILearningActivityService
|
||||
{
|
||||
Task<LearningStatsItem> GetStatsAsync(
|
||||
LearningActor actor,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<LearningList<LearningTrendItem>> GetTrendAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<LearningLeaderboardResult> GetLeaderboardAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<AnswerRecordItem> SubmitAnswerAsync(
|
||||
LearningActor actor,
|
||||
SubmitAnswerCommand command,
|
||||
@@ -22,6 +36,11 @@ public interface ILearningActivityService
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WrongQuestionReviewPlan> GetWrongQuestionReviewPlanAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<LearningActionResult> ResolveWrongQuestionAsync(
|
||||
LearningActor actor,
|
||||
QuestionActionCommand command,
|
||||
@@ -32,11 +51,26 @@ public interface ILearningActivityService
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WordReviewPlan> GetWordReviewPlanAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WordProgressItem> UpdateWordProgressAsync(
|
||||
LearningActor actor,
|
||||
WordProgressCommand command,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WordProgressItem> ReviewWordAsync(
|
||||
LearningActor actor,
|
||||
WordReviewCommand command,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WordStatsItem> GetWordStatsAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<LearningList<FavoriteWordItem>> GetFavoriteWordsAsync(
|
||||
LearningActor actor,
|
||||
LearningLimitFilter filter,
|
||||
|
||||
@@ -28,6 +28,62 @@ public sealed record FavoriteWordCommand(Guid WordId, bool? Favorite, string? No
|
||||
|
||||
public sealed record LearningLimitFilter(int? Limit = null, string? Status = null, Guid? UnitId = null);
|
||||
|
||||
public sealed record LearningStatsItem(
|
||||
int AnswerCount,
|
||||
int CorrectCount,
|
||||
int WrongCount,
|
||||
int FavoriteQuestionCount,
|
||||
int FavoriteWordCount,
|
||||
int WordProgressCount,
|
||||
int PracticeSessionCount,
|
||||
int PracticeReportCount);
|
||||
|
||||
public sealed record LearningTrendItem(DateOnly Date, int AnswerCount, int CorrectCount, int WrongCount);
|
||||
|
||||
public sealed record LearningLeaderboardItem(
|
||||
Guid UserId,
|
||||
string? DisplayName,
|
||||
int AnswerCount,
|
||||
int CorrectCount,
|
||||
int WrongCount,
|
||||
decimal Accuracy);
|
||||
|
||||
public sealed record LearningLeaderboardResult(
|
||||
string Metric,
|
||||
string Period,
|
||||
IReadOnlyCollection<LearningLeaderboardItem> Items,
|
||||
LearningLeaderboardItem? CurrentUser,
|
||||
DateTimeOffset GeneratedAt);
|
||||
|
||||
public sealed record WrongQuestionReviewPlanItem(Guid QuestionId, int WrongCount, DateTimeOffset LastWrongAt);
|
||||
|
||||
public sealed record WrongQuestionReviewPlan(
|
||||
IReadOnlyCollection<WrongQuestionReviewPlanItem> Items,
|
||||
JsonElement NextAction);
|
||||
|
||||
public sealed record WordReviewPlanItem(
|
||||
Guid WordId,
|
||||
WordProgressStatus Status,
|
||||
DateTimeOffset? NextReviewAt,
|
||||
int CorrectCount,
|
||||
int WrongCount,
|
||||
WordDueLevel DueLevel);
|
||||
|
||||
public sealed record WordReviewPlan(
|
||||
IReadOnlyCollection<WordReviewPlanItem> Items,
|
||||
JsonElement NextAction);
|
||||
|
||||
public sealed record WordReviewCommand(Guid WordId, string? Result, DateTimeOffset? NextReviewAt);
|
||||
|
||||
public sealed record WordStatsItem(
|
||||
int Total,
|
||||
int NewCount,
|
||||
int LearningCount,
|
||||
int ReviewingCount,
|
||||
int MasteredCount,
|
||||
int DueCount,
|
||||
int FavoriteCount);
|
||||
|
||||
public sealed record PracticeSessionCommand(
|
||||
string? Mode,
|
||||
string? TargetType,
|
||||
|
||||
Reference in New Issue
Block a user