feat(articles): تاریخ انتشار خودکار توسط سرور در لحظهٔ انتشار

problem: ستون date نمایشی دستی پر می‌شد و از لحظهٔ واقعی انتشار جدا می‌افتاد.
- ستون published_at (timestamptz) + مهاجرت idempotent؛ مقالات منتشرشدهٔ قدیمی
  از updated_at عقب‌گرد پر می‌شوند
- _apply_publish_timestamp در PUT و PATCH: در گذار draft→published مقدار
  published_at ثبت می‌شود؛ ستون date/date_en فقط اگر خالی باشد از آن پر می‌شود
  (تاریخ درستِ موجود را خراب نمی‌کند)
- پنل: فیلد «تاریخ انتشار» فقط‌خواندنی شد (نمایش شمسی؛ پیش از انتشار: «در لحظهٔ
  انتشار ثبت می‌شود»)
- ArticleOut: published_at نمایان شد
This commit is contained in:
aramesh-site deploy
2026-10-25 20:03:23 +00:00
parent aa13d41b6d
commit fb8b8bbd61
5 changed files with 82 additions and 28 deletions
+5
View File
@@ -148,6 +148,11 @@ class Article(Base):
updated_at: Mapped[datetime | None] = mapped_column(
DateTime(timezone=True), default=utcnow, onupdate=utcnow, nullable=True
)
# لحظهٔ دقیق انتشار — سرور در گذار draft→published تنظیم می‌کند؛
# تاریخ نمایشی (ستون date) از همین ساخته می‌شود تا دستی و اشتباه ثبت نشود
published_at: Mapped[datetime | None] = mapped_column(
DateTime(timezone=True), nullable=True
)
class Testimonial(Base):