2026-05-08 15:25:13 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:16:04 +08:00
2026-05-08 15:25:13 +08:00
2026-05-08 15:16:04 +08:00

KSP Data Hangar

这是当前项目的第一版可运行骨架,目标是把 Excel 中的 KSP 数据逐步整理为可导入、可管理、可检索的 Flask 应用。

当前已落地

  • Flask 应用骨架,包含网页路由和 JSON API
  • SQLAlchemy 数据模型,覆盖 Engine、Communication、Tank、Vehicle Cost
  • Engine 列表页、详情页、编辑页
  • Fuel Chart 的前端工具页和 API 接口
  • Excel 巡检脚本,用来核对工作簿结构和候选唯一键冲突
  • Excel 导入脚本与导入服务
  • Dockerfile 与 docker-compose 基线

关键建模结论

  • 不能把 Engine + Config Name 当成数据库硬唯一键
  • 当前源数据里有 48 组 Engine + Config Name 冲突
  • 即使补上 Fuel Type,仍然还有 19 组冲突
  • 因此数据库主键采用 UUID,原始自然键只保留做展示和导入告警

本地运行

  1. 复制 .env.example 到 .env,并填写真实 PG 连接信息
  2. 安装依赖
pip install -r requirements.txt
  1. 启动开发服务器
python main.py
  1. 打开以下地址

初始化数据库

python -m flask --app main:app db init
python -m flask --app main:app db migrate -m "initial schema"
python -m flask --app main:app db upgrade

如果仓库里已经有 migrations 目录,只需要执行最后一条 upgrade。

巡检工作簿

python scripts/inspect_workbook.py

这个脚本会输出:

  • 工作表列表与行数
  • Engine Database 表头
  • Work Env 枚举值
  • 自然键冲突统计
  • 字段稳定性分析

导入工作簿

python scripts/import_workbook.py

如果需要覆盖数据库中已有的导入数据:

python scripts/import_workbook.py --replace

导入脚本会处理:

  • Engine Database
  • Communication
  • Tank Chart
  • KSP Vehicle Cost

Docker 运行

docker compose up --build

应用默认监听容器内 8000 端口,宿主机端口取决于 APP_PORT。

关于 .env

  • 根目录已经补上 .gitignore,避免后续再次提交 .env
  • 如果 .env 已经在 Git 索引里,.gitignore 不会自动取消跟踪,需要你本地手动把它移出索引后再提交

下一步建议

  1. 把 Communication、Tank、Vehicle Cost 的页面也补成 CRUD
  2. 为导入脚本增加增量更新和冲突报告导出
  3. 增加筛选、分页和排序
  4. 补上数据库迁移和导入的自动化测试
S
Description
No description provided
Readme
392 MiB
Languages
HTML 77.2%
Python 20.3%
CSS 2.1%
JavaScript 0.3%