#!/usr/bin/env bash # 本地开发启动脚本:监听 0.0.0.0(真机局域网 / adb reverse 都能连),改代码自动重启。 # # 前置(首次):先激活装好依赖的环境,例如: # conda activate price && pip install -e . # 真机联调流程见前台 local.properties 的 debug.api.host。 set -e cd "$(dirname "$0")" # 优先用项目 venv 的解释器,避免误用全局/conda 里不兼容的 FastAPI/Pydantic # (FastAPI<0.115 撞 Pydantic 2.12 会在导入期崩 'FieldInfo' has no attribute 'in_')。 PY=python [ -x .venv/bin/python ] && PY=.venv/bin/python [ -x .venv/Scripts/python.exe ] && PY=.venv/Scripts/python.exe if [ ! -f .env ]; then echo "❌ 缺 .env:先 cp .env.example .env 并填值(至少 JWT_SECRET_KEY;测美团再填 MT_CPS_*)" exit 1 fi mkdir -p data # sqlite 文件所在目录 "$PY" -m alembic upgrade head # 确保表已建(幂等,已是最新则 no-op) # --reload 只盯源码目录 app/:别去监视 logs/(日志写入触发"检测→再写日志"回环)和 # data/(sqlite 频繁写)。改 alembic/、.env、本脚本后请手动重启。 exec "$PY" -m uvicorn app.main:app --host 0.0.0.0 --port 8770 --reload --reload-dir app