Data model¶
The ORM is in backend/app/models. Identifiers of user entities are UUIDs. Admin tables are described in docs/ADMIN.md and live in app/admin/models.py: analytics snapshots, task meta, the audit log, parameters, dictionaries, employer cases, the ban list, company verification.
Accounts¶
| Entity | Why it exists |
|---|---|
User |
Email, password hash, role candidate / employer / admin |
EmailVerificationCode |
The email confirmation code |
RefreshToken |
Session renewal |
There is no 2FA table in the models.
People and companies¶
| Entity | Why it exists |
|---|---|
CandidateProfile |
Resume, contacts, feed preferences, search status |
CandidateCategory |
A category per specialization, cooldown, attempt history next to the test |
Company |
The employer profile |
FspAchievement, FspSportTitle |
Results and titles from the registry |
Grades in code (Grade): intern, junior, middle, senior, lead. The eleven sub-levels with «−» and «+» are not in the enum.
Matching and conversation¶
| Entity | Why it exists |
|---|---|
Vacancy |
A vacancy, including the salary band |
Invitation |
An invitation. Statuses: sent, viewed, accepted, declined. «Отозвано» and «Истекло» are not in the enum |
VacancyReaction, CandidateReaction |
Like and skip for swipes |
Conversation, Message, MessageAttachment |
Chat and files |
Meeting |
A meeting. Statuses: pending, confirmed, and the neighbours in MeetingStatus |
Assessment¶
| Entity | Why it exists |
|---|---|
AssessmentTask |
A quiz, code, or open answer. The owner is the platform or a company |
AssessmentTest |
A template: a sample or a fixed list |
AssessmentAttempt, AssessmentAnswer, AssessmentTaskTime |
The attempt, answers, and time |
TestAssignment |
A take-home a company sent to a candidate |
Attempt statuses include interview and grading. Separate proctoring tables (screen recording, face flags) were not found in the models.
A need as its own entity, shortlist versions, and a one-off offer were not found in the models. Matching in the code hangs off vacancies, reactions, and profile strength.