Files
ylt_diy/AGENTS.md
user9994793890 f84aa8a4a9 refactor: 重构项目结构,按功能模块拆分文件
- 后端:将 app.py 拆分为 lib/api/ 目录下的多个蓝图模块
  - config_api.py: 配置管理 API
  - entity_api.py: 实体管理 API
  - field_api.py: 字段列表 API
  - report_api.py: 日报生成和历史记录 API
  - init_api.py: 数据库初始化 API
  - download_api.py: 文件下载 API
- 前端:将 index.html 拆分为多个文件
  - static/css/style.css: CSS 样式
  - static/js/common.js: 通用工具函数
  - static/js/config.js: 配置管理
  - static/js/entity.js: 实体管理
  - static/js/report.js: 日报生成
  - static/js/history.js: 历史记录
- 更新 app.py 使用蓝图注册 API
- 创建 AGENTS.md 项目文档

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-13 15:43:03 +08:00

5.2 KiB
Raw Permalink Blame History

订单日报系统 - 项目开发指南

项目概述

订单日报系统是一个基于 Flask 的 Web 应用,用于自动生成充电订单的日报报表。系统支持按企业/用户/场站拆分数据,自定义字段和求和功能,并支持合并特来电平台数据。

技术栈

  • 后端: Python 3.12 + Flask 3.0
  • 数据库: Apache Doris (MySQL 兼容)
  • 前端: 原生 HTML/CSS/JavaScript
  • 依赖: PyMySQL, APScheduler, openpyxl, Flask-CORS

项目结构

.
├── app.py                      # Flask 主应用(页面路由 + 定时任务)
├── lib/
│   ├── __init__.py
│   ├── db.py                   # 数据库连接配置
│   ├── field_mapping.py        # 字段映射定义
│   ├── report_generator.py     # 日报生成核心逻辑
│   ── api/                    # API 蓝图模块
│       ├── __init__.py         # 蓝图注册
│       ├── config_api.py       # 配置管理 API
│       ├── entity_api.py       # 实体管理 API企业/用户/场站)
│       ├── field_api.py        # 字段列表 API
│       ├── report_api.py       # 日报生成和历史记录 API
│       ├── init_api.py         # 数据库初始化 API
│       └── download_api.py     # 文件下载 API
├── static/
│   ├── css/
│   │   └── style.css           # 全局样式
│   └── js/
│       ├── common.js           # 通用工具函数、标签切换
│       ├── config.js           # 配置管理(创建/编辑/复制/删除)
│       ├── entity.js           # 实体管理(分页/搜索)
│       ├── report.js           # 日报生成
│       └── history.js          # 历史记录(查看/下载/删除)
── templates/
│   └── index.html              # 主页面 HTML 结构
└── public/
    └── reports/                # 生成的报表文件目录

核心功能模块

1. 配置管理 (lib/api/config_api.py)

  • 创建/编辑/删除/复制配置
  • 启用/禁用配置
  • 配置排序(上移/下移)
  • 配置字段:
    • config_name: 配置名称
    • split_type: 拆分方式company_id/user_id/station_id
    • split_value: 拆分值(支持多选,逗号分隔)
    • selected_fields: 选择的字段列表JSON
    • sum_fields: 求和字段列表JSON
    • time_periods: 分时段电量配置JSON
    • merge_telecom: 是否合并特来电数据
    • telecom_vehicle_no: 特来电车量自编号
    • field_custom_names: 字段自定义报表名头JSON

2. 实体管理 (lib/api/entity_api.py)

  • 企业列表t_companycompany_state=0 为启用)
  • 用户列表t_user支持手机号搜索
  • 场站列表t_station
  • 支持分页和搜索

3. 日报生成 (lib/report_generator.py)

  • 按配置生成日报
  • 支持分时段电量统计(尖/峰/平/谷)
  • 支持合并特来电平台数据t_hlht_tld 表)
  • 补单检测finish_type=2
  • 报表命名:{config_name}_{month}月{day}日消费记录.xlsx

4. 历史记录 (lib/api/report_api.py)

  • 查看生成历史
  • 下载报表文件
  • 批量删除历史记录
  • 按日期范围查询

数据库表

t_daily_report_config配置表

  • 存储日报生成配置
  • 支持 JSON 字段存储复杂配置

t_daily_report_history历史表

  • 存储每次生成的历史记录
  • 包含报表日期、时间范围、订单数、总金额等

业务表

  • t_equipment_charge_order: 充电订单表
  • t_equipment_charge_order_detail: 分时段电量表
  • t_company: 企业表
  • t_user: 用户表
  • t_station: 场站表
  • t_equipment: 设备表
  • t_connector: 连接器表
  • t_hlht_tld: 特来电平台数据表

开发规范

后端开发

  1. 新增 API 路由时,在 lib/api/ 目录下创建对应的蓝图模块
  2. lib/api/__init__.py 中注册新蓝图
  3. 数据库操作使用 lib/db.py 提供的工具函数
  4. 字段映射定义在 lib/field_mapping.py 中维护

前端开发

  1. CSS 样式统一在 static/css/style.css 中维护
  2. JavaScript 按功能模块拆分到 static/js/ 目录
  3. HTML 结构保持在 templates/index.html
  4. 使用语义化类名,避免硬编码颜色值

代码风格

  • Python 遵循 PEP 8 规范
  • JavaScript 使用 ES6+ 语法
  • 注释使用中文,关键逻辑必须添加注释

定时任务

系统使用 APScheduler 实现定时任务:

  • 每天 08:01 自动执行日报生成
  • 遍历所有启用的配置,逐一生成日报

部署说明

环境变量

  • DEPLOY_RUN_PORT: 服务监听端口(默认 5000
  • DB_HOST: 数据库主机(默认 haoslm2.xicp.net
  • DB_PORT: 数据库端口(默认 10216

启动命令

# 开发环境
coze dev

# 生产环境
coze build && coze start

常见问题

1. 数据库连接失败

  • 检查数据库配置lib/db.py
  • 确认数据库服务正常运行

2. 报表生成失败

  • 检查配置是否正确
  • 查看日志文件(/app/work/logs/bypass/
  • 确认订单数据存在

3. 前端页面加载异常

  • 检查静态文件路径是否正确
  • 清除浏览器缓存后重试