Spaces:
Sleeping
Sleeping
File size: 2,208 Bytes
5121000 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | from datetime import datetime
from .. import db
class Assessment(db.Model):
"""Stores every stress prediction result for a user."""
__tablename__ = "assessments"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow, index=True)
# ββ Input data ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Psychometric features (stored as JSON blob for flexibility)
psychometric_data = db.Column(db.JSON, nullable=True)
# Raw text note
text_note = db.Column(db.Text, nullable=True)
# ββ Prediction results ββββββββββββββββββββββββββββββββββββββββββββββββββ
psycho_label = db.Column(db.String(16), nullable=True) # High / Medium / Low
psycho_score = db.Column(db.Float, nullable=True)
text_label = db.Column(db.String(32), nullable=True) # e.g. Anxiety
text_score = db.Column(db.Float, nullable=True)
fused_label = db.Column(db.String(16), nullable=True) # Minimal..Critical
fused_score = db.Column(db.Float, nullable=True)
# Which modalities were used
modality_used = db.Column(db.String(32), nullable=True) # both / psycho / text
def to_dict(self):
return {
"id": self.id,
"user_id": self.user_id,
"created_at": self.created_at.isoformat(),
"psychometric_data": self.psychometric_data,
"text_note": self.text_note,
"psycho_label": self.psycho_label,
"psycho_score": self.psycho_score,
"text_label": self.text_label,
"text_score": self.text_score,
"fused_label": self.fused_label,
"fused_score": self.fused_score,
"modality_used": self.modality_used,
}
|