RELEASE_NOTES.md 5.7 KB

Release Notes - 时区修正版本

版本信息

  • 版本号: v1.0-timezone-fix
  • 发布日期: 2026-01-12
  • 兼容性: Python 3.8+

🎯 主要变更

时区统一修正

将所有时间字段从 UTC 时间改为东八区(Asia/Shanghai)时间,确保时间显示符合中国用户习惯。

影响的数据表

表名 修正的字段
data_orders created_at, updated_at, processed_at
data_products created_at, updated_at, last_updated_at, last_viewed_at
metadata_review_records created_at, updated_at, resolved_at
metadata_version_history created_at

✨ 新增功能

1. 时区工具模块

新增 app/core/common/timezone_utils.py,提供统一的时区处理:

  • now_china() - 获取当前东八区时间(带时区信息)
  • now_china_naive() - 获取当前东八区时间(用于数据库存储)
  • to_china_time() - 转换任意时区到东八区
  • utc_to_china_naive() - UTC 转东八区(不带时区信息)

2. 自动化运维脚本

新增多个运维脚本,简化部署和故障排查:

  • scripts/fix_startup.sh - 自动修复启动问题
  • scripts/diagnose_issue.sh - 全面的问题诊断
  • scripts/TROUBLESHOOTING.md - 详细的故障排查指南

3. 完整的文档

  • QUICK_FIX.md - 快速修复指南
  • PYTHON38_COMPATIBILITY.md - Python 3.8 兼容性说明
  • DEPLOYMENT_GUIDE.md - 完整部署指南
  • docs/timezone_fix_summary.md - 技术实现总结

🔧 技术改进

Python 版本兼容性

代码已完全兼容 Python 3.8 和 3.9+:

try:
    from zoneinfo import ZoneInfo  # Python 3.9+
except ImportError:
    from backports.zoneinfo import ZoneInfo  # Python 3.8

代码质量提升

  • ✅ 类型注解优化:Optional[X]X | None
  • ✅ 异常处理优化:try-except-passcontextlib.suppress()
  • ✅ 集合创建优化:set(generator){set comprehension}
  • ✅ 通过所有 linter 检查

📝 修改的文件

核心代码(6 个文件)

  1. app/core/common/timezone_utils.py - 新建
  2. app/models/data_product.py - 修改 DataProduct 和 DataOrder 模型
  3. app/models/metadata_review.py - 修改两个模型和一个函数
  4. app/core/data_service/data_product_service.py - 修改 9 处时间处理
  5. app/core/meta_data/redundancy_check.py - 修改时间处理 + 代码优化
  6. app/core/business_domain/business_domain.py - 修改时间处理

运维脚本(3 个文件)

  1. scripts/fix_startup.sh - 新建
  2. scripts/diagnose_issue.sh - 新建
  3. scripts/TROUBLESHOOTING.md - 新建

文档(5 个文件)

  1. QUICK_FIX.md - 新建
  2. PYTHON38_COMPATIBILITY.md - 新建
  3. DEPLOYMENT_GUIDE.md - 新建
  4. RELEASE_NOTES.md - 新建(本文件)
  5. docs/timezone_fix_summary.md - 新建

⚙️ 部署要求

系统依赖

sudo apt-get install -y tzdata

Python 依赖

Python 3.8:

pip install backports.zoneinfo

Python 3.9+: 无需额外安装(使用标准库)

🚀 部署步骤

快速部署(推荐)

# 1. 上传代码
cd /opt/dataops-platform
git pull origin main

# 2. 运行自动修复脚本
cd scripts
sudo chmod +x fix_startup.sh
sudo ./fix_startup.sh

# 3. 验证部署
sudo supervisorctl status dataops-platform
curl http://localhost:5500/api/system/health

详细步骤请参考 DEPLOYMENT_GUIDE.md

⚠️ 重要提示

已有数据

数据库中已存在的记录可能使用 UTC 时间。新旧数据会混合存在。

可选的数据迁移(将历史数据统一为东八区时间):

-- 将 UTC 时间转换为东八区时间(+8小时)
UPDATE data_orders 
SET created_at = created_at + INTERVAL '8 hours',
    updated_at = updated_at + INTERVAL '8 hours',
    processed_at = processed_at + INTERVAL '8 hours'
WHERE created_at < '2026-01-12 00:00:00';

完整的迁移 SQL 请参考 docs/timezone_fix_summary.md

API 变更

所有 API 返回的时间字段现在表示东八区时间,而不是 UTC 时间。

示例

{
  "created_at": "2026-01-12T18:30:45",  // 东八区时间
  "updated_at": "2026-01-12T18:30:45"   // 东八区时间
}

🐛 已知问题

🔄 回滚方案

如果需要回滚:

cd /opt/dataops-platform
git reset --hard HEAD~1
sudo supervisorctl restart dataops-platform

📊 测试建议

部署后请验证以下功能:

  1. ✅ 创建新数据订单,检查 created_at 是否为东八区当前时间
  2. ✅ 更新订单状态,检查 updated_atprocessed_at
  3. ✅ 注册数据产品,检查时间字段
  4. ✅ 查看数据产品,检查 last_viewed_at 更新
  5. ✅ 创建元数据审核记录,检查时间字段

📞 支持

快速修复

遇到问题?运行快速修复脚本:

cd /opt/dataops-platform/scripts
sudo ./fix_startup.sh

问题诊断

运行诊断脚本获取详细信息:

cd /opt/dataops-platform/scripts
sudo ./diagnose_issue.sh

查看日志

# 最重要的日志
sudo tail -f /var/log/supervisor/dataops-platform-stderr.log

文档索引

  • 🚀 快速开始: QUICK_FIX.md
  • 📖 部署指南: DEPLOYMENT_GUIDE.md
  • 🐍 Python 3.8: PYTHON38_COMPATIBILITY.md
  • 🔧 故障排查: scripts/TROUBLESHOOTING.md
  • 📚 技术细节: docs/timezone_fix_summary.md

👥 贡献者

  • AI Assistant - 时区修正实现
  • 项目团队 - 需求提出和测试

📅 下一步计划

  • 监控生产环境运行情况
  • 收集用户反馈
  • 考虑是否需要迁移历史数据

发布人: AI Assistant
发布日期: 2026-01-12
文档版本: 1.0