- meida_backend 收为 git submodule(git.xiangsilian.com/xsl/meida_backend.git),含 PDF 导出管线提交 - WSL Ubuntu-22.04 镜像网络模式跑 PG(pgvector)@55432 + Redis@56379 + uvicorn@8666 + celery,Windows/Hyper-V 防火墙已放行 - app 默认后端地址 192.168.3.25→192.168.3.19:8666(宿主机) - docs/本地联调指南.md 全面更新到本机拓扑;.gitignore 增补本地素材/调研产物与 graphify 本机文件
5.3 KiB
5.3 KiB
本地联调指南(App ↔ 后端)
2026-08-15 | 适用:FE 第一批(F1~F4)交付后的真机/模拟器联调 2026-08-29 更新:环境已统一到本机(
D:\meida)。后端仓库作为 submodule 位于meida_backend/,WSL 内路径/mnt/d/meida/meida_backend(WSL 发行版Ubuntu-22.04,rootfs import 方式安装)。
⚠️ 先看:端口冲突
App 的默认 baseUrl 是 http://127.0.0.1:8000,但你这台机器的 8000 端口已被 AutoVideo(voxcpm-tts)长期占用。因此本地联调请让美搭后端用 8666 端口,并在 App 登录页「高级设置」里把服务器地址改成对应值(F1 交付的设置入口)。
〇、首次搭建(已在本机完成,换机器时照做)
- WSL:
wsl --status确认默认版本 2;发行版用 rootfs 导入(微软商店/ubuntu 官方 wsl rootfs 对 22.04 不可用):wsl --import Ubuntu-22.04 <安装目录> ubuntu-22.04-server-cloudimg-amd64-root.tar(rootfs 来自 cloud-images.ubuntu.com 的 jammy release); - WSL 内
/etc/wsl.conf开[boot] systemd=true,wsl --shutdown后重启; - WSL 内装 docker:
apt install docker.io+ compose 插件放/usr/local/lib/docker/cli-plugins/docker-compose;Docker Hub 不可直连,/etc/docker/daemon.json已配registry-mirrors: ["https://docker.m.daocloud.io"]; make up起 PG(pgvector, 55432)/Redis(56379);两容器已设restart=unless-stopped(WSL 空闲会自动关机,docker 随 systemd 自启把容器拉起来);- WSL 内装 uv(
~/.local/bin/uv),uv sync --extra dev;.env已从模板生成(JWT_SECRET 已随机化); - 唯一待填项:
.env里的DEEPSEEK_API_KEY——不填则登录/配额正常,但对话与报告文案会调 LLM 失败。
〇·五、真机访问(WSL2 镜像网络,已配置)
WSL2 默认 NAT 模式下,WSL 内监听的端口只转发到 Windows localhost,真机访问局域网 IP 不通。本机已切换为镜像模式:
C:\Users\youmi\.wslconfig:[wsl2] networkingMode=mirrored(改后需wsl --shutdown重启;重启后 uvicorn/celery 要重新拉起,容器有自启策略不用管);- 两道防火墙都已放行 TCP 8666/8080:Windows 防火墙规则
Meida-Dev-WSL+ Hyper-V 防火墙规则Meida-Dev-WSL-In(镜像模式走 Hyper-V 防火墙,其默认入站是 Block,只加 Windows 规则不够); - 已知怪相:镜像模式下 Windows 本机 curl 局域网 IP 不通是正常的(host loopback 怪癖),WSL 内与手机访问才是真实口径;
- 验证:
wsl -d Ubuntu-22.04 -e bash -c "curl -s http://192.168.3.19:8666/healthz"。
一、启动后端(WSL)
wsl -d Ubuntu-22.04 -e bash -c "export PATH=\$HOME/.local/bin:\$PATH && cd /mnt/d/meida/meida_backend && \
(nohup uv run uvicorn apps.api.main:app --host 0.0.0.0 --port 8666 > /tmp/meida-api.log 2>&1 &) && \
(nohup uv run celery -A apps.worker.celery_app worker -Q cpu,io --pool=solo --loglevel WARNING > /tmp/meida-worker.log 2>&1 &) && sleep 8 && \
curl -s http://127.0.0.1:8666/healthz"
--host 0.0.0.0:真机(USB)需要开发机局域网 IP 可达- worker 必须起:报告生成是异步任务,不起 worker 会一直 RUNNING(
--pool=solo:本机联调单进程足够,且免 root 告警) - 依赖容器:PG(55432)/Redis(56379) 设为开机自启,若异常
docker ps确认 - 停止:
wsl -d Ubuntu-22.04 -e bash -c "pkill -f 'uvicorn apps.api'; pkill -f 'celery -A apps.worker'"
二、App 侧(DevEco Studio)
- 打开工程
D:\meida\app,点 Run(模拟器或真机) - 登录页「高级设置」:
- 模拟器:
http://127.0.0.1:8666(WSL2 端口自动转发到 Windows localhost) - 真机(USB):
http://<开发机局域网IP>:8666(ipconfig查,手机与电脑同 WiFi;防火墙首次会弹允许)
- 模拟器:
- 设备标识随便填(记住它——同标识=同账号,配额/报告都挂它下面)
三、可体验的闭环(对齐 FE 第一批)
- 登录 → 四 Tab 主界面
- 首页「生成我的形象报告」→ 填问卷 → 提交 → 看进度轮询 → 32 维结果页(约 10~30 秒,含一次真实 LLM 调用)
- 首页「AI 穿搭顾问」→ 对话(真实 DeepSeek)
- 「我的」→ 配额卡片(对话/试穿/报告)+ 流水(消耗/退还/奖励)
- 重复生成报告 → 40920 提示;报告重生成 → 视觉阶段复用(秒出诊断)
四、已知边界(设计使然,不是 bug)
- 照片是"模拟对象键"输入框——COS 直传等云端开通后替换
- 空知识库时报告文案会降级为规则直出(结果页有黄条标识)——等规则库录入后消失
- 华为账号/短信登录未接(等 AGC/签名审核);当前是 dev-token 通道,仅限本地
- 未配置签名 → 只能模拟器/调试真机跑,发布包要等证书指纹双套配置
五、快速排障
| 症状 | 原因/处理 |
|---|---|
| 登录一直转圈/网络错误 | baseUrl 不对;或后端没起;模拟器记得用 127.0.0.1 |
| 报告一直 RUNNING | worker 没起(第二步的两条 nohup 都要) |
| 401 反复跳登录 | 旧 token 过期属正常自动刷新;若持续,hdc shell 清 App 数据重登 |
| 真机连不上 | 防火墙放行 8666;确认手机电脑同网段;后端必须 --host 0.0.0.0 |