6.8 KiB
6.8 KiB
项目梳理(第一轮)
1. 已确认的基础约束
- 技术方向:
Python + Flask后端,前端需要单独界面。 - 数据库:
PostgreSQL。 - 部署方式:前后端都部署在 NAS 上,并以
Docker形式运行。 - 敏感信息:不读取
.env,仅参考.env.example。 - 当前代码状态:项目基本还是空白,
main.py仍是 PyCharm 初始化示例。
2. 环境变量格式(来自 .env.example)
当前已知 PG 连接相关变量格式如下:
PGHOSTPGPORTPGUSERPGPASSWORDPGDATABASEAPP_ENVAPP_PORT
说明:后续 Flask 项目可以直接按这一组变量读取数据库连接信息。
3. Excel 工作簿结构梳理
文件:KSP Engine Tweak Chart.xlsx
实际工作表如下:
Engine Database(核心)Communicationwork area(可忽略)Fuel ChartTank ChartLaunch CostKSP Vehicle CostTube(可忽略)TQ series(可忽略)
4. 各表初步理解
4.1 Engine Database
- 规模:约
478条数据。 - 核心程度最高,后续数据库设计应以此为中心。
- 表头如下:
EngineFuel TypeCycleWork EnvSL-ISPVac-ISPMin ThrustMax ThrustMassTWRThrottle RangeTVCSizePrice KDentry CostIgnitionsClassificationNoteNameConfig NameTechRequiredConfig Note
观察
TWR基本是公式列,公式看起来是:Max Thrust / 9.80665 / Mass。Throttle Range基本也是公式列,公式看起来是:Min Thrust / Max Thrust。- 同一个
Engine会有多条记录,代表不同配置/燃料/版本。 Name、Config Name、TechRequired有较多空值,说明这些字段并不是所有引擎都有。- 仅用
(Name, Config Name)作为唯一键 不可靠,发现有重复情况。
目前推测
后续数据库大概率需要拆成两层:
engine_base:存引擎主体信息(名称、来源、尺寸、分类等)engine_variant:存具体配置(燃料、ISP、推力、点火次数、科技树要求等)
但这需要你确认字段含义后再定。
4.2 Communication
- 规模:约
50条数据。 - 主要记录天线/通信部件。
- 字段包括:部件名、显示名、质量、是否主动、是否可展开、类型、展开直径、通信距离、角度、速度、功耗、来源、成本、缩放信息等。
观察
Range km/Range AU/Range Light year看起来是由Range Raw换算而来。idle power watt/transmitting power watt也是公式列。Tech列目前看起来全部为空,可能是未整理,或者本来不用。Is Feeder、Is Deployable、Is Active是布尔型字段。
4.3 Fuel Chart
这是一个换算工具型表,目前并不像主数据表,更适合作为后端计算逻辑或前端小工具。
当前看到的结构
- 第一行:燃料类型,如
HTPB、Solid、PBAN、Kerolox、Hydrolox、Methalox、Hydrazine、MMH/NTO - 第二行:每升体积对应质量(看起来像密度/换算系数)
- 第三、四行:
- 输入体积(L)后,计算不同燃料的质量
- 输入质量(t)后,反推出不同燃料的体积
目前判断
这个表不一定要入库;更适合实现为:
- 一个独立 API
- 或前端页面里的快速换算器
- 或后端的纯函数工具模块
4.4 Tank Chart
- 规模:约
26条数据。 - 字段包括:
TankFuel TypeDry MassFuel MassWet MassTank Volume(L)Mass RatioKL per tonVehicleSourceNote
观察
Wet Mass、Mass Ratio、KL per ton中很多是公式列。Fuel Type当前主要是Kerolox/Hydrolox/Methalox。- 这个表适合作为“燃料箱/级段参数资料表”。
4.5 KSP Vehicle Cost
- 规模:约
10条数据。 - 字段比较简单:
VehicleLaunch PriceSource
观察
- 有部分
Launch Price为空,需确认是“未知”还是“待补充”。
5. 当前我整理出的数据建模方向(草案)
这里只是第一轮草案,等你确认字段含义后再正式定表结构。
核心主表建议
-
engines/engine_base- 引擎基础信息
- 如:名称、来源/分类、尺寸、备注、内部标识等
-
engine_variants- 引擎配置项
- 如:燃料类型、循环方式、适用环境、SL/Vac ISP、推力范围、质量、TVC、点火次数、价格、科技节点等
配套表建议
communication_partstank_specsvehicle_costsfuel_conversion_rules(不一定入库,也可能直接写成程序常量)
6. 第一轮需要你确认的问题
下面这些问题会直接影响数据库设计和前端表单设计:
关于 Engine Database
-
Work Env的枚举含义是什么?- 目前看到像
Lower、Upper等,是否表示适用飞行环境/任务场景?
- 目前看到像
-
Classification是什么语义?- 是模组来源(如
Squad、NFS、Ven、Real/...) - 还是引擎分类标签?
- 是模组来源(如
-
Name是不是游戏/模组里的内部 part name?- 如果是,为什么有相当多记录为空?
-
Config Name是不是某个引擎的配置名/variant 名?- 如果是,它显然不是全局唯一键;后续唯一标识你倾向于用什么?
Engine + Fuel Type + Config Name?还是另有内部 ID?
-
Price KD是不是 Kerbal Dollars 的部件价格? -
entry Cost是不是科技树解锁成本 / 研发成本? -
TVC的单位是否是“度”(gimbal range)? -
Size的单位是否是米(或零件直径规格)? -
Ignitions为空时表示:- 无限次?
- 未知?
- 不适用?
-
Note与Config Note的区别是什么?- 一个是引擎总体备注,一个是某个配置备注?
关于 Fuel Chart
-
这个换算功能你希望最终怎么实现?
- 单独页面小工具
- 引擎/燃料箱录入时的辅助计算器
- 还是后端提供一个简单 API 即可
-
第二行这些值,本质上是不是“燃料密度 / 升到吨的换算系数”?
- 如果是,我后续会直接把它们做成程序配置或数据库字典表。
关于 KSP Vehicle Cost
Launch Price为空的行,是不是表示“暂无数据,允许为空”?
7. 下一步建议
等你回答上面的问题后,我建议立即进入下面阶段:
- 先把
Engine Database字段定义彻底确认 - 画出数据库草图(PostgreSQL)
- 确定 Flask 后端模块划分
- 确定前端页面:列表 / 搜索 / 详情 / 编辑 / 导入
- 再开始初始化项目结构、Docker、数据库迁移、Excel 导入脚本