feat: add student video and profile experience

This commit is contained in:
2026-07-28 15:23:42 +08:00
parent 5e993298e7
commit 7a3cf09a99
31 changed files with 19821 additions and 170 deletions

View File

@@ -6,6 +6,12 @@ public sealed record ProfileActor(Guid TenantId, Guid UserId);
public sealed record ProfileQuery(int? RecentLimit = null, int? Limit = null);
public sealed record ProfileScoreEventQuery(
int? Limit = null,
string? SourceType = null,
DateTimeOffset? From = null,
DateTimeOffset? To = null);
public sealed record UpdateProfileCommand(
string? Name,
string? AvatarPreset,
@@ -144,6 +150,26 @@ public sealed record SubmitFeedbackCommand(
JsonElement Attachments,
JsonElement Metadata);
public sealed record CheckInResult(
DateOnly CheckInDate,
bool AlreadyCheckedIn,
int Points,
int BalanceAfter,
Guid? ClaimId,
Guid? ScoreEventId);
public sealed record ProfileScoreEventItem(
Guid Id,
string EventType,
int Points,
int BalanceAfter,
string? SourceType,
Guid? SourceId,
JsonElement Metadata,
DateTimeOffset CreatedAt);
public sealed record ProfileScoreEventList(IReadOnlyCollection<ProfileScoreEventItem> Items);
public interface IProfileService
{
Task<StudentProfileItem> GetMeAsync(ProfileActor actor, ProfileQuery query, CancellationToken cancellationToken = default);
@@ -154,4 +180,6 @@ public interface IProfileService
Task<BadgeList> GetBadgesAsync(ProfileActor actor, BadgeQuery query, CancellationToken cancellationToken = default);
Task<IReadOnlyCollection<FeedbackItem>> GetFeedbacksAsync(ProfileActor actor, FeedbackQuery query, CancellationToken cancellationToken = default);
Task<FeedbackItem> SubmitFeedbackAsync(ProfileActor actor, SubmitFeedbackCommand command, CancellationToken cancellationToken = default);
Task<CheckInResult> CheckInAsync(ProfileActor actor, CancellationToken cancellationToken = default);
Task<ProfileScoreEventList> GetScoreEventsAsync(ProfileActor actor, ProfileScoreEventQuery query, CancellationToken cancellationToken = default);
}