- /api/assets/ get_queryset 支持 tab(对齐前端 assetTab 分桶)/category/asset_type/source/ product(metadata.product_id 或 origin_task→project→product)/q 搜索/m_<key> metadata 过滤, 默认 -created_at 排序(无 ORDER BY 分页会重/漏)。 - 新增 /api/assets/summary/(各 tab 计数,供 tab 徽标)+ /api/assets/facets/ (某 tab 下真实存在的 来源/类型/指定 metadata 键取值,供下拉「只列真有的」)。 - ProductSerializer 内嵌 cover_preview_url + images[].preview_url,products/项目向导/pipeline 缩略图不再依赖全局 assets 全量数组反查;product 视图 prefetch 图片/封面资产文件防 N+1。 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
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