From d99a92b6dcf408d7a9381b8a8314393c747e7024 Mon Sep 17 00:00:00 2001 From: houhuan Date: Sun, 7 Dec 2025 21:56:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 ++++++++++++++++++++++++++ docker-compose.yml | 1 + seed/revenue.csv | 6 ++++++ seed/revenue.sample.csv | 6 ++++++ 4 files changed, 39 insertions(+) create mode 100644 seed/revenue.csv create mode 100644 seed/revenue.sample.csv diff --git a/README.md b/README.md index 3b90548..274c86a 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ docker-compose up -d . ├── backend/ # Flask API + APScheduler ├── frontend/ # 单页 HTML(Tailwind+Chart.js) +├── seed/ # 预置数据CSV(revenue.sample.csv),构建时复制到 /app/init/ ├── data/ # SQLite 数据卷(自动创建/挂载) ├── Dockerfile # 生产镜像(已适配腾讯云) ├── docker-compose.yml # 一键部署 @@ -48,6 +49,31 @@ curl -X PUT http://localhost:5000/api/admin/turnover \ -d '{"date":"2025-12-06","amount":3123.45,"reason":"调整入账"}' ``` +## 数据预置与迁移 +- 首次启动自动导入(DB为空时): + 1. 如果存在 `/app/data/import.csv`,优先导入该文件 + 2. 否则导入镜像内 `/app/init/revenue.csv`(可将 `seed/revenue.sample.csv` 重命名为 `revenue.csv`) +- CSV格式: + ``` + date,amount + 2025-12-01,12345.67 + 2025-12-02,11890.12 + ``` +- 手动导入接口: + ```bash + curl -X POST http://<服务器>:57778/api/admin/import \ + -H "X-Admin-Token: $ADMIN_TOKEN" -H "Content-Type: text/csv" \ + --data-binary @revenue.csv + ``` + +## 环境优化(最优解) +- 基础镜像切换为 `python:3.11-alpine`,构建更快、体积更小 +- 依赖安装走腾讯云 PyPI 镜像:`PIP_INDEX_URL=https://mirrors.cloud.tencent.com/pypi/simple` +- 自动数据导入:环境变量 `AUTO_IMPORT_ON_START=1`,启动时按顺序导入 + 1. `/app/data/import.csv`(宿主机 `./data/import.csv`) + 2. `/app/init/revenue.csv`(仓库 `seed/revenue.csv`) + 3. `/app/init/revenue.sample.csv` + ## 生产建议 - 建议使用反向代理(Nginx)暴露 `5000` 端口,并开启 gzip - 建议通过 `docker-compose` 的 `restart: unless-stopped` 保持服务稳定 diff --git a/docker-compose.yml b/docker-compose.yml index 11b8a6a..e2769cb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,7 @@ services: - TZ=Asia/Shanghai - ADMIN_TOKEN=${ADMIN_TOKEN} - PORT=57778 + - AUTO_IMPORT_ON_START=1 volumes: - ./data:/app/data:Z restart: unless-stopped diff --git a/seed/revenue.csv b/seed/revenue.csv new file mode 100644 index 0000000..7e305b7 --- /dev/null +++ b/seed/revenue.csv @@ -0,0 +1,6 @@ +date,amount +2025-12-01,12345.67 +2025-12-02,11890.12 +2025-12-03,13200.00 +2025-12-04,11110.50 +2025-12-05,14005.88 diff --git a/seed/revenue.sample.csv b/seed/revenue.sample.csv new file mode 100644 index 0000000..7e305b7 --- /dev/null +++ b/seed/revenue.sample.csv @@ -0,0 +1,6 @@ +date,amount +2025-12-01,12345.67 +2025-12-02,11890.12 +2025-12-03,13200.00 +2025-12-04,11110.50 +2025-12-05,14005.88