把益选营业额推送给招商,精致版
|
|
||
|---|---|---|
| backend | ||
| data | ||
| docs/自动化营业额系统 | ||
| frontend | ||
| instance | ||
| scripts | ||
| .dockerignore | ||
| .env | ||
| .env.example | ||
| app.log | ||
| config.json | ||
| data.db | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| 数据修正使用说明.md | ||
自动化营业额数据推送与展示系统
快速部署(Docker)
- 1:准备环境变量(不要提交真实口令到仓库)
- 复制
.env.example到.env并填写ADMIN_TOKEN
- 复制
- 2:配置映射(确保容器读取宿主机配置与数据)
docker-compose.yml已映射:./data:/app/data、./config.json:/app/config.json:ro
- 3:启动服务
docker-compose up -d --build
- 4:访问入口
- 浏览器打开
http://<服务器IP或域名>:57778
- 浏览器打开
- 5:在线重载截止时间(无需重启)
curl -X POST "http://<服务器>:57778/api/admin/reload_cutoff" -H "X-Admin-Token: $ADMIN_TOKEN"
腾讯云环境优化
- 使用腾讯云 PyPI 镜像:Dockerfile 已设置
pip -i https://mirrors.cloud.tencent.com/pypi/simple - 设置时区为
Asia/Shanghai:Dockerfile 安装并配置tzdata - 数据持久化:
docker-compose.yml将宿主机./data映射为容器/app/data,数据库路径sqlite:///data/data.db
功能概览
- 每日截止时间(本地时区,支持分钟级,如
13:18)自动生成并定版当日营业额 - 修正接口:支持按日期修正金额,前端即时一致更新;修正过程不直接在前端展示
- 审计与日志:所有生成/修正写入审计表,兼容追加到
app.log - 看板:今日/昨日/前日、本周(周一~昨日)、上周(周一~周日)、本月
- 折线图:最近 7 天、本月、上月、最近 90 天;支持缩放、导出图片/CSV
- 飞书推送:卡片 → 帖子 → 文本三段式兼容;支持签名与 IP 白名单
项目结构
.
├── backend/ # Flask API + APScheduler
├── frontend/ # 单页 HTML(Tailwind+Chart.js)
├── data/ # SQLite 数据卷(容器映射 /app/data)
├── instance/ # 历史/本地副本(当前不作为权威数据源)
├── docs/
│ └── 自动化营业额系统/
│ ├── API.md # 全量接口文档
│ ├── DESIGN.md # 设计说明
│ └── PRD.md # 需求说明
├── scripts/
│ ├── deploy.ps1 # Windows 一键部署/重载/试推
│ └── deploy.sh # Linux 一键部署/重载/试推
├── Dockerfile # 生产镜像(已适配腾讯云)
├── docker-compose.yml # 一键部署(映射 data 与 config)
├── .env.example # 环境变量示例(不要提交真实 .env)
├── README.md
└── app.log # 运行日志(含飞书返回体片段)
环境变量
DATABASE_URL:数据库连接字符串(默认sqlite:///data/data.db)ADMIN_TOKEN:管理修正口令;修正时在请求头加入X-Admin-TokenTZ:容器时区(默认Asia/Shanghai)PORT:应用监听端口(默认5000,示例已改为57778)AUTO_IMPORT_ON_START:启动时自动导入data/import.csv(DB 为空时)
修正接口示例
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":"调整入账"}'
在线重载截止时间(无需重启)
curl -X POST "http://localhost:57778/api/admin/reload_cutoff" -H "X-Admin-Token: $ADMIN_TOKEN"
读取运行日志(含推送返回体片段)
curl "http://localhost:57778/api/admin/logs?lines=200" -H "X-Admin-Token: $ADMIN_TOKEN"
数据预置与迁移
- 首次启动自动导入(开启
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
飞书机器人配置
- 使用飞书自定义机器人 Webhook:
https://open.feishu.cn/open-apis/bot/v2/hook/<ID> - 如开启签名校验,在
config.json设置feishu_secret;未开启则留空 - 如启用 IP 白名单,需在机器人配置中加入服务器出口公网 IP;否则会返回
{"code":19022,"msg":"Ip Not Allowed"}
API 文档
- 详见
docs/自动化营业额系统/API.md
归档建议
- 保留以下文件以便复现与审计:
docs/自动化营业额系统/*、Dockerfile、docker-compose.yml、config.json、app.log- 生产数据卷:
data/data.db(或导出的 CSV)
- 如迁移外部数据库,建议取消数据卷映射并设置
DATABASE_URL(PostgreSQL/MySQL)
环境优化(最优解)
- 基础镜像切换为
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-compose的restart: unless-stopped保持服务稳定 - 如需外部数据库,设置
DATABASE_URL(例如 PostgreSQL),并移除数据卷映射