Files
fquiz/api
chengkai3 c6d547a985 feat: 高程导入改为异步非阻塞,避免大文件上传时前端长时间等待
改动范围:
- api/app/services/elevation_service.py
- web/src/app/admin/elevation/page.tsx

改动点:

1. API 端快速返回(elevation_service.py)
   - 修改 `import_dataset_data_files`:不再在请求内同步执行暂存
   - 新增 `_prepare_upload_files_for_staging`:快速读取上传文件并序列化为 base64
   - API 端立即创建任务并返回,文件内容暂存在 `staged_files_json`

2. Worker 端异步暂存(elevation_service.py)
   - 修改 `execute_dataset_data_import_job`:从 `staged_files_json` 读取文件
   - 新增 `_stage_dataset_import_job_uploads_from_serialized`:从序列化数据恢复并暂存
   - Worker 负责完整的"暂存→导入→分析"流程

3. 前端阶段展示(page.tsx)
   - 更新 `importJobStageLabel`:添加 "pending" 和 "staging" 阶段标签
   - 用户可看到"等待执行"和"暂存文件"等阶段

关联影响:
- 数据库 `staged_files_json` 字段存储格式变更(存储序列化的文件内容)
- 任务初始状态改为 "pending",Worker 启动后变为 "staging"

技术方案:
- 采用 base64 序列化文件内容存入数据库
- 保持现有暂存目录和清理逻辑不变
- WebSocket 进度推送机制继续有效

验证:
- Python 语法检查通过
- 修改符合现有代码风格和约定

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-12 12:42:17 +08:00
..
2026-04-24 15:50:52 +08:00

API Service

FastAPI 后端服务,包含用户认证和 RBAC 权限控制。

核心能力

  • JWT Access Token(默认 8 小时)
  • Refresh SessionHttpOnly Cookie,默认 30 天,刷新轮换)
  • RBAC(用户-角色-权限)
  • 用户管理接口(需 user.manage

本地开发

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r api/requirements.txt
python -m uvicorn api.app.main:app --reload --host 0.0.0.0 --port 8000

主要接口

  • GET /health
  • GET /api/v1/ping
  • POST /api/v1/auth/register
  • POST /api/v1/auth/login
  • POST /api/v1/auth/refresh
  • POST /api/v1/auth/logout
  • GET /api/v1/auth/me
  • GET /api/v1/users