lumaspeech-backend / database /models /app_feedback.py
yasmine hemmati
Sync latest backend code - Dec 2025
4ac256d
Raw
History Blame Contribute Delete
2.1 kB
"""
App Feedback model for storing user feedback about the platform
"""
from sqlalchemy import Column, Integer, String, Text, DateTime, Float, ForeignKey
from sqlalchemy.orm import relationship
from datetime import datetime
from config.database import Base
class AppFeedback(Base):
"""Store feedback submitted by users about the platform"""
__tablename__ = 'app_feedback'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
# Feedback details
feedback_type = Column(String(50), nullable=False, default='general') # general, bug, feature, improvement
rating = Column(Float, nullable=True) # 1-5 stars
message = Column(Text, nullable=False)
# Contact info (may differ from user's email)
contact_email = Column(String(255), nullable=True)
submitter_name = Column(String(255), nullable=True)
user_role = Column(String(50), nullable=True) # therapist, patient
# Status tracking
status = Column(String(50), default='new') # new, reviewed, resolved, archived
reviewed_at = Column(DateTime, nullable=True)
reviewed_by = Column(Integer, ForeignKey('users.id'), nullable=True)
admin_notes = Column(Text, nullable=True)
# Timestamps
created_at = Column(DateTime, default=datetime.utcnow)
# Relationships
user = relationship('User', foreign_keys=[user_id], backref='feedback_submitted')
def to_dict(self):
return {
'id': self.id,
'user_id': self.user_id,
'feedback_type': self.feedback_type,
'rating': self.rating,
'message': self.message,
'contact_email': self.contact_email,
'submitter_name': self.submitter_name,
'user_role': self.user_role,
'status': self.status,
'reviewed_at': self.reviewed_at.isoformat() if self.reviewed_at else None,
'reviewed_by': self.reviewed_by,
'admin_notes': self.admin_notes,
'created_at': self.created_at.isoformat() if self.created_at else None
}