Files
notes/models/chat_session.py
SimolZimol 939cc13689 new file: .dockerignore
new file:   .env.example
	new file:   Dockerfile
	new file:   app.py
	new file:   blueprints/__init__.py
	new file:   blueprints/auth.py
	new file:   blueprints/chat.py
	new file:   blueprints/context.py
	new file:   blueprints/documents.py
	new file:   blueprints/main.py
	new file:   config.py
	new file:   docker-compose.yml
	new file:   models/__init__.py
	new file:   models/chat_session.py
	new file:   models/document.py
	new file:   models/user.py
	new file:   requirements.txt
	new file:   services/__init__.py
	new file:   services/document_parser.py
	new file:   services/llm_service.py
	new file:   services/rag_service.py
	new file:   services/url_scraper.py
	new file:   static/css/style.css
	new file:   static/js/chat.js
	new file:   static/js/inline_chat.js
	new file:   static/js/main.js
	new file:   templates/base.html
	new file:   templates/document_view.html
	new file:   templates/index.html
	new file:   templates/login.html
	new file:   templates/register.html
2026-05-22 16:03:50 +02:00

46 lines
1.5 KiB
Python

from datetime import datetime
import json
from . import db
class ChatSession(db.Model):
__tablename__ = "chat_sessions"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
title = db.Column(db.String(255), default="New Chat")
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
messages = db.relationship(
"ChatMessage", backref="session", lazy=True, cascade="all, delete-orphan",
order_by="ChatMessage.created_at"
)
def to_dict(self):
return {
"id": self.id,
"title": self.title,
"created_at": self.created_at.isoformat(),
"updated_at": self.updated_at.isoformat(),
}
class ChatMessage(db.Model):
__tablename__ = "chat_messages"
id = db.Column(db.Integer, primary_key=True)
session_id = db.Column(db.Integer, db.ForeignKey("chat_sessions.id"), nullable=False)
role = db.Column(db.String(16), nullable=False) # "user" | "assistant"
content = db.Column(db.Text, nullable=False)
context_ids = db.Column(db.Text, nullable=True) # JSON list of doc/url ids used
created_at = db.Column(db.DateTime, default=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"role": self.role,
"content": self.content,
"created_at": self.created_at.isoformat(),
}