PushToZhaoShang/README.md
2025-12-07 23:55:28 +08:00

3.6 KiB
Raw Permalink Blame History

自动化营业额数据推送与展示系统

快速部署Docker

  • 1准备环境变量不要提交真实口令到仓库
    • 复制 .env.example.env 并填写 ADMIN_TOKEN
  • 2启动服务
docker-compose up -d
  • 3访问入口
    • 浏览器打开 http://<服务器IP或域名>:57778

腾讯云环境优化

  • 使用腾讯云 PyPI 镜像Dockerfile 已设置 pip -i https://mirrors.cloud.tencent.com/pypi/simple
  • 设置时区为 Asia/ShanghaiDockerfile 安装并配置 tzdata
  • 数据持久化:docker-compose.yml 将宿主机 ./data 映射为容器 /app/data,数据库路径 sqlite:///data/data.db

功能概览

  • 每日 23:00服务器本地时区自动生成并定版当日营业额
  • 修正接口:支持按日期修正金额,前端即时一致更新;修正过程不直接在前端展示
  • 审计与日志:所有生成/修正写入审计表,兼容追加到 app.log
  • 看板:今日/昨日/前日、本周(周一~昨日)、上周(周一~周日)、本月
  • 折线图:最近 7 天、本月、上月、最近 90 天;支持缩放、导出图片/CSV

项目结构

.
├── backend/           # Flask API + APScheduler
├── frontend/          # 单页 HTMLTailwind+Chart.js
├── data/              # SQLite 数据卷(自动创建/挂载)
├── Dockerfile         # 生产镜像(已适配腾讯云)
├── docker-compose.yml # 一键部署
├── .env.example       # 环境变量示例(不要提交真实 .env
└── README.md

环境变量

  • DATABASE_URL:数据库连接字符串(默认 sqlite:///data/data.db
  • ADMIN_TOKEN:管理修正口令;修正时在请求头加入 X-Admin-Token
  • TZ:容器时区(默认 Asia/Shanghai
  • PORT:应用监听端口(默认 5000,示例已改为 57778

修正接口示例

curl -X PUT http://localhost:5000/api/admin/turnover \
  -H "Content-Type: application/json" \
  -H "X-Admin-Token: $ADMIN_TOKEN" \
  -d '{"date":"2025-12-06","amount":3123.45,"reason":"调整入账"}'

数据预置与迁移

  • 首次启动自动导入(开启 AUTO_IMPORT_ON_START=1 且 DB为空
    • 如果存在 /app/data/import.csv(宿主机 ./data/import.csv),自动导入该文件
  • CSV格式
    date,amount
    2025-12-01,12345.67
    2025-12-02,11890.12
    
  • 手动导入接口:
    curl -X POST http://<服务器>:57778/api/admin/import \
      -H "X-Admin-Token: $ADMIN_TOKEN" -H "Content-Type: text/csv" \
      --data-binary @revenue.csv
    

本地运行(默认数据库路径)

  • 默认数据库:sqlite:///data/data.db(项目根目录下的 data/data.db
  • 启动:
    $env:PORT=57778; $env:ADMIN_TOKEN="<你的口令>"; python backend/app.py
    
  • 自定义路径Windows 绝对路径示例):
    $env:DATABASE_URL="sqlite:////e:/2025Code/python/YixuanYingye/data/data.db"; python backend/app.py
    

环境优化(最优解)

  • 基础镜像切换为 python:3.11-alpine,构建更快、体积更小
  • 依赖安装走腾讯云 PyPI 镜像:PIP_INDEX_URL=https://mirrors.cloud.tencent.com/pypi/simple
  • 自动数据导入:环境变量 AUTO_IMPORT_ON_START=1,启动时按顺序导入
    • /app/data/import.csv(宿主机 ./data/import.csv

生产建议

  • 建议使用反向代理Nginx暴露 5000 端口,并开启 gzip
  • 建议通过 docker-composerestart: unless-stopped 保持服务稳定
  • 如需外部数据库,设置 DATABASE_URL(例如 PostgreSQL并移除数据卷映射