CodeReview/backend/app/models/ci.py

40 lines
1.4 KiB
Python
Raw Normal View History

import uuid
from sqlalchemy import Column, String, Integer, DateTime, ForeignKey, Text
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.db.base import Base
class PRReview(Base):
"""
Stores the history of PR reviews and Bot interactions.
This serves as the 'memory' for the CI agent.
"""
__tablename__ = "pr_reviews"
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
project_id = Column(String, ForeignKey("projects.id"), nullable=False)
# PR Identification
pr_number = Column(Integer, nullable=False)
commit_sha = Column(String, nullable=True) # The specific commit being reviewed
# Interaction Type
event_type = Column(String, nullable=False) # 'opened', 'synchronize', 'comment'
# Content
summary = Column(Text, nullable=True) # Short summary (Markdown)
full_report = Column(Text, nullable=True) # Detailed report or JSON data
# RAG Context (Debug/Transparency)
# Stores a JSON string list of file paths/chunk IDs used to generate this response
context_used = Column(Text, default="[]")
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Relationships
project = relationship("Project", backref="pr_reviews")
def __repr__(self):
return f"<PRReview pr={self.pr_number} event={self.event_type}>"