V1 雪藏「拼接导出」第 5 阶段后,完成态(COMPLETED)只在 export.py 拼接成片时 才置,导致视频全部出片的项目永远卡在 videoing,列表末格一直闪烁。 - 后端:新增 settle_video_completion(幂等)+ VIDEO_IS_FINAL_STAGE 开关。 全部片段出片→项目 completed、video 阶段标成功;某段被重跑→退回 videoing。 挂 retrieve(自愈历史卡住项目)/poll-video-segment/submit-video-segment/ adopt-video-version 四入口;收口直接查库,不吃 prefetch 旧缓存致误判。 V2 恢复导出把 VIDEO_IS_FINAL_STAGE 置 False,完成判定交回 export.py。 - 前端:项目列表/网格进度从 5 步同步成 4 步(PROJ_STAGE_TOTAL=4), export 阶段并入第 4;已完成项目末格走 done(绿)不再用闪烁的 cur。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
AirShelf Backend
All backend code lives under AirShelf/core/backend by project decision.
Local bootstrap
cd /Users/maidong/Desktop/zyc/qiyuan_gitea/AirShelf/core/backend
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
Start workers in separate terminals:
cd /Users/maidong/Desktop/zyc/qiyuan_gitea/AirShelf/core/backend
source .venv/bin/activate
celery -A airshelf worker -l info -P threads -c 4 # 线程池 4 并发(出图/视频可并行;勿用 -P solo 串行)
ffmpeg must be available on PATH for Stage5 export jobs.
Runtime layout
- Django project:
airshelf - Domain apps:
apps/* - Settings module:
airshelf.settings.development - Celery app:
airshelf.celery
Secrets must be supplied by environment variables or .env; never commit values from account.md.
Useful commands
python manage.py check
python manage.py makemigrations --check --dry-run
python manage.py migrate
python manage.py bootstrap_volcano_models
python manage.py test apps.accounts apps.projects apps.billing