Build lightweight AI agent admin

This commit is contained in:
Codex
2026-06-08 18:14:59 +08:00
commit e164840f43
2530 changed files with 435693 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
# ============================================
# ZQ Platform 后端启动入口
# 自动检测数据库状态 → 生成迁移 → 执行迁移 → 启动应用
# ============================================
set -e
echo "=========================================="
echo " ZQ Platform Backend"
echo "=========================================="
echo "[1/2] 数据库初始化..."
# 检查 versions 目录是否有迁移文件
MIGRATION_COUNT=$(ls alembic/versions/*.py 2>/dev/null | wc -l)
if [ "$MIGRATION_COUNT" -eq "0" ]; then
echo " 未发现迁移文件,自动生成..."
python -m alembic revision --autogenerate -m "initial" 2>&1 | tail -3
fi
# 执行迁移
python -m alembic upgrade head 2>&1 || {
echo " [WARN] 迁移失败,5秒后重试..."
sleep 5
python -m alembic upgrade head 2>&1 || echo " [WARN] 迁移再次失败,跳过"
}
# 检查是否需要导入初始数据(仅首次部署时)
USER_COUNT=$(python -c "
import asyncio
from app.database import AsyncSessionLocal
from sqlalchemy import text
async def check():
try:
async with AsyncSessionLocal() as db:
result = await db.execute(text(\"SELECT COUNT(*) FROM core_user\"))
print(result.scalar())
except:
print(0)
asyncio.run(check())
" 2>/dev/null || echo "0")
if [ "$USER_COUNT" -eq "0" ] 2>/dev/null; then
if [ -f "db_init.json" ]; then
echo " 首次部署,导入初始化数据..."
python scripts/loaddata.py db_init.json 2>&1
else
echo " [WARN] 未找到 db_init.json,跳过数据导入"
fi
else
echo " 数据库已有数据 ($USER_COUNT 个用户),跳过导入"
fi
echo " 数据库就绪"
echo "[2/2] 启动 FastAPI..."
exec python -m uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4