M2-01 测验列表页 (QuizListView): - 展示知识库下所有测验 + 空状态/生成新测验按钮 - POST /quizzes 生成测验 M2-02 答题页面 (QuizTakerView): - 选择题 ABCD 选项 / 判断题 ✓✗ / 填空题输入 - 进度条 + 上一题/下一题/提交按钮 - POST /quizzes/:id/start + POST /quizzes/:id/submit M2-03 结果页 (QuizResultView): - 得分展示 + 每题对错详情 + 解释 - 重新测验按钮 路由: quizList/quizTake/quizResult QuizService: generate/list/detail/start/submit/results/history Quiz 模型: Quiz/QuizQuestion/QuizAttempt/QuizAnswer/QuizSubmitRequest 等 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
78 lines
2.6 KiB
Swift
78 lines
2.6 KiB
Swift
import SwiftUI
|
|
|
|
enum Route: Hashable {
|
|
// AI
|
|
case aiChat
|
|
case dailyThinking
|
|
case aiFeedback
|
|
case activeRecall
|
|
case weakPoints
|
|
case reviewCard
|
|
|
|
// Library
|
|
case librarySearch
|
|
case libraryDetail(knowledgeBaseId: String)
|
|
case libraryImport
|
|
case libraryCreate
|
|
case addKnowledge(knowledgeBaseId: String)
|
|
case knowledgeDetail(item: KnowledgeItem)
|
|
case editKnowledge(item: KnowledgeItem)
|
|
|
|
// Study
|
|
case learningSession(taskTitle: String, taskType: String, taskColorHex: String)
|
|
case studyHome
|
|
|
|
// Import
|
|
case importReview(sourceId: String)
|
|
|
|
// Quiz
|
|
case quizList(knowledgeBaseId: String)
|
|
case quizTake(quizId: String)
|
|
case quizResult(quizId: String, attemptId: String)
|
|
|
|
// Profile
|
|
case notificationList
|
|
case settings
|
|
case goalSetting
|
|
case methodPreference
|
|
case feedbackForm
|
|
case editProfile
|
|
}
|
|
|
|
extension Route {
|
|
@ViewBuilder
|
|
var destination: some View {
|
|
switch self {
|
|
case .aiChat: AIChatPage()
|
|
case .dailyThinking: DailyThinkingPage()
|
|
case .aiFeedback: AIFeedbackPageView()
|
|
case .activeRecall: ActiveRecallView()
|
|
case .weakPoints: WeakPointsPage()
|
|
case .reviewCard: ReviewCardView()
|
|
|
|
case .librarySearch: LibrarySearchView()
|
|
case .libraryDetail(let id): LibraryDetailPage(knowledgeBaseId: id)
|
|
case .libraryImport: ImportPage()
|
|
case .libraryCreate: CreateLibraryPage()
|
|
case .addKnowledge(let id): AddKnowledgePage(knowledgeBaseId: id)
|
|
case .knowledgeDetail(let item): KnowledgeDetailPage(item: item)
|
|
case .editKnowledge(let item): EditKnowledgePage(item: item)
|
|
|
|
case .learningSession(let title, let type, let colorHex):
|
|
LearningSessionView(taskTitle: title, taskType: type, taskColor: Color(hex: colorHex))
|
|
case .studyHome: StudyHomeView()
|
|
|
|
case .notificationList: NotificationListView()
|
|
case .settings: SettingsView()
|
|
case .goalSetting: GoalSettingDetailView()
|
|
case .methodPreference: MethodPreferenceView()
|
|
case .feedbackForm: FeedbackFormView()
|
|
case .editProfile: EditProfilePage()
|
|
case .importReview(let sourceId): ImportReviewPage(sourceId: sourceId)
|
|
case .quizList(let kbId): QuizListView(knowledgeBaseId: kbId)
|
|
case .quizTake(let id): QuizTakerView(quizId: id)
|
|
case .quizResult(let qid, let aid): QuizResultView(quizId: qid, attemptId: aid)
|
|
}
|
|
}
|
|
}
|