# 111 **Repository Path**: hngcadmin/111 ## Basic Information - **Project Name**: 111 - **Description**: 1 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 最优定价策略工具 这是一个基于 `Python + Flask + HTML` 的单体网页程序,用于读取 Excel 模板、计算 4 套定价模型,并导出结果文件。 ## 架构说明 - 不使用数据库,不依赖 MySQL。 - 上传 Excel 后在服务端内存中完成校验与求解。 - 结果文件输出到本地 `runtime/results//` 目录。 - 预留了 JSON API 和集成适配层,便于后续接入智能系统或其他业务系统。 ## 功能范围 - 上传输入模板并按固定列位读取数据 - 支持同一 Excel 内多个 sheet 分别计算和分别下载结果 - 首页提供导入模板下载,方便用户按规范填写后上传 - 页面录入 `δ / η / Rmax / 异常值筛选参数` - 页面默认参数:`δ=5%`、`η=3%`、`Rmax=1000000 万元`、启用 IQR 异常值筛选、`k=1.5` - 计算 4 套模型: - 模型1:直线 - 模型2:两段折线 - 模型3:三段折线 - 模型4:二次曲线 - 导出: - `pricing_summary.xlsx` - `pricing_detail.xlsx` - `pricing_comparison.xlsx` - `pricing_results.zip` - 多 sheet 上传时,结果包会包含每个 sheet 各自的汇总表、明细表和对比表 - 对整体曲线不可行的数据,会自动剔除冲突行并在明细表“备注”列标明原因,避免单个异常区间导致所有模型求解失败 - API: - `POST /api/v1/calculate` - `GET /api/v1/jobs/` - `GET /api/v1/integration/capabilities` ## 环境要求 - Python 3.13+ ## 启动方式 1. 创建并激活虚拟环境 ```bash python3 -m venv .venv . .venv/bin/activate ``` 2. 安装依赖 ```bash pip install -r requirements.txt ``` 3. 启动服务 ```bash python app.py ``` 4. 浏览器打开 ```text http://127.0.0.1:5002 ``` ## 自测方式 运行: ```bash . .venv/bin/activate python tests/self_test.py ``` 生成测试数据结果: ```bash . .venv/bin/activate python tests/generate_test_results.py ``` 生成后的文件在 `测试结果目录/`: - `00_全部Sheet结果包/全部Sheet结果概览.xlsx` - `00_全部Sheet结果包/全部Sheet结果包.zip` - `01_...` 至 `05_...` 每个 sheet 各有 `工具输出_汇总表.xlsx`、`工具输出_明细表.xlsx`、`人工系数对比表.xlsx` 测试会: - 生成一份模拟输入 Excel - 通过 Flask Test Client 走完整上传与计算流程 - 校验导出的汇总表、明细表和人工系数对比表是否生成 - 校验价格是否满足上下界和收入约束 ## 单位口径 - `x_i`:公里 - `Q_i`:万吨 - `Y_i^min / C_i / P_i`:元/吨 - `Rmax / R* / Z*`:万元 ## 异常值筛选口径 - 仅对 `Y_i^min` 做筛选 - 按全表使用 IQR 箱线法 - 阈值为 `[Q1 - k*IQR, Q3 + k*IQR]` - 被剔除数据不参与模型求解,但保留在输出明细中,价格列留空并加批注 - 若剩余数据仍无法被同一条全局定价曲线满足,会继续做全局曲线可行性筛选,剔除原因写入明细表备注 ## 目录结构 ```text app.py pricing/ templates/ static/ tests/ runtime/ ```