Initial commit: obsidian to gitea
This commit is contained in:
114
study/courses/pm/report.figs/class.mmd
Normal file
114
study/courses/pm/report.figs/class.mmd
Normal file
@@ -0,0 +1,114 @@
|
||||
classDiagram
|
||||
class User {
|
||||
+int id
|
||||
+string name
|
||||
+string email
|
||||
+string role // HR, CANDIDATE, ADMIN
|
||||
+datetime createdAt
|
||||
}
|
||||
|
||||
class Company {
|
||||
+int id
|
||||
+string name
|
||||
+string industry
|
||||
+string size
|
||||
}
|
||||
|
||||
class CandidateProfile {
|
||||
+int id
|
||||
+int userId
|
||||
+string degree
|
||||
+int yearsExperience
|
||||
+string skillTags
|
||||
+string resumeUrl
|
||||
}
|
||||
|
||||
class JobPosition {
|
||||
+int id
|
||||
+int companyId
|
||||
+string title
|
||||
+string level
|
||||
+string requiredSkills
|
||||
+string description
|
||||
+string examPolicyId
|
||||
}
|
||||
|
||||
class ExamPolicy {
|
||||
+string id
|
||||
+int totalQuestions
|
||||
+float easyRatio
|
||||
+float mediumRatio
|
||||
+float hardRatio
|
||||
+string typeRatio // JSON: 单选/多选/编程 等比例
|
||||
}
|
||||
|
||||
class Question {
|
||||
+int id
|
||||
+string content
|
||||
+string type
|
||||
+string skillTag
|
||||
+int difficulty
|
||||
+string source // 企业题/通用题
|
||||
+bool isActive
|
||||
}
|
||||
|
||||
class QuestionStats {
|
||||
+int questionId
|
||||
+int usedCount
|
||||
+float avgScore
|
||||
+float correctRate
|
||||
+float discrimination
|
||||
+float feedbackScore
|
||||
+datetime lastUsedAt
|
||||
}
|
||||
|
||||
class ExamTemplate {
|
||||
+int id
|
||||
+int jobId
|
||||
+string policyId
|
||||
+string questionSlots // JSON: 题目占位信息
|
||||
}
|
||||
|
||||
class ExamSession {
|
||||
+int id
|
||||
+int candidateId
|
||||
+int jobId
|
||||
+int templateId
|
||||
+datetime startTime
|
||||
+datetime submitTime
|
||||
+float totalScore
|
||||
+string status // ONGOING / DONE
|
||||
}
|
||||
|
||||
class Answer {
|
||||
+int id
|
||||
+int sessionId
|
||||
+int questionId
|
||||
+string content
|
||||
+float score
|
||||
+float timeTaken
|
||||
}
|
||||
|
||||
class QuestionFeedback {
|
||||
+int id
|
||||
+int questionId
|
||||
+int fromUserId
|
||||
+int sessionId
|
||||
+int rating // 1~5
|
||||
+string comment
|
||||
+datetime createdAt
|
||||
}
|
||||
|
||||
Company "1" o-- "0..*" User : employs
|
||||
User "1" o-- "0..1" CandidateProfile : has
|
||||
Company "1" o-- "0..*" JobPosition : posts
|
||||
JobPosition "1" o-- "0..*" ExamTemplate : uses
|
||||
ExamPolicy "1" o-- "0..*" ExamTemplate : governs
|
||||
|
||||
Question "1" o-- "1" QuestionStats : has
|
||||
ExamTemplate "1" o-- "0..*" ExamSession : instantiates
|
||||
CandidateProfile "1" o-- "0..*" ExamSession : takes
|
||||
ExamSession "1" o-- "0..*" Answer : contains
|
||||
Question "1" o-- "0..*" Answer : answeredIn
|
||||
Question "1" o-- "0..*" QuestionFeedback : receives
|
||||
User "1" o-- "0..*" QuestionFeedback : writes
|
||||
Reference in New Issue
Block a user