aiCourseware.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import { httpAxios } from "@/api/ApiInstance"
  2. export interface AiCoursewareOutlineQuery {
  3. id: string
  4. fromType?: string
  5. extraPrompt?: string
  6. preferences?: AiCoursewarePreferences
  7. }
  8. export interface AiCoursewareGenerateQuery {
  9. id: string
  10. fromType?: string
  11. outline: AiCoursewareOutline
  12. visualPrompt?: string
  13. preferences?: AiCoursewarePreferences
  14. regeneratePageNo?: number
  15. }
  16. export interface AiCoursewarePreferences {
  17. lessonMinutes: number
  18. minPages: number
  19. maxPages: number
  20. assetStyle: "illustration" | "photo" | "mixed"
  21. sourceImagePolicy: "strict" | "balanced" | "creative"
  22. requireAudio: boolean
  23. requireVideo: boolean
  24. enableAnimations: boolean
  25. }
  26. export interface AiCoursewareOutline {
  27. title: string
  28. gradeName: string
  29. textbookName: string
  30. unitName: string
  31. chapterName: string
  32. courseType: string
  33. style: "cartoon" | "clean" | string
  34. textbookResearch?: AiCoursewareTextbookResearch
  35. pages: AiCoursewarePage[]
  36. }
  37. export interface AiCoursewareTextbookResearch {
  38. exactMatch: boolean
  39. confidence: "HIGH" | "MEDIUM" | "LOW" | string
  40. courseType: string
  41. contentSummary: string
  42. works: string[]
  43. verifiedFacts: string[]
  44. teachingObjectives: string[]
  45. teachingFocus: string[]
  46. learningActivities: string[]
  47. missingEvidence: string[]
  48. sources: Array<{
  49. index?: number
  50. title?: string
  51. url: string
  52. official?: boolean
  53. }>
  54. }
  55. export interface AiCoursewarePage {
  56. pageNo: number
  57. type: string
  58. title: string
  59. subtitle?: string
  60. bullets: string[]
  61. teachingStage?: string
  62. teachingPurpose?: string
  63. learningEvidence?: string
  64. durationMinutes?: number
  65. studentContent?: {
  66. headline?: string
  67. points?: string[]
  68. }
  69. activity?: {
  70. task?: string
  71. steps?: string[]
  72. }
  73. classroomAction?: {
  74. teacherInstruction?: string
  75. studentTask?: string
  76. interactionType?: string
  77. }
  78. visual?: {
  79. layout?: string
  80. style?: string
  81. mainVisual?: string
  82. imageKeywords?: string[]
  83. }
  84. visualPlan?: {
  85. layout?: string
  86. visualRole?: string
  87. focalContent?: string
  88. visualDensity?: "low" | "medium" | "high" | string
  89. mainVisual?: string
  90. elements?: string[]
  91. contentPriority?: string[]
  92. imageKeywords?: string[]
  93. style?: string
  94. }
  95. designRequirement?: string
  96. teacherTips?: string
  97. speakerNotes?: string
  98. interaction?: {
  99. type: string
  100. question: string
  101. answer?: string
  102. }
  103. imageKeywords: string[]
  104. image?: {
  105. url: string
  106. keyword: string
  107. provider: string
  108. width?: number
  109. height?: number
  110. score?: number
  111. }
  112. resourceBindings?: AiCoursewareResourceBinding[]
  113. }
  114. export interface AiCoursewareResourceBinding {
  115. resourceId: string
  116. resourceType: "IMG" | "VIDEO" | "SONG" | "MUSIC" | "LISTEN" | "RHYTHM" | "THEORY" | "MUSIC_WIKI" | "INSTRUMENT" | "MUSICIAN" | string
  117. name?: string
  118. contentUrl?: string
  119. coverUrl?: string
  120. dataJson?: string
  121. elementSubtype?: string
  122. purpose?: string
  123. dedicatedPage?: boolean
  124. required?: boolean
  125. verified?: boolean
  126. }
  127. export interface AiCoursewareTaskInfo {
  128. taskId: string
  129. status: "PENDING" | "RUNNING" | "DONE" | "FAILED"
  130. progress: number
  131. message: string
  132. }
  133. export interface AiCoursewareGenerateResult {
  134. context: Record<string, any>
  135. outline: AiCoursewareOutline
  136. }
  137. export const aiCoursewareOutlineApi = (data: AiCoursewareOutlineQuery) => {
  138. return httpAxios.axioseRquest({
  139. method: "post",
  140. url: "/edu-app/aiCourseware/outline",
  141. data
  142. })
  143. }
  144. export const aiCoursewareGenerateApi = (data: AiCoursewareGenerateQuery) => {
  145. return httpAxios.axioseRquest({
  146. method: "post",
  147. url: "/edu-app/aiCourseware/generate",
  148. data
  149. })
  150. }
  151. export const aiCoursewareTaskApi = (taskId: string) => {
  152. return httpAxios.axioseRquest({
  153. method: "get",
  154. url: `/edu-app/aiCourseware/task/${taskId}`
  155. })
  156. }
  157. export const aiCoursewareResultApi = (taskId: string) => {
  158. return httpAxios.axioseRquest({
  159. method: "get",
  160. url: `/edu-app/aiCourseware/task/${taskId}/result`
  161. })
  162. }