# DataConver **Repository Path**: jch9527/data-conver ## Basic Information - **Project Name**: DataConver - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-15 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataConver (Flet + FastAPI) 基于 Python Flet 的桌面应用,前后端分离: - 前端:`frontend/`(Flet 界面) - 后端:`backend/`(FastAPI 接口 + Excel 处理) ## 功能 - 页面1 - Tab1 合格证数据检查:导入 Excel -> 校验必要字段(车架号、制造日期)-> 日期列统一转 `yyyy-MM-dd` -> 导出新 Excel。 - Tab2 VBC 数据检查:导入 Excel -> 校验必要字段(车架号、电池编码)-> 日期列统一转 `yyyy-MM-dd` -> 导出新 Excel。 - 页面2 - 导入 CQC 与 VBC 两个 Excel 后激活“对比”按钮。 - 以车架号为基准生成对比 Excel(两个 sheet): - `CQC包含VBC不包含` - `VBC包含CQC不包含` ## 本次增强 1. 真实进度 - 后端按处理阶段更新进度(读取、校验、向量化日期或对比、写入),任务接口 + 轮询。 - 前端显示任务百分比与当前阶段说明。 2. 导出自动弹窗 - 点击“检查/对比”后先弹出系统保存对话框,手动选择导出位置与文件名。 3. 严格字段映射(无模糊匹配) - 配置文件:`backend/field_aliases.py` - 仅精确匹配列名,不做模糊包含匹配。 - 你可直接在该文件中维护字段候选名与日期列名。 ## 字段映射配置 编辑:`backend/field_aliases.py` - `QUALIFIED_REQUIRED_FIELDS` - `VBC_REQUIRED_FIELDS` - `COMPARE_REQUIRED_FIELDS` - `QUALIFIED_DATE_COLUMNS` - `VBC_DATE_COLUMNS` 提示:如需支持 `VIN`,请将它加到对应字段候选列表中,例如: ```python "车架号": ["车架号", "VIN"] ``` ## 大数据量说明 单表仍会整表载入内存(pandas),百万行请预留足够内存。处理侧已改为 **向量化** 日期与车架号逻辑;读取优先使用 **python-calamine**(Rust)、写入优先 **xlsxwriter**(`constant_memory`),未安装依赖时自动回退 **openpyxl**。 ## 安装 ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## 启动 **推荐(一键启动前后端):** ```bash python run_app.py ``` 会在后台线程启动 FastAPI(`127.0.0.1:8000`),再打开 Flet 窗口。 **仅调试时可分开启动:** ```bash python run_backend.py # 仅 API python run_frontend.py # 仅界面(需后端已运行) ``` ### 目录说明 - `generated/`:前端「另存为」对话框的默认目录(`frontend/main.py` 中 `GENERATED_DIR`),便于把导出 Excel 存到固定位置;**实际输出路径以用户在对话框中选择为准**。 - `uploads/`:当前工程代码**未使用**,可删除或留作将来 HTTP 上传等用途。 ### 打包为 exe - 用 **一个入口**(例如 `run_app.py`)打 PyInstaller 更合适:单进程内线程跑 uvicorn + 主线程跑 Flet,用户只需运行一个 exe。 - 若仍用两个 exe / 两个脚本,打包和分发都更麻烦,且容易漏启后端。 - 打包时需把 `backend`、`frontend` 等资源打进包,并处理 `sys.frozen` 下的工作目录与数据路径(必要时用 `sys.executable` 所在目录作为应用根目录)。Flet 桌面打包请参考官方文档中的 PyInstaller 说明。 ## 接口 - `POST /api/jobs/check/qualified` 提交合格证检查任务 - `POST /api/jobs/check/vbc` 提交VBC检查任务 - `POST /api/jobs/compare` 提交对比任务 - `GET /api/jobs/{job_id}` 查询任务进度与结果 请求/响应模型见:`backend/schemas.py`。