将所有时间字段从 UTC 时间改为东八区(Asia/Shanghai)时间。
app/core/common/timezone_utils.py - 新增时区工具模块(兼容 Python 3.8+)app/models/data_product.py - 时间字段修正app/models/metadata_review.py - 时间字段修正app/core/data_service/data_product_service.py - 时间处理修正app/core/meta_data/redundancy_check.py - 时间处理修正app/core/business_domain/business_domain.py - 时间处理修正scripts/fix_startup.sh - 自动修复脚本scripts/diagnose_issue.sh - 问题诊断脚本scripts/TROUBLESHOOTING.md - 故障排查指南QUICK_FIX.md - 快速修复指南PYTHON38_COMPATIBILITY.md - Python 3.8 兼容性说明docs/timezone_fix_summary.md - 时区修正总结# 1. 检查 Python 版本
python --version
# 应该显示: Python 3.8.x
# 2. 检查 backports.zoneinfo 是否已安装
cd /opt/dataops-platform
source venv/bin/activate
python -c "import backports.zoneinfo; print('backports.zoneinfo 已安装')"
# 如果已安装,应该显示: backports.zoneinfo 已安装
方法 A: 使用 Git(推荐)
cd /opt/dataops-platform
git pull origin main
方法 B: 使用 SCP 上传
# 在本地执行
scp -r app/ scripts/ docs/ *.md ubuntu@your-server:/opt/dataops-platform/
# 在服务器上执行
cd /opt/dataops-platform/scripts
sudo chmod +x fix_startup.sh diagnose_issue.sh
sudo ./fix_startup.sh
# 1. 检查服务状态
sudo supervisorctl status dataops-platform
# 预期输出: dataops-platform RUNNING pid xxx, uptime x:xx:xx
# 2. 测试健康检查
curl http://localhost:5500/api/system/health
# 预期输出: {"status":"healthy",...}
# 3. 测试时区功能
cd /opt/dataops-platform
source venv/bin/activate
python -c "from app.core.common.timezone_utils import now_china_naive; print('当前东八区时间:', now_china_naive())"
# 预期输出: 当前东八区时间: 2026-01-12 18:30:45.123456
代码已自动适配 Python 3.8 和 3.9+:
# app/core/common/timezone_utils.py
try:
# Python 3.9+
from zoneinfo import ZoneInfo
except ImportError:
# Python 3.8 使用 backports
from backports.zoneinfo import ZoneInfo
| Python 版本 | zoneinfo 模块 | 系统依赖 |
|---|---|---|
| 3.8 | backports.zoneinfo (pip) |
tzdata (apt) |
| 3.9+ | 标准库 zoneinfo |
tzdata (apt) |
backports.zoneinfotzdata 包症状:
[ERROR] dataops-platform 重启失败!
tail: cannot open '/opt/dataops-platform/logs/gunicorn_error.log' for reading: No such file or directory
原因: 缺少系统时区数据
解决:
sudo apt-get update
sudo apt-get install -y tzdata
sudo supervisorctl restart dataops-platform
症状:
ModuleNotFoundError: No module named 'zoneinfo'
原因: Python 3.8 环境未安装 backports.zoneinfo
解决:
cd /opt/dataops-platform
source venv/bin/activate
pip install backports.zoneinfo
sudo supervisorctl restart dataops-platform
症状:
ZoneInfoNotFoundError: 'No time zone found with key Asia/Shanghai'
原因: 系统缺少时区数据库
解决:
sudo apt-get update
sudo apt-get install -y tzdata
sudo supervisorctl restart dataops-platform
部署完成后,请验证以下功能:
supervisorctl status 显示 RUNNING)created_at 字段updated_at 和 processed_at 字段last_viewed_at 字段# Supervisor 错误日志(最重要)
sudo tail -f /var/log/supervisor/dataops-platform-stderr.log
# Gunicorn 错误日志
tail -f /opt/dataops-platform/logs/gunicorn_error.log
# Gunicorn 访问日志
tail -f /opt/dataops-platform/logs/gunicorn_access.log
cd /opt/dataops-platform/scripts
sudo ./diagnose_issue.sh
cd /opt/dataops-platform
source venv/bin/activate
gunicorn -c gunicorn_config.py 'app:create_app()'
# 按 Ctrl+C 停止
QUICK_FIX.mdPYTHON38_COMPATIBILITY.mdscripts/TROUBLESHOOTING.mddocs/timezone_fix_summary.md如果部署后出现严重问题,可以回滚到之前的版本:
# 1. 回滚代码
cd /opt/dataops-platform
git reset --hard HEAD~1
# 2. 重启服务
sudo supervisorctl restart dataops-platform
# 3. 验证服务
sudo supervisorctl status dataops-platform
如果遇到问题,请提供以下信息:
诊断输出:
cd /opt/dataops-platform/scripts
sudo ./diagnose_issue.sh > ~/diagnosis.log 2>&1
bash
sudo tail -100 /var/log/supervisor/dataops-platform-stderr.log > ~/error.log
系统信息:
python --version
cat /etc/os-release
部署日期: 2026-01-12
版本: v1.0 - 时区修正
兼容性: Python 3.8+