refactor(sync): 手动同步与自动同步彻底分开

「历史范围」原本放在设置页,却只对同步页的一个按钮起作用;而同步页最
显眼的主按钮「同步最新数据」写死 2 天,根本不看这个设置。选了「全部
历史」再点主按钮,表现就是应用无视你 —— 这正是反复出现的「只同步下来
两天」。

现在两条链路各管各的:

* 自动同步:只在设置页配置(开关 + 频率),窗口固定 SYNC_DAYS,不再
  读 history_days。措辞也改成「拉取最近几天」,不再暗示会补历史。
* 手动同步:范围就在同步页当场选,紧挨着用它的按钮,并标出每个范围的
  实际代价(自上次同步 / 7 天 / … / 全部历史约 730 天、20-40 分钟)。
  两个按钮合成一个「开始同步」,写死 2 天的那个删掉。

history_days 保留为「上次手动选的范围」,只有同步页读它;默认值改成
-1(自上次同步),对日常使用是正确的起点。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
ericwyuan
2026-09-01 09:20:52 +08:00
parent 4d55fb4776
commit 526ece7d14
13 changed files with 156 additions and 116 deletions

40
deploy/deploy.sh Normal file
View File

@@ -0,0 +1,40 @@
#!/bin/sh
# Deploy the latest local code to NAS.
# Usage: sh deploy/deploy.sh
# Prerequisites: client has been built (`npm run build` in client/)
APP="$(cd "$(dirname "$0")/.." && pwd)"
NAS_HOST="${1:-ericwyuan@192.168.50.64}"
NAS_PORT="${2:-2222}"
NAS_PATH="/volume1/web/garmin-health-lab"
NAS_PASS="iLoveJava5"
set -e
echo "=== Building frontend ==="
cd "$APP/client"
npm run build 2>&1 | tail -3
echo "=== Syncing files to NAS (excluding .venv) ==="
cd "$APP"
tar cz \
--exclude='backend/.venv' \
--exclude='backend/__pycache__' \
--exclude='backend/*.pyc' \
--exclude='node_modules' \
-f /tmp/garmin_deploy.tar.gz \
backend/ deploy/
sshpass -p "$NAS_PASS" scp -P "$NAS_PORT" -o StrictHostKeyChecking=no \
/tmp/garmin_deploy.tar.gz "${NAS_HOST}:/tmp/garmin_deploy.tar.gz"
sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \
"$NAS_HOST" "echo '$NAS_PASS' | sudo -S tar xzf /tmp/garmin_deploy.tar.gz -C $NAS_PATH/ && rm /tmp/garmin_deploy.tar.gz"
rm -f /tmp/garmin_deploy.tar.gz
echo "=== Restarting service ==="
sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \
"$NAS_HOST" "echo '$NAS_PASS' | sudo -S $NAS_PATH/deploy/start.sh 2>&1"
echo "=== Done ==="