feat: Add Review (사용후기) board system with CC reward
- Backend: Review model, full API (public/user/admin endpoints) - Frontend: list, detail, write/edit pages, admin management - 1 CC reward for writing a review on completed vehicle requests - Navigation updates (Header + admin sidebar) - "Write Review" button on my-request page for completed requests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,7 @@ from .exchange_rate import ExchangeRate, ExchangeRateHistory
|
||||
from .cc_package import CCPackage, DEFAULT_CC_PACKAGES
|
||||
from .visitor import VisitorLog, VisitorDailyStats, VisitorSession
|
||||
from .bulletin import BoardCategory, BoardPost
|
||||
from .review import Review
|
||||
|
||||
__all__ = [
|
||||
"CarMaker",
|
||||
@@ -66,4 +67,5 @@ __all__ = [
|
||||
"VisitorSession",
|
||||
"BoardCategory",
|
||||
"BoardPost",
|
||||
"Review",
|
||||
]
|
||||
|
||||
29
backend/app/models/review.py
Normal file
29
backend/app/models/review.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey, CheckConstraint
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from ..database import Base
|
||||
|
||||
|
||||
class Review(Base):
|
||||
"""User reviews for completed vehicle requests"""
|
||||
__tablename__ = "reviews"
|
||||
__table_args__ = (
|
||||
CheckConstraint('rating >= 1 AND rating <= 5', name='check_rating_range'),
|
||||
)
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
request_id = Column(Integer, ForeignKey("vehicle_requests.id"), nullable=False, unique=True)
|
||||
author_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
|
||||
rating = Column(Integer, nullable=False)
|
||||
title = Column(String(255), nullable=False)
|
||||
content = Column(Text, nullable=False)
|
||||
cc_rewarded = Column(Boolean, default=False)
|
||||
is_published = Column(Boolean, default=True, index=True)
|
||||
view_count = Column(Integer, default=0)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now(), index=True)
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
request = relationship("VehicleRequest", backref="review")
|
||||
author = relationship("User", backref="reviews")
|
||||
Reference in New Issue
Block a user