更新
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
# 项目梳理(第一轮)
|
||||
|
||||
## 1. 已确认的基础约束
|
||||
|
||||
- 技术方向:`Python + Flask` 后端,前端需要单独界面。
|
||||
- 数据库:`PostgreSQL`。
|
||||
- 部署方式:前后端都部署在 NAS 上,并以 `Docker` 形式运行。
|
||||
- 敏感信息:**不读取** `.env`,仅参考 `.env.example`。
|
||||
- 当前代码状态:项目基本还是空白,`main.py` 仍是 PyCharm 初始化示例。
|
||||
|
||||
## 2. 环境变量格式(来自 `.env.example`)
|
||||
|
||||
当前已知 PG 连接相关变量格式如下:
|
||||
|
||||
- `PGHOST`
|
||||
- `PGPORT`
|
||||
- `PGUSER`
|
||||
- `PGPASSWORD`
|
||||
- `PGDATABASE`
|
||||
- `APP_ENV`
|
||||
- `APP_PORT`
|
||||
|
||||
说明:后续 Flask 项目可以直接按这一组变量读取数据库连接信息。
|
||||
|
||||
## 3. Excel 工作簿结构梳理
|
||||
|
||||
文件:`KSP Engine Tweak Chart.xlsx`
|
||||
|
||||
实际工作表如下:
|
||||
|
||||
1. `Engine Database`(核心)
|
||||
2. `Communication`
|
||||
3. `work area`(可忽略)
|
||||
4. `Fuel Chart`
|
||||
5. `Tank Chart`
|
||||
6. `Launch Cost`
|
||||
7. `KSP Vehicle Cost`
|
||||
8. `Tube`(可忽略)
|
||||
9. `TQ series`(可忽略)
|
||||
|
||||
## 4. 各表初步理解
|
||||
|
||||
### 4.1 `Engine Database`
|
||||
|
||||
- 规模:约 `478` 条数据。
|
||||
- 核心程度最高,后续数据库设计应以此为中心。
|
||||
- 表头如下:
|
||||
1. `Engine`
|
||||
2. `Fuel Type`
|
||||
3. `Cycle`
|
||||
4. `Work Env`
|
||||
5. `SL-ISP`
|
||||
6. `Vac-ISP`
|
||||
7. `Min Thrust`
|
||||
8. `Max Thrust`
|
||||
9. `Mass`
|
||||
10. `TWR`
|
||||
11. `Throttle Range`
|
||||
12. `TVC`
|
||||
13. `Size`
|
||||
14. `Price KD`
|
||||
15. `entry Cost`
|
||||
16. `Ignitions`
|
||||
17. `Classification`
|
||||
18. `Note`
|
||||
19. `Name`
|
||||
20. `Config Name`
|
||||
21. `TechRequired`
|
||||
22. `Config 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` 条数据。
|
||||
- 字段包括:
|
||||
- `Tank`
|
||||
- `Fuel Type`
|
||||
- `Dry Mass`
|
||||
- `Fuel Mass`
|
||||
- `Wet Mass`
|
||||
- `Tank Volume(L)`
|
||||
- `Mass Ratio`
|
||||
- `KL per ton`
|
||||
- `Vehicle`
|
||||
- `Source`
|
||||
- `Note`
|
||||
|
||||
#### 观察
|
||||
|
||||
- `Wet Mass`、`Mass Ratio`、`KL per ton` 中很多是公式列。
|
||||
- `Fuel Type` 当前主要是 `Kerolox` / `Hydrolox` / `Methalox`。
|
||||
- 这个表适合作为“燃料箱/级段参数资料表”。
|
||||
|
||||
---
|
||||
|
||||
### 4.5 `KSP Vehicle Cost`
|
||||
|
||||
- 规模:约 `10` 条数据。
|
||||
- 字段比较简单:
|
||||
- `Vehicle`
|
||||
- `Launch Price`
|
||||
- `Source`
|
||||
|
||||
#### 观察
|
||||
|
||||
- 有部分 `Launch Price` 为空,需确认是“未知”还是“待补充”。
|
||||
|
||||
## 5. 当前我整理出的数据建模方向(草案)
|
||||
|
||||
> 这里只是第一轮草案,等你确认字段含义后再正式定表结构。
|
||||
|
||||
### 核心主表建议
|
||||
|
||||
1. `engines` / `engine_base`
|
||||
- 引擎基础信息
|
||||
- 如:名称、来源/分类、尺寸、备注、内部标识等
|
||||
|
||||
2. `engine_variants`
|
||||
- 引擎配置项
|
||||
- 如:燃料类型、循环方式、适用环境、SL/Vac ISP、推力范围、质量、TVC、点火次数、价格、科技节点等
|
||||
|
||||
### 配套表建议
|
||||
|
||||
3. `communication_parts`
|
||||
4. `tank_specs`
|
||||
5. `vehicle_costs`
|
||||
6. `fuel_conversion_rules`(不一定入库,也可能直接写成程序常量)
|
||||
|
||||
## 6. 第一轮需要你确认的问题
|
||||
|
||||
下面这些问题会直接影响数据库设计和前端表单设计:
|
||||
|
||||
### 关于 `Engine Database`
|
||||
|
||||
1. `Work Env` 的枚举含义是什么?
|
||||
- 目前看到像 `Lower`、`Upper` 等,是否表示适用飞行环境/任务场景?
|
||||
|
||||
2. `Classification` 是什么语义?
|
||||
- 是模组来源(如 `Squad`、`NFS`、`Ven`、`Real/...`)
|
||||
- 还是引擎分类标签?
|
||||
|
||||
3. `Name` 是不是游戏/模组里的**内部 part name**?
|
||||
- 如果是,为什么有相当多记录为空?
|
||||
|
||||
4. `Config Name` 是不是某个引擎的配置名/variant 名?
|
||||
- 如果是,它显然不是全局唯一键;后续唯一标识你倾向于用什么?
|
||||
- `Engine + Fuel Type + Config Name`?还是另有内部 ID?
|
||||
|
||||
5. `Price KD` 是不是 Kerbal Dollars 的部件价格?
|
||||
6. `entry Cost` 是不是科技树解锁成本 / 研发成本?
|
||||
7. `TVC` 的单位是否是“度”(gimbal range)?
|
||||
8. `Size` 的单位是否是米(或零件直径规格)?
|
||||
9. `Ignitions` 为空时表示:
|
||||
- 无限次?
|
||||
- 未知?
|
||||
- 不适用?
|
||||
10. `Note` 与 `Config Note` 的区别是什么?
|
||||
- 一个是引擎总体备注,一个是某个配置备注?
|
||||
|
||||
### 关于 `Fuel Chart`
|
||||
|
||||
11. 这个换算功能你希望最终怎么实现?
|
||||
- 单独页面小工具
|
||||
- 引擎/燃料箱录入时的辅助计算器
|
||||
- 还是后端提供一个简单 API 即可
|
||||
|
||||
12. 第二行这些值,本质上是不是“燃料密度 / 升到吨的换算系数”?
|
||||
- 如果是,我后续会直接把它们做成程序配置或数据库字典表。
|
||||
|
||||
### 关于 `KSP Vehicle Cost`
|
||||
|
||||
13. `Launch Price` 为空的行,是不是表示“暂无数据,允许为空”?
|
||||
|
||||
## 7. 下一步建议
|
||||
|
||||
等你回答上面的问题后,我建议立即进入下面阶段:
|
||||
|
||||
1. 先把 `Engine Database` 字段定义彻底确认
|
||||
2. 画出数据库草图(PostgreSQL)
|
||||
3. 确定 Flask 后端模块划分
|
||||
4. 确定前端页面:列表 / 搜索 / 详情 / 编辑 / 导入
|
||||
5. 再开始初始化项目结构、Docker、数据库迁移、Excel 导入脚本
|
||||
|
||||
Reference in New Issue
Block a user