# 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+: ```python try: from zoneinfo import ZoneInfo # Python 3.9+ except ImportError: from backports.zoneinfo import ZoneInfo # Python 3.8 ``` ### 代码质量提升 - ✅ 类型注解优化:`Optional[X]` → `X | None` - ✅ 异常处理优化:`try-except-pass` → `contextlib.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` - **新建** ## ⚙️ 部署要求 ### 系统依赖 ```bash sudo apt-get install -y tzdata ``` ### Python 依赖 **Python 3.8**: ```bash pip install backports.zoneinfo ``` **Python 3.9+**: 无需额外安装(使用标准库) ## 🚀 部署步骤 ### 快速部署(推荐) ```bash # 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 时间。新旧数据会混合存在。 **可选的数据迁移**(将历史数据统一为东八区时间): ```sql -- 将 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 时间。 **示例**: ```json { "created_at": "2026-01-12T18:30:45", // 东八区时间 "updated_at": "2026-01-12T18:30:45" // 东八区时间 } ``` ## 🐛 已知问题 无 ## 🔄 回滚方案 如果需要回滚: ```bash cd /opt/dataops-platform git reset --hard HEAD~1 sudo supervisorctl restart dataops-platform ``` ## 📊 测试建议 部署后请验证以下功能: 1. ✅ 创建新数据订单,检查 `created_at` 是否为东八区当前时间 2. ✅ 更新订单状态,检查 `updated_at` 和 `processed_at` 3. ✅ 注册数据产品,检查时间字段 4. ✅ 查看数据产品,检查 `last_viewed_at` 更新 5. ✅ 创建元数据审核记录,检查时间字段 ## 📞 支持 ### 快速修复 遇到问题?运行快速修复脚本: ```bash cd /opt/dataops-platform/scripts sudo ./fix_startup.sh ``` ### 问题诊断 运行诊断脚本获取详细信息: ```bash cd /opt/dataops-platform/scripts sudo ./diagnose_issue.sh ``` ### 查看日志 ```bash # 最重要的日志 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