chore: همگام‌سازی وضعیت زندهٔ سرور با مخزن
CI / tests (push) Waiting to run
CI / images (push) Blocked by required conditions

شامل کارهای چند نشست موازی که تا این‌جا فقط روی سرور بود:
- نقشهٔ دفتر مرکزی در فوتر (LazyOfficeMap) + MapViewport/LazyMaps/mapProjects
- صفحهٔ مدیریت مقالات (AdminArticlesPage) + میان‌بر ویرایش پیش‌نویس در وبلاگ
- مهاجرت ۰۰۰۴: updated_at مقالات/پروژه‌ها
- chatbot/Dockerfile: نصب دومرحله‌ای torch (کاربردی برای PyPI فیلترشده)
- seed: خالی‌کردن آمارهای دموی story
- docker-compose: اصلاح پسوند @file میان‌افزارهای Traefik
- حذف فایل موقت frontend/.tmp-style.json و اصلاحات جزئی UI

با این کامیت، آن‌چه روی سرور اجرا می‌شود Exactly همان چیزی است که در مخزن ثبت شده.
This commit is contained in:
aramesh-site deploy
2026-10-26 12:28:28 +00:00
parent 884902e054
commit 14660586c4
23 changed files with 488 additions and 2137 deletions
@@ -0,0 +1,39 @@
"""زمان آخرین به‌روزرسانی مقاله‌ها و پروژه‌ها — ستون updated_at برای lastmod نقشه سایت.
نقشه سایت lastmod معتبر لازم دارد که آخرین تغییر معنادار محتوا را نشان دهد؛
تاریخ نمایشی مقاله‌ها (شمسی دست‌نویس) برای این کار مناسب نیست. ردیف‌های قدیمی
NULL می‌مانند و lastmod فقط برای ردیف‌هایی صادر می‌شود که بعداً در پنل ذخیره شده‌اند —
تاریخ جعلی همگن (همه = امروز) به‌عنوان سیگنال منفی شناخته می‌شود.
Revision ID: 0004
Revises: 0003
Create Date: 2026-10-11
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
revision: str = "0004"
down_revision: Union[str, None] = "0003"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
_TABLES = ("articles", "projects")
def upgrade() -> None:
for table in _TABLES:
cols = {c["name"] for c in sa.inspect(op.get_bind()).get_columns(table)}
if "updated_at" not in cols:
op.add_column(
table,
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=True),
)
def downgrade() -> None:
for table in _TABLES:
cols = {c["name"] for c in sa.inspect(op.get_bind()).get_columns(table)}
if "updated_at" in cols:
op.drop_column(table, "updated_at")