0717c09721
改动:新增厂商推送配置、设备 push_vendor/push_token 字段、device push-test 接口、心跳超时厂商直推发送逻辑和对应测试。 验证:python -m pytest tests/test_device_push.py tests/test_auth.py tests/test_health.py 通过。 --------- Co-authored-by: guke <guke@wonderable.ai> Co-authored-by: 左辰勇 <exinglang@gmail.com> Co-authored-by: lowmaster-chen <1119780489@qq.com> Reviewed-on: #118 Co-authored-by: Ghost <> Co-committed-by: Ghost <>
30 lines
1.5 KiB
Bash
Executable File
30 lines
1.5 KiB
Bash
Executable File
#!/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、本脚本后请手动重启。
|
||
# --timeout-keep-alive 120:真机经 adb reverse 联调时,uvicorn 默认 5s 就关闭空闲 keep-alive
|
||
# 连接,但 adb reverse 管道不把关闭事件透传回设备侧 → okhttp 复用"已死"的连接、下一次请求
|
||
# 报 "unexpected end of stream"(尤其登录/消息中心等间隔较久的调用)。调大到 120s 规避。
|
||
exec "$PY" -m uvicorn app.main:app --host 0.0.0.0 --port 8770 --reload --reload-dir app --timeout-keep-alive 120
|