233e23016c
- 文章 HTML 存储从文件系统迁移至 articles 表,删除 releases 目录 - 合规审查从 DB 读取 HTML,审查结果写回 DB,通过后自动推进至待发布 - 新增 todayCount 筛选按钮,与系统概览统计数据一致 - 全屏预览修复:提升 z-index 超过侧边栏,添加退出全屏/关闭按钮 - 统一 '优化' → '审查' 命名,消除前后端术语不一致 - 调度器创作完成后自动触发审查(生成 → 审查 → 待发布) - 清理旧备份/调试文件、过期大纲和研究笔记
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from pathlib import Path
|
|
from sqlalchemy.orm import Session
|
|
from ..database import SessionLocal
|
|
from ..models import Topic
|
|
import os
|
|
|
|
def sync_topic_to_db(topic_id: str, db: Session = None) -> Topic:
|
|
close_db = False
|
|
if db is None:
|
|
db = SessionLocal()
|
|
close_db = True
|
|
try:
|
|
topic = db.query(Topic).filter(Topic.id == topic_id).first()
|
|
if not topic:
|
|
raise ValueError(f"Topic {topic_id} not found in DB")
|
|
return topic
|
|
finally:
|
|
if close_db:
|
|
db.close()
|
|
|
|
def sync_all_topics():
|
|
logger = __import__('logging').getLogger(__name__)
|
|
try:
|
|
from sqlalchemy import func
|
|
db = SessionLocal()
|
|
total = db.query(Topic).count()
|
|
rows = db.query(Topic.status, func.count(Topic.id)).group_by(Topic.status).all()
|
|
by_status = {s: int(c) for s, c in rows}
|
|
logger.info(f"sync_all_topics: DB verified — {total} topics total, statuses: {by_status}")
|
|
db.close()
|
|
except Exception as e:
|
|
logger.error(f"sync_all_topics: DB connection failed — {e}")
|
|
raise
|
|
|
|
if __name__ == "__main__":
|
|
sync_all_topics()
|