2代版本基本全部实现
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
# models.py
|
||||
from datetime import datetime
|
||||
import json
|
||||
from extensions import db # ✅ 必须从 extensions 导入
|
||||
from extensions import db
|
||||
|
||||
class Device(db.Model):
|
||||
__tablename__ = 'devices'
|
||||
@ -13,38 +13,29 @@ class Device(db.Model):
|
||||
# 快照字段
|
||||
status = db.Column(db.String(50))
|
||||
current_value = db.Column(db.String(200))
|
||||
latest_time = db.Column(db.String(50))
|
||||
json_data = db.Column(db.Text)
|
||||
latest_time = db.Column(db.String(50)) # 原始抓取时间字符串
|
||||
json_data = db.Column(db.Text) # 完整数据
|
||||
|
||||
check_time = db.Column(db.String(50))
|
||||
check_time = db.Column(db.String(50)) # 系统检查时间
|
||||
reason = db.Column(db.String(255))
|
||||
offset = db.Column(db.String(50))
|
||||
offset = db.Column(db.String(50)) # 滞后描述
|
||||
|
||||
install_site = db.Column(db.String(100), default="")
|
||||
is_maintaining = db.Column(db.Boolean, default=False)
|
||||
is_hidden = db.Column(db.Boolean, default=False)
|
||||
|
||||
history = db.relationship('DeviceHistory', backref='device', lazy='dynamic', cascade='all, delete-orphan')
|
||||
|
||||
def to_dict(self):
|
||||
# 兼容处理 API 返回
|
||||
api_status = 'offline' if self.status in ['离线', '异常', '已离线'] else 'online'
|
||||
raw_obj = None
|
||||
if self.json_data:
|
||||
try:
|
||||
raw_obj = json.loads(self.json_data)
|
||||
except:
|
||||
raw_obj = self.json_data
|
||||
|
||||
# 注意:列表接口不返回 json_data 以提高性能
|
||||
return {
|
||||
'id': self.id,
|
||||
'name': self.name,
|
||||
'source': self.source,
|
||||
'latest_time': self.latest_time,
|
||||
'status': api_status, # 前端用这个判断颜色
|
||||
'status_text': self.status, # 显示文本
|
||||
'status': api_status,
|
||||
'status_text': self.status,
|
||||
'value': self.current_value,
|
||||
'raw_json': raw_obj,
|
||||
'reason': self.reason,
|
||||
'install_site': self.install_site,
|
||||
'is_maintaining': self.is_maintaining,
|
||||
@ -52,7 +43,6 @@ class Device(db.Model):
|
||||
'offset': self.offset
|
||||
}
|
||||
|
||||
|
||||
class DeviceHistory(db.Model):
|
||||
__tablename__ = 'device_history'
|
||||
|
||||
@ -67,18 +57,21 @@ class DeviceHistory(db.Model):
|
||||
|
||||
recorded_at = db.Column(db.DateTime, default=datetime.now)
|
||||
|
||||
|
||||
class MaintenanceLog(db.Model):
|
||||
__tablename__ = 'maintenance_log'
|
||||
__tablename__ = 'maintenance_logs'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
device_name = db.Column(db.String(100))
|
||||
content = db.Column(db.Text)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.now)
|
||||
device_name = db.Column(db.String(100), nullable=False)
|
||||
engineer = db.Column(db.String(50)) # 工程师
|
||||
location = db.Column(db.String(100)) # 地点
|
||||
content = db.Column(db.Text) # 事件内容
|
||||
timestamp = db.Column(db.DateTime, default=datetime.now) # 自动记录时间
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'device_name': self.device_name,
|
||||
'engineer': self.engineer or '',
|
||||
'location': self.location or '',
|
||||
'content': self.content,
|
||||
'timestamp': self.timestamp.strftime('%Y-%m-%d %H:%M:%S') if self.timestamp else ""
|
||||
'timestamp': self.timestamp.strftime('%Y-%m-%d %H:%M:%S')
|
||||
}
|
||||
Reference in New Issue
Block a user