Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
钉钉同步日志模型
|
||||
- DingtalkSyncLog: 全量同步任务日志
|
||||
- DingtalkStreamEventLog: Stream 增量事件日志
|
||||
"""
|
||||
from sqlalchemy import Column, String, Text, Integer, DateTime
|
||||
|
||||
from app.base_model import BaseModel
|
||||
|
||||
|
||||
class DingtalkSyncLog(BaseModel):
|
||||
"""
|
||||
钉钉全量同步日志
|
||||
|
||||
字段说明:
|
||||
- sync_type: 同步类型 dept=部门 user=用户
|
||||
- total_count: 钉钉侧总数
|
||||
- success_count: 同步成功数
|
||||
- fail_count: 同步失败数
|
||||
- status: 同步状态 running/success/partial/failed
|
||||
- error_detail: 失败详情(JSON)
|
||||
- started_at: 同步开始时间
|
||||
- finished_at: 同步结束时间
|
||||
"""
|
||||
__tablename__ = "core_dingtalk_sync_log"
|
||||
|
||||
sync_type = Column(String(20), nullable=False, index=True, comment="同步类型: dept/user")
|
||||
total_count = Column(Integer, default=0, comment="总数")
|
||||
success_count = Column(Integer, default=0, comment="成功数")
|
||||
fail_count = Column(Integer, default=0, comment="失败数")
|
||||
status = Column(String(20), default="running", index=True, comment="状态: running/success/partial/failed")
|
||||
error_detail = Column(Text, nullable=True, comment="失败详情")
|
||||
started_at = Column(DateTime, nullable=True, comment="开始时间")
|
||||
finished_at = Column(DateTime, nullable=True, comment="结束时间")
|
||||
|
||||
def __repr__(self):
|
||||
return f"<DingtalkSyncLog {self.sync_type} {self.status}>"
|
||||
|
||||
|
||||
class DingtalkStreamEventLog(BaseModel):
|
||||
"""
|
||||
钉钉 Stream 增量事件日志
|
||||
|
||||
记录每一次 Stream 推送的增量变更(部门/用户的创建、修改、删除等)
|
||||
"""
|
||||
__tablename__ = "core_dingtalk_stream_event_log"
|
||||
|
||||
event_type = Column(String(50), nullable=False, index=True, comment="事件类型: org_dept_create/user_add_org等")
|
||||
target_type = Column(String(20), nullable=False, index=True, comment="目标类型: dept/user")
|
||||
target_name = Column(String(100), nullable=True, comment="目标名称")
|
||||
dingtalk_dept_id = Column(String(50), nullable=True, comment="钉钉部门ID")
|
||||
dingtalk_userid = Column(String(100), nullable=True, comment="钉钉用户ID")
|
||||
status = Column(String(20), default="success", index=True, comment="状态: success/failed")
|
||||
error_detail = Column(Text, nullable=True, comment="失败详情")
|
||||
event_time = Column(DateTime, nullable=True, comment="事件时间")
|
||||
|
||||
def __repr__(self):
|
||||
return f"<DingtalkStreamEventLog {self.event_type} {self.target_type} {self.status}>"
|
||||
Reference in New Issue
Block a user