Files
ylt_diy/app.py
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

85 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Flask 主应用
订单日报系统
"""
import os
from datetime import datetime
from flask import Flask, render_template
from flask_cors import CORS
from apscheduler.schedulers.background import BackgroundScheduler
import pytz
from lib.db import execute_query
from lib.report_generator import generate_daily_report
from lib.api import register_blueprints
# 创建 Flask 应用
app = Flask(__name__,
template_folder='templates',
static_folder='public')
CORS(app)
# 确保 public/reports 目录存在
os.makedirs(os.path.join('public', 'reports'), exist_ok=True)
# 注册 API 蓝图
register_blueprints(app)
# ==================== 页面路由 ====================
@app.route('/')
def index():
"""主页"""
return render_template('index.html')
# ==================== 定时任务 ====================
def scheduled_job():
"""定时任务:每天 8:01 自动生成日报"""
print(f'[{datetime.now()}] 开始执行定时任务...')
try:
# 获取所有启用的配置
configs = execute_query(
'SELECT id, config_name FROM t_daily_report_config WHERE is_active = 1'
)
if not configs:
print('没有启用的配置,跳过生成')
return
print(f'找到 {len(configs)} 个启用的配置')
# 为每个配置生成日报
for config in configs:
print(f'正在生成:{config["config_name"]}')
result = generate_daily_report(config['id'])
if result['success']:
print(f' ✓ 成功:{result["total_orders"]} 条订单,金额:{result["total_amount"]}')
else:
print(f' ✗ 失败:{result["message"]}')
print('定时任务执行完成')
except Exception as e:
print(f'定时任务执行失败:{e}')
# 启动定时任务
scheduler = BackgroundScheduler(timezone='Asia/Shanghai')
scheduler.add_job(scheduled_job, 'cron', hour=8, minute=1)
scheduler.start()
print('定时任务已启动:每天 08:01 执行')
# ==================== 启动应用 ====================
if __name__ == '__main__':
# 支持沙箱环境和本地环境
port = int(os.environ.get('DEPLOY_RUN_PORT', os.environ.get('PORT', 5000)))
print(f'启动服务器http://localhost:{port}')
print(f'数据库:{os.environ.get("DB_HOST", "haoslm2.xicp.net")}:{os.environ.get("DB_PORT", "10216")}')
app.run(host='0.0.0.0', port=port, debug=True)