duanshuwen 2a3615901c chore: delete unused binaries and project documentation
Remove leftover Sogou Input Picface Cloud binary files and their backup copies, as well as all project documentation files including AGENTS.md and the entire docs/ directory.
2026-07-04 10:50:45 +08:00
2026-06-30 13:56:45 +08:00
2026-06-30 13:56:45 +08:00
2026-06-30 13:56:45 +08:00
2026-06-30 13:56:45 +08:00
2026-06-30 13:56:45 +08:00
2026-06-30 13:56:45 +08:00

WonderQ-Admin

独立的 WonderQ 后端 API 服务,基于 Python、FastAPI、SQLAlchemy 2、Alembic、PostgreSQL、JWT 和 Pydantic。

本地手动启动

以下命令默认在项目根目录执行:D:\www\znkj\WonderQ-Admin

1. 准备环境变量

首次启动先复制环境变量模板:

Copy-Item .env.example .env

然后编辑 .env,至少确认以下配置:

  • DATABASE_URL:本地 Docker PostgreSQL 默认使用 localhost:5433
  • JWT_SECRET:生产环境必须替换为高强度随机值。
  • OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRETOSS_ENDPOINTOSS_BUCKET_NAME:填写实际 OSS 配置;真实密钥只放在 .env 或部署平台密钥中,不提交到 Git。

2. 创建并启用 Python 虚拟环境

首次启动或 .venv 不存在时执行:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

如果 PowerShell 阻止执行激活脚本,可临时允许当前进程执行脚本后再激活:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1

后续日常启动只需要重新激活虚拟环境:

.\.venv\Scripts\Activate.ps1

3. 启动依赖服务

启动本地 PostgreSQL 和 Redis

docker compose up -d postgres redis

确认容器状态:

docker compose ps

4. 初始化或升级数据库

首次启动、迁移变更后执行:

alembic upgrade head

空库首次导入初始化内容时执行:

python -m app.seed

注意:python -m app.seed 会重置站点内容、产品、目的地、活动和媒体数据;已有业务数据时不要重复执行。只需要确保默认后台账号存在时,用:

python -m app.seed --no-reset

5. 启动 API 服务

开发模式启动:

uvicorn app.main:app --host 0.0.0.0 --port 4000 --reload

如果需要手动重启 4001 端口服务,先释放端口,再重新运行:

$port = 4001
$listenerPids = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue |
  Select-Object -ExpandProperty OwningProcess -Unique
foreach ($listenerPid in $listenerPids) {
  Get-CimInstance Win32_Process |
    Where-Object { $_.ParentProcessId -eq $listenerPid } |
    ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }
  Stop-Process -Id $listenerPid -Force -ErrorAction SilentlyContinue
}
uvicorn app.main:app --host 0.0.0.0 --port 4001 --reload

启动后访问:

日常启动速查

数据库已经初始化后,通常只需要:

.\.venv\Scripts\Activate.ps1
docker compose up -d postgres redis
uvicorn app.main:app --host 0.0.0.0 --port 4000 --reload

Docker 部署

完整本地部署:

docker compose up --build

服务包含:

  • apiFastAPI 服务,默认监听 4000
  • postgresPostgreSQL 16宿主机端口 5433
  • redisRedis 7宿主机端口 6380

已有生产数据库迁移到 Python 版时,先备份数据库,再执行:

alembic stamp head

空库或全新环境使用:

alembic upgrade head
python -m app.seed

目录说明

  • app/FastAPI 应用、路由、鉴权、数据库模型、schema、seed 逻辑。
  • app/routers/public.pyH5 Public API。
  • app/routers/admin.py:后台 Admin API。
  • app/models.pySQLAlchemy ORM兼容原 Prisma 表结构。
  • alembic/:数据库迁移 baseline。
  • data/generated-products.json:从 H5 拆出的产品初始数据。
  • docker-compose.ymlAPI、PostgreSQL 和 Redis 编排。
  • tests/:基础单元和接口冒烟测试。

常用命令

命令 说明
uvicorn app.main:app --reload --port 4000 启动开发服务
alembic upgrade head 创建或升级数据库结构
alembic stamp head 标记已有数据库已处于当前 baseline
python -m app.seed 重置并导入初始化内容
python -m app.seed --no-reset 只确保默认后台账号存在
pytest 运行测试
docker compose up --build 构建并启动完整服务

API 兼容范围

Python 版保留原有核心路径:

  • GET /health
  • GET /api/public/site-config
  • GET /api/public/products
  • GET /api/public/products/{id}
  • GET /api/public/destinations
  • POST /api/public/leads
  • POST /api/admin/auth/login
  • GET /api/admin/me
  • GET /api/admin/dashboard
  • GET /api/admin/products
  • POST /api/admin/products
  • PATCH /api/admin/products/{id}
  • GET /api/admin/destinations
  • GET /api/admin/site-config
  • PATCH /api/admin/site-config/{module}/{id}
  • GET /api/admin/leads
  • PATCH /api/admin/leads/{id}/status
  • GET /api/admin/media-assets
  • POST /api/admin/media-assets/upload
  • POST /api/admin/reset-guizhou-content
  • POST /api/admin/publish

注意事项

  • 生产环境必须替换 JWT_SECRET,禁止使用示例值。
  • 真实环境变量只放在 .env 或部署平台密钥中,不提交到 Git。
  • python -m app.seed 会重置站点内容、产品、目的地、活动和媒体数据;不要直接对生产库执行。
  • 保留现有 PostgreSQL 数据时使用 alembic stamp head,不要在已有生产表上直接运行初始建表迁移。
Description
No description provided
Readme 383 KiB
Languages
Python 99.8%
Dockerfile 0.2%