feat: add question bank readonly endpoints

This commit is contained in:
xiong
2026-07-26 14:17:30 +08:00
parent 3221b581c8
commit 97e7819a34
9 changed files with 747 additions and 3 deletions

View File

@@ -0,0 +1,22 @@
using Tiku.Application.Catalog;
namespace Tiku.Application.QuestionBanks;
public interface IQuestionBankQueryService
{
Task<CatalogList<QuestionBankCatalogItem>> GetQuestionBanksAsync(
QuestionBankFilter filter,
CancellationToken cancellationToken = default);
Task<CatalogList<QuestionCatalogItem>> GetQuestionsAsync(
QuestionBankFilter filter,
CancellationToken cancellationToken = default);
Task<QuestionCatalogItem> GetQuestionAsync(
QuestionBankFilter filter,
CancellationToken cancellationToken = default);
Task<CatalogList<QuestionVersionCatalogItem>> GetQuestionVersionsAsync(
QuestionBankFilter filter,
CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,76 @@
using System.Text.Json;
using Tiku.Domain.QuestionBanks;
namespace Tiku.Application.QuestionBanks;
public sealed record QuestionBankFilter(
Guid TenantId,
Guid? RegionId = null,
Guid? QuestionBankId = null,
Guid? SubjectId = null,
Guid? CategoryId = null,
Guid? NodeId = null,
Guid? EntryId = null,
Guid? ContentNodeId = null,
Guid? CollectionId = null,
Guid? QuestionId = null,
IReadOnlyCollection<Guid>? QuestionIds = null,
string? Type = null,
string? Keyword = null,
int? Limit = null);
public sealed record QuestionBankCatalogItem(
Guid Id,
Guid? RegionId,
string Name,
QuestionBankScope SourceScope,
QuestionBankStatus Status,
JsonElement Metadata);
public sealed record QuestionCatalogItem(
Guid Id,
Guid? QuestionBankId,
Guid? SubjectId,
Guid? CategoryId,
Guid? NodeId,
Guid? EntryId,
Guid? ContentNodeId,
Guid? PrimaryCollectionId,
string? LegacyId,
string? LegacySubjectId,
string? LegacyCategoryId,
string? LegacyNodeId,
string Type,
string? TypeLabel,
int? Difficulty,
JsonElement Tags,
JsonElement ExamMarkers,
string? MediaUrl,
bool HasVideoExplanation,
QuestionStatus Status,
Guid? VersionId,
int? VersionNo,
string? Content,
JsonElement Options,
int? CorrectOptionIndex,
JsonElement CorrectOptionIndices,
string? AnswerText,
string? Explanation,
JsonElement SubQuestions,
string? CodeLang,
string? CodeTemplate);
public sealed record QuestionVersionCatalogItem(
Guid Id,
Guid QuestionId,
int VersionNo,
string? Content,
JsonElement Options,
int? CorrectOptionIndex,
JsonElement CorrectOptionIndices,
string? AnswerText,
string? Explanation,
JsonElement SubQuestions,
string? CodeLang,
string? CodeTemplate,
DateTimeOffset CreatedAt);