From d41e487f08552c9ea7e6a90ff226a27a05d2ee0e Mon Sep 17 00:00:00 2001 From: zyc <1439655764@qq.com> Date: Fri, 5 Jun 2026 10:21:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(k8s):=20=E6=96=B0=E5=A2=9E=20core=20?= =?UTF-8?q?=E7=9C=9F=E5=BA=94=E7=94=A8(=E5=89=8D=E7=AB=AF+Django=20API+Cel?= =?UTF-8?q?ery=20worker)=E6=9E=84=E5=BB=BA=E4=B8=8E=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - core/frontend: Vite 多阶段镜像 + nginx 同源反代 /api,/admin,/static(零 CORS) - core/backend: Django gunicorn 镜像 + entrypoint(自动 migrate/collectstatic)+ WhiteNoise - k8s/core: api/worker/web Deployment+Service + ingress(airshelf-web.airlabs.art) - workflow: 追加 core 前后端 build/push,从 core/backend/.env 套生产覆盖生成 env Secret 后部署 - .gitignore 放行 core/backend/.env;.env 白名单加入 airshelf-web 域名 - 含前端 WIP 还原改动 Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/deploy.yaml | 96 +- .gitignore | 2 + core/backend/.dockerignore | 10 + core/backend/.env | 24 + core/backend/Dockerfile | 26 + core/backend/airshelf/settings/production.py | 16 + core/backend/docker-entrypoint.sh | 15 + core/backend/requirements.txt | 1 + core/frontend/.dockerignore | 6 + core/frontend/Dockerfile | 27 + core/frontend/nginx.conf | 67 ++ core/frontend/public/assets/pay-alipay.png | Bin 0 -> 64408 bytes core/frontend/public/assets/pay-wechat.png | Bin 0 -> 67110 bytes core/frontend/src/App.tsx | 180 ++-- core/frontend/src/account-page.css | 161 ++++ core/frontend/src/components/app-shell.tsx | 135 ++- core/frontend/src/library-page.css | 13 + core/frontend/src/main.tsx | 7 + core/frontend/src/pipeline-page.css | 398 ++++++++ core/frontend/src/product-detail-page.css | 911 +++++++++++++++++++ core/frontend/src/products-page.css | 33 + core/frontend/src/projects-page.css | 44 + core/frontend/src/routes/account.tsx | 223 ++++- core/frontend/src/routes/auth-screen.tsx | 177 ++-- core/frontend/src/routes/dashboard.tsx | 11 +- core/frontend/src/routes/library.tsx | 100 +- core/frontend/src/routes/pipeline.tsx | 600 +++++++++++- core/frontend/src/routes/products.tsx | 395 +++++++- core/frontend/src/routes/projects.tsx | 167 +++- core/frontend/src/routes/team.tsx | 214 ++++- core/frontend/src/styles.css | 180 +--- core/frontend/src/team-page.css | 116 +++ core/qa/visual-parity/compare-page.mjs | 13 +- k8s/core/api-deployment.yaml | 70 ++ k8s/core/ingress.yaml | 24 + k8s/core/web-deployment.yaml | 59 ++ k8s/core/worker-deployment.yaml | 43 + 37 files changed, 4108 insertions(+), 456 deletions(-) create mode 100644 core/backend/.dockerignore create mode 100644 core/backend/.env create mode 100644 core/backend/Dockerfile create mode 100644 core/backend/docker-entrypoint.sh create mode 100644 core/frontend/.dockerignore create mode 100644 core/frontend/Dockerfile create mode 100644 core/frontend/nginx.conf create mode 100644 core/frontend/public/assets/pay-alipay.png create mode 100644 core/frontend/public/assets/pay-wechat.png create mode 100644 core/frontend/src/account-page.css create mode 100644 core/frontend/src/library-page.css create mode 100644 core/frontend/src/pipeline-page.css create mode 100644 core/frontend/src/product-detail-page.css create mode 100644 core/frontend/src/products-page.css create mode 100644 core/frontend/src/projects-page.css create mode 100644 core/frontend/src/team-page.css create mode 100644 k8s/core/api-deployment.yaml create mode 100644 k8s/core/ingress.yaml create mode 100644 k8s/core/web-deployment.yaml create mode 100644 k8s/core/worker-deployment.yaml diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 78e3255..0f885ee 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -27,6 +27,7 @@ jobs: echo "CR_ORG=prod" >> $GITHUB_ENV echo "DEPLOY_ENV=production" >> $GITHUB_ENV echo "DOMAIN_WEB=airshelf.airlabs.art" >> $GITHUB_ENV + echo "DOMAIN_CORE=airshelf-web.airlabs.art" >> $GITHUB_ENV elif [[ "${{ github.ref_name }}" == "dev" ]]; then echo "IMAGE_TAG=dev-${BUILD_DATE}-${SHORT_SHA}" >> $GITHUB_ENV echo "CR_SERVER_ACTIVE=${{ secrets.CR_SERVER }}" >> $GITHUB_ENV @@ -35,6 +36,7 @@ jobs: echo "CR_ORG=dev" >> $GITHUB_ENV echo "DEPLOY_ENV=development" >> $GITHUB_ENV echo "DOMAIN_WEB=airshelf.test.airlabs.art" >> $GITHUB_ENV + echo "DOMAIN_CORE=airshelf-web.test.airlabs.art" >> $GITHUB_ENV fi - name: Login to Volcano Engine CR @@ -63,6 +65,50 @@ jobs: done [ $ok -eq 1 ] || { echo "ERROR: web push failed after 3 attempts"; exit 1; } + - name: Build and Push Core API (Django) + id: build_core_api + run: | + set -o pipefail + ok=0 + for attempt in 1 2 3; do + echo "Build core-api attempt $attempt/3..." + DOCKER_BUILDKIT=0 docker build \ + --tag ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-api:${{ env.IMAGE_TAG }} \ + --tag ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-api:latest \ + "./core/backend" 2>&1 | tee /tmp/build-core-api.log && { ok=1; break; } + echo "Attempt $attempt failed, retrying in 10s..." && sleep 10 + done + [ $ok -eq 1 ] || { echo "ERROR: core-api build failed after 3 attempts"; exit 1; } + ok=0 + for attempt in 1 2 3; do + docker push ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-api:${{ env.IMAGE_TAG }} && \ + docker push ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-api:latest && { ok=1; break; } + echo "Push attempt $attempt failed, retrying in 10s..." && sleep 10 + done + [ $ok -eq 1 ] || { echo "ERROR: core-api push failed after 3 attempts"; exit 1; } + + - name: Build and Push Core Web (React/Vite) + id: build_core_web + run: | + set -o pipefail + ok=0 + for attempt in 1 2 3; do + echo "Build core-web attempt $attempt/3..." + DOCKER_BUILDKIT=0 docker build \ + --tag ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-web:${{ env.IMAGE_TAG }} \ + --tag ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-web:latest \ + "./core/frontend" 2>&1 | tee /tmp/build-core-web.log && { ok=1; break; } + echo "Attempt $attempt failed, retrying in 10s..." && sleep 10 + done + [ $ok -eq 1 ] || { echo "ERROR: core-web build failed after 3 attempts"; exit 1; } + ok=0 + for attempt in 1 2 3; do + docker push ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-web:${{ env.IMAGE_TAG }} && \ + docker push ${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}/airshelf-core-web:latest && { ok=1; break; } + echo "Push attempt $attempt failed, retrying in 10s..." && sleep 10 + done + [ $ok -eq 1 ] || { echo "ERROR: core-web push failed after 3 attempts"; exit 1; } + - name: Setup Kubectl run: | if ! command -v kubectl &>/dev/null; then @@ -94,12 +140,32 @@ jobs: echo "Environment: ${{ env.DEPLOY_ENV }}" CR_IMAGE="${{ env.CR_SERVER_ACTIVE }}/${{ env.CR_ORG }}" - # Replace image placeholders + # Replace image placeholders (PRD design site) sed -i "s|\${CI_REGISTRY_IMAGE}/airshelf-web:latest|${CR_IMAGE}/airshelf-web:${{ env.IMAGE_TAG }}|g" k8s/web-deployment.yaml # Replace domain placeholder in ingress sed -i "s|airshelf.airlabs.art|${{ env.DOMAIN_WEB }}|g" k8s/ingress.yaml + # ===== Core (real app) image + domain substitution ===== + sed -i "s|\${CI_REGISTRY_IMAGE}/airshelf-core-api:latest|${CR_IMAGE}/airshelf-core-api:${{ env.IMAGE_TAG }}|g" k8s/core/api-deployment.yaml k8s/core/worker-deployment.yaml + sed -i "s|\${CI_REGISTRY_IMAGE}/airshelf-core-web:latest|${CR_IMAGE}/airshelf-core-web:${{ env.IMAGE_TAG }}|g" k8s/core/web-deployment.yaml + sed -i "s|airshelf-web.airlabs.art|${{ env.DOMAIN_CORE }}|g" k8s/core/ingress.yaml + + # ===== Build core env file: core/backend/.env + production overrides ===== + # Source of truth is core/backend/.env (committed; real MySQL + managed Redis + TOS + ARK). + # Override only the env-specific bits; DB_BIND_ADDRESS is dropped (dev LAN IP + # has no NIC in-cluster), settings -> production, hosts/CSRF/CORS -> the domain. + grep -vE '^\s*(#|$)' core/backend/.env \ + | grep -vE '^(DJANGO_SETTINGS_MODULE|DJANGO_DEBUG|DB_BIND_ADDRESS|DJANGO_ALLOWED_HOSTS|DJANGO_CSRF_TRUSTED_ORIGINS|CORS_ALLOWED_ORIGINS)=' \ + > /tmp/core.env + { + echo "DJANGO_SETTINGS_MODULE=airshelf.settings.production" + echo "DJANGO_DEBUG=false" + echo "DJANGO_ALLOWED_HOSTS=airshelf-web.airlabs.art,${{ env.DOMAIN_CORE }},localhost,127.0.0.1" + echo "DJANGO_CSRF_TRUSTED_ORIGINS=https://airshelf-web.airlabs.art,https://${{ env.DOMAIN_CORE }}" + echo "CORS_ALLOWED_ORIGINS=https://airshelf-web.airlabs.art,https://${{ env.DOMAIN_CORE }}" + } >> /tmp/core.env + # All kubectl operations with retry (K3s 内网连接可能抖动) export KUBECTL_TIMEOUT="--request-timeout=4s" @@ -114,16 +180,32 @@ jobs: --docker-password="${{ env.CR_PASSWORD_ACTIVE }}" \ --dry-run=client -o yaml | kubectl $KUBECTL_TIMEOUT apply -f - - # Apply manifests + # Core backend env secret (real MySQL / managed Redis / TOS / ARK) + kubectl $KUBECTL_TIMEOUT create secret generic airshelf-core-env \ + --from-env-file=/tmp/core.env \ + --dry-run=client -o yaml | kubectl $KUBECTL_TIMEOUT apply -f - + + # Apply manifests — shared infra kubectl $KUBECTL_TIMEOUT apply -f k8s/cert-manager-issuer.yaml kubectl $KUBECTL_TIMEOUT apply -f k8s/redirect-https-middleware.yaml + + # PRD design site kubectl $KUBECTL_TIMEOUT apply -f k8s/web-deployment.yaml kubectl $KUBECTL_TIMEOUT apply -f k8s/ingress.yaml + # Core real app (api + celery worker + web + ingress) + kubectl $KUBECTL_TIMEOUT apply -f k8s/core/api-deployment.yaml + kubectl $KUBECTL_TIMEOUT apply -f k8s/core/worker-deployment.yaml + kubectl $KUBECTL_TIMEOUT apply -f k8s/core/web-deployment.yaml + kubectl $KUBECTL_TIMEOUT apply -f k8s/core/ingress.yaml + # Preserve real client IP kubectl $KUBECTL_TIMEOUT patch svc traefik -n kube-system -p '{"spec":{"externalTrafficPolicy":"Local"}}' 2>/dev/null || true kubectl $KUBECTL_TIMEOUT rollout restart deployment/airshelf-web + kubectl $KUBECTL_TIMEOUT rollout restart deployment/airshelf-core-api + kubectl $KUBECTL_TIMEOUT rollout restart deployment/airshelf-core-worker + kubectl $KUBECTL_TIMEOUT rollout restart deployment/airshelf-core-web } 2>&1 | tee /tmp/deploy.log && { ok=1; break; } echo "Attempt $attempt failed, retrying in 30s..." sleep 30 @@ -143,6 +225,16 @@ jobs: if [ -f /tmp/build.log ]; then BUILD_LOG=$(tail -50 /tmp/build.log | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g') fi + elif [[ "${{ steps.build_core_api.outcome }}" == "failure" ]]; then + FAILED_STEP="build" + if [ -f /tmp/build-core-api.log ]; then + BUILD_LOG=$(tail -50 /tmp/build-core-api.log | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g') + fi + elif [[ "${{ steps.build_core_web.outcome }}" == "failure" ]]; then + FAILED_STEP="build" + if [ -f /tmp/build-core-web.log ]; then + BUILD_LOG=$(tail -50 /tmp/build-core-web.log | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g') + fi elif [[ "${{ steps.deploy.outcome }}" == "failure" ]]; then FAILED_STEP="deploy" if [ -f /tmp/deploy.log ]; then diff --git a/.gitignore b/.gitignore index 6590034..64e1176 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ out dist .env*.local .env +# core 后端环境变量需要进 CI 构建,放行它(其余 .env 仍忽略) +!core/backend/.env .venv __pycache__/ *.pyc diff --git a/core/backend/.dockerignore b/core/backend/.dockerignore new file mode 100644 index 0000000..6de7c6f --- /dev/null +++ b/core/backend/.dockerignore @@ -0,0 +1,10 @@ +.venv/ +**/__pycache__/ +*.pyc +db.sqlite3 +.env +.env.* +!.env.example +tests/ +*.md +staticfiles/ diff --git a/core/backend/.env b/core/backend/.env new file mode 100644 index 0000000..12aacd9 --- /dev/null +++ b/core/backend/.env @@ -0,0 +1,24 @@ +DJANGO_SETTINGS_MODULE=airshelf.settings.development +DJANGO_SECRET_KEY=S2GYXa8YC21lmnFfVwC+6cyFNhCCSoclhpylOmSAm16vKflUgQi398VQQSM+Rbit +DJANGO_DEBUG=true +DJANGO_ALLOWED_HOSTS=airshelf-web.airlabs.art,airshelf-web.test.airlabs.art,localhost,127.0.0.1,192.168.124.86 +DJANGO_CSRF_TRUSTED_ORIGINS=https://airshelf-web.airlabs.art,https://airshelf-web.test.airlabs.art,https://airshelf.airlabs.art,https://api.airshelf.airlabs.art,http://localhost:3000,http://127.0.0.1:3000,http://localhost:5173,http://127.0.0.1:5173,http://192.168.124.86:5173 +CORS_ALLOWED_ORIGINS=https://airshelf-web.airlabs.art,https://airshelf-web.test.airlabs.art,https://airshelf.airlabs.art,http://localhost:3000,http://127.0.0.1:3000,http://localhost:5173,http://127.0.0.1:5173,http://192.168.124.86:5173 +DB_ENGINE=mysql +DB_NAME=airshelf_test +DB_USER=airshelf_app +DB_PASSWORD=d5020f4d41e0e4c52a371ecb913be3d1f1ab2b85 +DB_HOST=14.103.27.192 +DB_PORT=3306 +DB_BIND_ADDRESS=192.168.124.86 +REDIS_CACHE_URL=redis://zyc:Zyc188208@redis-shzlsczo52dft8mia.redis.volces.com:6379/0 +CELERY_BROKER_URL=redis://zyc:Zyc188208@redis-shzlsczo52dft8mia.redis.volces.com:6379/1 +CELERY_RESULT_BACKEND=redis://zyc:Zyc188208@redis-shzlsczo52dft8mia.redis.volces.com:6379/2 +REDIS_LOCK_URL=redis://zyc:Zyc188208@redis-shzlsczo52dft8mia.redis.volces.com:6379/3 +TOS_ENDPOINT=https://tos-s3-cn-shanghai.volces.com +TOS_BUCKET=airshelf +TOS_ACCESS_KEY_ID=AKLTODVhY2U1NzY1MTU3NDA4NThiYzk2ZDMyZDNjYmZhZGY +TOS_SECRET_ACCESS_KEY=TWpjNVpqVm1NbVkzTWprNE5ESXlZMkUyT1dNNFlqVmtaRGRoTVdNME5qRQ== +VOLCANO_ARK_API_KEY=ark-24d5627e-28e4-4412-8679-46a6e9f26aab-6e951 +VOLCANO_ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 +DEFAULT_TRIAL_CREDITS=1000.0000 diff --git a/core/backend/Dockerfile b/core/backend/Dockerfile new file mode 100644 index 0000000..27d17db --- /dev/null +++ b/core/backend/Dockerfile @@ -0,0 +1,26 @@ +# ---- AirShelf core backend: Django + DRF + gunicorn / celery ---- +FROM docker.m.daocloud.io/python:3.12-slim + +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PIP_NO_CACHE_DIR=1 \ + PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ + +WORKDIR /app + +# PyMySQL is pure-python (install_as_MySQLdb), boto3/gunicorn need no C deps, +# so the slim image is enough — no build-essential required. +COPY requirements.txt . +RUN pip install --upgrade pip && pip install -r requirements.txt + +COPY . . + +# Collected admin/static lands here; served by WhiteNoise (see settings/production.py) +RUN mkdir -p /app/staticfiles + +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +EXPOSE 8000 +ENTRYPOINT ["docker-entrypoint.sh"] +CMD ["gunicorn", "airshelf.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3", "--timeout", "120"] diff --git a/core/backend/airshelf/settings/production.py b/core/backend/airshelf/settings/production.py index 2277a85..15482bd 100644 --- a/core/backend/airshelf/settings/production.py +++ b/core/backend/airshelf/settings/production.py @@ -1,4 +1,7 @@ +from pathlib import Path + from .base import * # noqa: F403 +from .base import BASE_DIR, MIDDLEWARE DEBUG = False @@ -6,3 +9,16 @@ SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True +# Serve admin/static behind gunicorn with DEBUG=False (no nginx static mount needed). +# WhiteNoise sits right after SecurityMiddleware. +MIDDLEWARE = ( + MIDDLEWARE[:1] + + ["whitenoise.middleware.WhiteNoiseMiddleware"] + + MIDDLEWARE[1:] +) + +STATIC_ROOT = Path(BASE_DIR) / "staticfiles" +STORAGES = { + "default": {"BACKEND": "django.core.files.storage.FileSystemStorage"}, + "staticfiles": {"BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage"}, +} diff --git a/core/backend/docker-entrypoint.sh b/core/backend/docker-entrypoint.sh new file mode 100644 index 0000000..6f05cc9 --- /dev/null +++ b/core/backend/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +# Only the web (gunicorn) container should run migrations / collectstatic. +# The celery worker shares this image but skips DB schema mutation to avoid races. +case "$1" in + gunicorn) + echo "[entrypoint] running migrations..." + python manage.py migrate --noinput + echo "[entrypoint] collecting static..." + python manage.py collectstatic --noinput + ;; +esac + +exec "$@" diff --git a/core/backend/requirements.txt b/core/backend/requirements.txt index 378ff1f..4f1994a 100644 --- a/core/backend/requirements.txt +++ b/core/backend/requirements.txt @@ -8,4 +8,5 @@ python-dotenv>=1.0,<2.0 boto3>=1.34,<2.0 requests>=2.31,<3.0 gunicorn>=21.2,<23.0 +whitenoise>=6.6,<7.0 diff --git a/core/frontend/.dockerignore b/core/frontend/.dockerignore new file mode 100644 index 0000000..7945624 --- /dev/null +++ b/core/frontend/.dockerignore @@ -0,0 +1,6 @@ +node_modules/ +dist/ +*.tsbuildinfo +.env +.env.* +*.md diff --git a/core/frontend/Dockerfile b/core/frontend/Dockerfile new file mode 100644 index 0000000..11f1065 --- /dev/null +++ b/core/frontend/Dockerfile @@ -0,0 +1,27 @@ +# ---- Stage 1: build the React/Vite SPA ---- +FROM docker.m.daocloud.io/node:20-alpine AS build + +WORKDIR /app + +# npm registry mirror for CN runners +RUN npm config set registry https://registry.npmmirror.com + +COPY package.json package-lock.json ./ +RUN npm ci + +COPY . . +# VITE_API_BASE_URL is empty => the SPA calls /api on the same origin, +# which nginx (below) proxies to the backend service. Zero CORS. +ENV VITE_API_BASE_URL="" +RUN npm run build + +# ---- Stage 2: serve static + reverse-proxy /api to backend ---- +FROM docker.m.daocloud.io/nginx:alpine + +RUN sed -i 's#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g' /etc/apk/repositories + +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=build /app/dist /usr/share/nginx/html + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/core/frontend/nginx.conf b/core/frontend/nginx.conf new file mode 100644 index 0000000..259698b --- /dev/null +++ b/core/frontend/nginx.conf @@ -0,0 +1,67 @@ +server_tokens off; +charset utf-8; + +# Backend (Django gunicorn) service inside the cluster. +upstream airshelf_api { + server airshelf-core-api:8000; +} + +# Preserve the original scheme: traefik terminates TLS and forwards +# X-Forwarded-Proto=https; fall back to our own scheme if it's absent. +map $http_x_forwarded_proto $fwd_proto { + default $http_x_forwarded_proto; + "" $scheme; +} + +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + client_max_body_size 50m; + + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + + # ---- Backend pass-through (same origin, no CORS) ---- + location /api/ { + proxy_pass http://airshelf_api; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $fwd_proto; + proxy_read_timeout 300s; + } + + location /admin/ { + proxy_pass http://airshelf_api; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $fwd_proto; + } + + # Django/WhiteNoise admin static assets + location /static/ { + proxy_pass http://airshelf_api; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Proto $fwd_proto; + } + + # ---- Frontend SPA: hashed assets cache long, index.html never ---- + location /assets/ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + location = /index.html { + add_header Cache-Control "no-cache, must-revalidate" always; + expires off; + } + + # SPA fallback: every unknown path serves index.html (client-side routing) + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/core/frontend/public/assets/pay-alipay.png b/core/frontend/public/assets/pay-alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..98869d4c593900be54335a702605a422e35049ad GIT binary patch literal 64408 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 literal 0 HcmV?d00001 diff --git a/core/frontend/public/assets/pay-wechat.png b/core/frontend/public/assets/pay-wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..50f2d3c504aeabc6bcf094eccdde0198b3a419ca GIT binary patch literal 67110 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

*#1Ig*DcqJp6`xE!PAhw7X*_emqD#J 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%0Di6O2b5k;?+j-`69 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 literal 0 HcmV?d00001 diff --git a/core/frontend/src/App.tsx b/core/frontend/src/App.tsx index b69b1ff..da61c6e 100644 --- a/core/frontend/src/App.tsx +++ b/core/frontend/src/App.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; -import { Bell, CircleDollarSign } from "lucide-react"; import { api, getToken, setToken } from "./api"; +import { IconKitSvg } from "./components/IconKitSvg"; import type { AITask, Asset, @@ -13,7 +13,7 @@ import type { TeamMember, User } from "./types"; -import { Decorations, Sidebar, ToastLike } from "./components/app-shell"; +import { CornerMarks, Decorations, Sidebar, ToastLike } from "./components/app-shell"; import { AccountPage, AssetFactoryPage, @@ -36,6 +36,28 @@ import type { AuthMode, NavigateOptions, Notice, Page, ResolvedRoute } from "./r import { pathForPage, resolveRoute, routeLabels } from "./routes/route-config"; import { money } from "./routes/stage-config"; +const crumbLabels: Partial> = { + dashboard: "工作台", + products: "商品库", + productDetail: "商品详情", + productCreateUpload: "新建商品", + projects: "视频项目", + projectWizard: "新建视频项目", + pipeline: "生产管线", + library: "资产库", + account: "消费", + team: "团队", + messages: "消息中心", + assetFactory: "图片生成", + imageOptimize: "图片创作", + modelPhoto: "模特上身图", + modelPhotoDemoA: "模特图方案 A", + modelPhotoDemoB: "模特图方案 B", + platformCover: "平台套图", + settings: "设置", + settingsNotify: "设置" +}; + export function App() { const [route, setRoute] = useState(() => resolveRoute()); const page = route.page; @@ -275,10 +297,6 @@ export function App() { projects={projects.filter((project) => project.product === activeProduct.id)} navigate={navigate} onUpdate={(payload) => action(() => api.updateProduct(activeProduct.id, payload), "商品已更新")} - onDelete={async () => { - const ok = await action(() => api.deleteProduct(activeProduct.id), "商品已删除"); - if (ok !== null) navigate("products"); - }} /> ); case "projects": @@ -303,68 +321,29 @@ export function App() { }} /> ); - case "pipeline": { - const project = projectDetail || activeProject; - if (!project) { - return ( -

-
-

暂无项目

-
- // 先创建一个视频项目 -
-
-
- + case "pipeline": + // 有项目时由下方 full-screen 特例渲染;这里只兜底「暂无项目」 + return ( +
+
+

暂无项目

+
+ // 先创建一个视频项目
- ); - } - return ( - action(() => api.generateScript(project.id, { prompt }), "脚本已生成")} - onAdoptScript={(scriptId) => action(() => api.adoptScript(project.id, scriptId), "脚本已采用")} - onGenerateBaseAsset={(kind, prompt) => action(() => api.generateBaseAsset(project.id, { kind, prompt }), "基础资产已生成")} - onGenerateStoryboard={(prompt) => action(() => api.generateStoryboard(project.id, { prompt }), "故事板已生成")} - onSkipStoryboard={() => action(() => api.skipStoryboard(project.id), "已跳过故事板")} - onSubmitVideo={(segmentId, prompt) => action(() => api.submitVideo(project.id, { video_segment_id: segmentId, prompt }), "视频片段已提交")} - onPollVideo={(segmentId) => action(() => api.pollVideo(project.id, segmentId), "片段状态已刷新")} - onSubmitAllVideos={(prompt) => - action(async () => { - const targets = project.video_segments.filter((segment) => !["running", "succeeded"].includes(segment.status)); - for (const segment of targets) { - await api.submitVideo(project.id, { - video_segment_id: segment.id, - prompt: `${prompt} 第 ${segment.sort_order + 1} 段,时长 ${segment.target_duration_seconds} 秒` - }); - } - return targets.length; - }, "60s 多段视频任务已提交") - } - onPollAllVideos={() => - action(async () => { - const targets = project.video_segments.filter((segment) => ["running", "queued"].includes(segment.status)); - for (const segment of targets) { - await api.pollVideo(project.id, segment.id).catch(() => undefined); - } - return targets.length; - }, "视频片段状态已刷新") - } - onSubmitExport={() => action(() => api.submitExport(project.id), "导出任务已提交")} - /> +
+ +
+
); - } case "library": return action(() => api.uploadAsset(formData), "资产已上传")} />; case "account": return ; case "team": - return ; + return ; case "messages": return ; case "assetFactory": @@ -388,31 +367,92 @@ export function App() { } } - const avatarChar = (user.username || "U").slice(0, 1).toUpperCase(); + const avatarChar = (currentTeam.name || currentUser.username || "A").slice(0, 1).toUpperCase(); + const here = crumbLabels[page] || routeLabels[page] || "工作台"; + + // 生产管线 · 全屏 bespoke 布局(自带顶栏 + 步进器),脱离常规 shell + const pipelineProject = projectDetail || activeProject; + if (page === "pipeline" && pipelineProject) { + return ( + action(() => api.generateScript(pipelineProject.id, { prompt }), "脚本已生成")} + onAdoptScript={(scriptId) => action(() => api.adoptScript(pipelineProject.id, scriptId), "脚本已采用")} + onGenerateBaseAsset={(kind, prompt) => action(() => api.generateBaseAsset(pipelineProject.id, { kind, prompt }), "基础资产已生成")} + onGenerateStoryboard={(prompt) => action(() => api.generateStoryboard(pipelineProject.id, { prompt }), "故事板已生成")} + onSkipStoryboard={() => action(() => api.skipStoryboard(pipelineProject.id), "已跳过故事板")} + onSubmitVideo={(segmentId, prompt) => action(() => api.submitVideo(pipelineProject.id, { video_segment_id: segmentId, prompt }), "视频片段已提交")} + onPollVideo={(segmentId) => action(() => api.pollVideo(pipelineProject.id, segmentId), "片段状态已刷新")} + onSubmitAllVideos={(prompt) => + action(async () => { + const targets = pipelineProject.video_segments.filter((segment) => !["running", "succeeded"].includes(segment.status)); + for (const segment of targets) { + await api.submitVideo(pipelineProject.id, { + video_segment_id: segment.id, + prompt: `${prompt} 第 ${segment.sort_order + 1} 段,时长 ${segment.target_duration_seconds} 秒` + }); + } + return targets.length; + }, "60s 多段视频任务已提交") + } + onPollAllVideos={() => + action(async () => { + const targets = pipelineProject.video_segments.filter((segment) => ["running", "queued"].includes(segment.status)); + for (const segment of targets) { + await api.pollVideo(pipelineProject.id, segment.id).catch(() => undefined); + } + return targets.length; + }, "视频片段状态已刷新") + } + onSubmitExport={() => action(() => api.submitExport(pipelineProject.id), "导出任务已提交")} + /> + ); + } return (
- +
- - - +
+ {notice && } {renderPage()}
diff --git a/core/frontend/src/account-page.css b/core/frontend/src/account-page.css new file mode 100644 index 0000000..426e198 --- /dev/null +++ b/core/frontend/src/account-page.css @@ -0,0 +1,161 @@ +/* 账户页 · 从 public/exact/account.html 内联