Files
autoclip/backend/models/base.py
Kris Ka 92c2e8ede7 修复WebSocket进度更新和前端状态自动更新问题
- 修复WebSocketNotificationService.send_processing_progress方法参数不匹配问题
- 修复前端RealTimeStatus组件WebSocket消息处理逻辑
- 修复Celery Worker队列配置,确保任务正确路由到processing队列
- 修复Celery应用导入冲突,统一使用正确的celery_app配置
- 添加实时项目状态更新功能,前端无需手动刷新即可看到处理进度
- 完善系统启动脚本,修复PYTHONPATH未绑定变量错误
- 优化流水线处理逻辑,确保所有6个步骤正常执行
- 添加完整的项目文档和启动指南

测试结果:
- WebSocket进度更新正常工作(16%, 33%, 100%)
- 流水线处理完全正常(6个步骤全部成功)
- 前端状态自动更新正常
- 项目状态正确同步到数据库
2025-09-08 17:21:31 +08:00

72 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
基础模型定义
包含所有模型的基类和混入类
"""
import uuid
from datetime import datetime, timezone
from sqlalchemy import Column, String, DateTime, MetaData
from sqlalchemy.orm import declarative_base
from sqlalchemy.dialects.postgresql import UUID
# 创建MetaData实例确保表不会重复定义
metadata = MetaData()
# 创建基础类
Base = declarative_base(metadata=metadata)
def get_utc_now():
"""获取当前UTC时间"""
return datetime.now(timezone.utc)
class TimestampMixin:
"""时间戳混入类,为模型添加创建和更新时间"""
created_at = Column(
DateTime(timezone=True),
default=get_utc_now,
nullable=False,
comment="创建时间"
)
updated_at = Column(
DateTime(timezone=True),
default=get_utc_now,
onupdate=get_utc_now,
nullable=False,
comment="更新时间"
)
def generate_uuid():
"""生成UUID字符串"""
return str(uuid.uuid4())
class BaseModel(Base, TimestampMixin):
"""基础模型类,包含通用字段"""
__abstract__ = True
id = Column(
String(36),
primary_key=True,
default=generate_uuid,
index=True,
comment="主键ID"
)
def __repr__(self):
"""模型的字符串表示"""
return f"<{self.__class__.__name__}(id={self.id})>"
def to_dict(self):
"""转换为字典"""
return {
column.name: getattr(self, column.name)
for column in self.__table__.columns
}
def update_from_dict(self, data: dict):
"""从字典更新模型"""
for key, value in data.items():
if hasattr(self, key) and key != 'id':
setattr(self, key, value)
return self