schema.prisma 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. generator client {
  2. provider = "prisma-client-js"
  3. }
  4. datasource db {
  5. provider = "mysql"
  6. url = env("DATABASE_URL")
  7. }
  8. enum SimulationTaskStatus {
  9. PROCESSING
  10. SUCCESSES
  11. FAILED
  12. }
  13. enum TemplateTaskStatus {
  14. WAIT
  15. PROCESSING
  16. STEP1_SUCCESS
  17. STEP2_SUCCESS
  18. FAILED
  19. }
  20. enum HairTemplateStatus {
  21. DRAFT
  22. PUBLIC
  23. }
  24. enum HairTemplateCategory {
  25. LONG
  26. MEDIUM
  27. SHORT
  28. DYE
  29. }
  30. enum HairTemplateSystemFlag {
  31. YES
  32. NO
  33. }
  34. enum SystemConfigValueType {
  35. STRING
  36. NUMBER
  37. BOOLEAN
  38. JSON
  39. }
  40. enum CustomerExpectContact {
  41. LINE
  42. PHONE
  43. EMAIL
  44. NONE
  45. }
  46. enum CustomerHairLength {
  47. SHORT
  48. MEDIUM
  49. LONG
  50. UNCONFIRM
  51. }
  52. enum CustomerHairTexture {
  53. UNCONFIRM
  54. THIN
  55. NORMAL
  56. HARD_CRUDE
  57. CURLY
  58. }
  59. enum CustomerFirstSuggestHair {
  60. AUTO
  61. LONG
  62. MEDIUM
  63. SHORT
  64. }
  65. enum CustomerVisitPurpose {
  66. CUT_DYE
  67. CUT
  68. DYE
  69. CONSULT_SIM
  70. }
  71. model HairstylistUser {
  72. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  73. username String @db.VarChar(50)
  74. email String @db.VarChar(100)
  75. password String @db.VarChar(100)
  76. simulationInviteCode String? @unique @map("simulation_invite_code") @db.VarChar(8)
  77. displayName String @default("") @map("display_name") @db.VarChar(100)
  78. slug String? @unique @map("public_profile_slug") @db.VarChar(80)
  79. photoUrl String @default("") @map("photo_url") @db.VarChar(500)
  80. lead String? @db.Text
  81. bio String? @db.Text
  82. bookingUrl String @default("") @map("booking_url") @db.VarChar(500)
  83. experienceYears Int? @map("experience_years") @db.UnsignedTinyInt
  84. rating String @default("") @db.VarChar(8)
  85. reviewCount Int @default(0) @map("review_count") @db.UnsignedInt
  86. specialties String? @db.Text
  87. address String? @db.Text
  88. hours String? @db.Text
  89. createTime DateTime @default(now()) @map("create_time")
  90. updateTime DateTime @updatedAt @map("update_time")
  91. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  92. @@map("hairstylist_user")
  93. }
  94. model Customer {
  95. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  96. hairstylistId BigInt @map("hairstylist_id") @db.UnsignedBigInt
  97. name String @db.VarChar(30)
  98. namePronunciation String @default("") @map("name_pronunciation") @db.VarChar(50)
  99. phone String @db.VarChar(20)
  100. email String @default("") @db.VarChar(100)
  101. birthday DateTime? @db.Date
  102. avatar String @default("") @db.VarChar(500)
  103. expectContact CustomerExpectContact @default(NONE) @map("expect_contact")
  104. hairLength CustomerHairLength @default(UNCONFIRM) @map("hair_length")
  105. hairTexture CustomerHairTexture @default(UNCONFIRM) @map("hair_texture")
  106. notice String? @db.Text
  107. allergy String @default("") @db.VarChar(500)
  108. innerRemark String? @map("inner_remark") @db.Text
  109. followContent String? @map("follow_content") @db.Text
  110. nextFollowDate DateTime? @map("next_follow_date") @db.Date
  111. recommendVisitDate DateTime? @map("recommend_visit_date") @db.Date
  112. firstSuggestHair CustomerFirstSuggestHair @default(AUTO) @map("first_suggest_hair")
  113. planDate DateTime? @map("plan_date") @db.Date
  114. isFirstRegister Int @default(0) @map("is_first_register") @db.UnsignedTinyInt
  115. visitPurpose CustomerVisitPurpose? @map("visit_purpose")
  116. trouble String? @db.Text
  117. consultContent String? @map("consult_content") @db.Text
  118. expectLook String? @map("expect_look") @db.Text
  119. createTime DateTime @default(now()) @map("create_time")
  120. updateTime DateTime @updatedAt @map("update_time")
  121. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  122. @@unique([phone, isDeleted], map: "uk_phone_del")
  123. @@index([isDeleted], map: "idx_is_deleted")
  124. @@index([hairstylistId, isDeleted], map: "idx_hairstylist_is_deleted")
  125. @@index([nextFollowDate, isDeleted], map: "idx_next_follow")
  126. @@index([recommendVisitDate, isDeleted], map: "idx_recommend_visit")
  127. @@index([planDate, isDeleted], map: "idx_plan_date")
  128. @@map("customer")
  129. }
  130. model CustomerTreatmentRecord {
  131. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  132. customerId BigInt @map("customer_id") @db.UnsignedBigInt
  133. hairstylistId BigInt @map("hairstylist_id") @db.UnsignedBigInt
  134. treatmentTime DateTime @map("treatment_time")
  135. treatmentTitle String @map("treatment_title") @db.VarChar(200)
  136. treatmentDetail String? @map("treatment_detail") @db.Text
  137. createTime DateTime @default(now()) @map("create_time")
  138. updateTime DateTime @updatedAt @map("update_time")
  139. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  140. @@map("customer_treatment_record")
  141. }
  142. model AiHairSimulation {
  143. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  144. customerId BigInt? @map("customer_id") @db.UnsignedBigInt
  145. hairstylistId BigInt @map("hairstylist_id") @db.UnsignedBigInt
  146. originImage String @map("origin_image") @db.VarChar(500)
  147. templateIds String @map("template_ids") @db.Text
  148. simulateRemark String? @map("simulate_remark") @db.Text
  149. createTime DateTime @default(now()) @map("create_time")
  150. updateTime DateTime @updatedAt @map("update_time")
  151. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  152. @@map("ai_hair_simulation")
  153. }
  154. model AiHairSimulationTask {
  155. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  156. simulationId BigInt @map("simulation_id") @db.UnsignedBigInt
  157. templateId String @map("template_id") @db.VarChar(100)
  158. customerId BigInt? @map("customer_id") @db.UnsignedBigInt
  159. taskId String @map("task_id") @db.VarChar(200)
  160. taskStatus SimulationTaskStatus @map("task_status")
  161. resultImages String? @map("result_images") @db.Text
  162. taskStartTime DateTime @map("task_start_time")
  163. taskFinishTime DateTime? @map("task_finish_time")
  164. errorMsg String? @map("error_msg") @db.Text
  165. createTime DateTime @default(now()) @map("create_time")
  166. updateTime DateTime @updatedAt @map("update_time")
  167. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  168. @@map("ai_hair_simulation_task")
  169. }
  170. model HairTemplate {
  171. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  172. templateName String @map("template_name") @db.VarChar(100)
  173. templateNameI18n Json? @map("template_name_i18n")
  174. coverUrl String @default("") @map("cover_url") @db.VarChar(500)
  175. status HairTemplateStatus
  176. category HairTemplateCategory
  177. tags String @default("") @db.VarChar(500)
  178. description String? @db.Text
  179. modelUrl String @default("") @map("model_url") @db.VarChar(500)
  180. clothesUrl String @default("") @map("clothes_url") @db.VarChar(500)
  181. backgroundUrl String @default("") @map("background_url") @db.VarChar(500)
  182. refHairUrl String @default("") @map("ref_hair_url") @db.VarChar(500)
  183. hairstylistId BigInt? @map("hairstylist_id") @db.UnsignedBigInt
  184. templateUrl String @default("") @map("template_url") @db.VarChar(500)
  185. usedCount Int @default(0) @map("used_count") @db.UnsignedInt
  186. isSystemTemplate HairTemplateSystemFlag @default(NO) @map("is_system_template")
  187. createTime DateTime @default(now()) @map("create_time")
  188. updateTime DateTime @updatedAt @map("update_time")
  189. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  190. @@index([category, isDeleted], map: "idx_category")
  191. @@index([hairstylistId, isDeleted], map: "idx_hairstylist_id")
  192. @@index([status, isDeleted], map: "idx_status")
  193. @@map("hair_template")
  194. }
  195. model HairTemplateMakeTask {
  196. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  197. totalTaskId String @map("total_task_id") @db.VarChar(200)
  198. step1TaskId String @default("") @map("step1_task_id") @db.VarChar(200)
  199. step2TaskId String @default("") @map("step2_task_id") @db.VarChar(200)
  200. taskStatus TemplateTaskStatus @map("task_status")
  201. templateId BigInt? @map("template_id") @db.UnsignedBigInt
  202. step1Resource String? @map("step1_resource") @db.Text
  203. step2Resource String? @map("step2_resource") @db.Text
  204. refHairUrl String @default("") @map("ref_hair_url") @db.VarChar(500)
  205. modelUrl String @default("") @map("model_url") @db.VarChar(500)
  206. clothesUrl String @default("") @map("clothes_url") @db.VarChar(500)
  207. backgroundUrl String @default("") @map("background_url") @db.VarChar(500)
  208. step1ResultImg String @default("") @map("step1_result_img") @db.VarChar(500)
  209. step2ResultImg String @default("") @map("step2_result_img") @db.VarChar(500)
  210. createTime DateTime @default(now()) @map("create_time")
  211. updateTime DateTime @updatedAt @map("update_time")
  212. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  213. @@map("hair_template_make_task")
  214. }
  215. model SystemConfig {
  216. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  217. configKey String @map("config_key") @db.VarChar(100)
  218. configName String @map("config_name") @db.VarChar(200)
  219. configGroup String @map("config_group") @db.VarChar(50)
  220. configValue String? @map("config_value") @db.Text
  221. valueType SystemConfigValueType @default(STRING) @map("value_type")
  222. sort Int @default(0)
  223. remark String? @default("") @db.VarChar(500)
  224. createTime DateTime @default(now()) @map("create_time")
  225. updateTime DateTime @updatedAt @map("update_time")
  226. isDeleted Int @default(0) @map("is_deleted") @db.UnsignedTinyInt
  227. @@unique([configKey, isDeleted], map: "uk_config_key")
  228. @@index([configGroup, isDeleted], map: "idx_config_group")
  229. @@map("system_config")
  230. }
  231. model BetaApplication {
  232. id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
  233. name String @db.VarChar(80)
  234. email String @db.VarChar(150)
  235. salonName String @map("salon_name") @db.VarChar(150)
  236. area String @db.VarChar(100)
  237. role String @db.VarChar(50)
  238. contact String @db.VarChar(150)
  239. portfolioUrl String @default("") @map("portfolio_url") @db.VarChar(500)
  240. monthlyCustomers String @default("") @map("monthly_customers") @db.VarChar(30)
  241. language String @default("") @db.VarChar(20)
  242. features String? @db.Text
  243. painPoint String? @map("pain_point") @db.Text
  244. createTime DateTime @default(now()) @map("create_time")
  245. @@index([email], map: "idx_beta_application_email")
  246. @@index([createTime], map: "idx_beta_application_create_time")
  247. @@map("beta_application")
  248. }