- Restructure: move backend from new_project/ to backend/ - Add full React/TypeScript frontend (37 pages, 17 services, 16 type defs, 11 query hooks) - Add docs/ with SRS specs, user stories, and workflow documentation - Update .gitignore for new directory layout Workflows implemented: WF1 User Signup, WF2 Placement Test, WF3 Exam Configuration, WF4 General English Exam, WF5 Course Generation, WF6 Entity Student Onboarding, AI Course Generation, Adaptive Learning Engine UI, White-Label Branding, Score Release Made-with: Cursor
27 lines
890 B
Python
27 lines
890 B
Python
from odoo import models, fields
|
|
|
|
|
|
class EncoachStudentAbilityModel(models.Model):
|
|
_name = 'encoach.student.ability.model'
|
|
_description = 'Student Ability Estimate per Skill'
|
|
|
|
student_id = fields.Many2one('res.users', required=True, ondelete='cascade', index=True)
|
|
subject_id = fields.Many2one('encoach.subject', ondelete='set null')
|
|
skill = fields.Selection([
|
|
('listening', 'Listening'),
|
|
('reading', 'Reading'),
|
|
('writing', 'Writing'),
|
|
('speaking', 'Speaking'),
|
|
('grammar', 'Grammar'),
|
|
('vocabulary', 'Vocabulary'),
|
|
])
|
|
theta = fields.Float(default=0.0)
|
|
sem = fields.Float(default=1.0)
|
|
last_updated = fields.Datetime(default=fields.Datetime.now)
|
|
|
|
_sql_constraints = [
|
|
('unique_student_subject_skill',
|
|
'unique(student_id, subject_id, skill)',
|
|
'Duplicate ability record'),
|
|
]
|