feat: 公开商品页重设计 + web 上传修复 + 二维码配置

- 公开商品页(/product/:uuid)全面重设计:全宽正方形图片轮播、
  左右滑动切图、点击放大全屏查看、商品参数含描述、页脚贴底
- 修复 Flutter web 文件上传无反应(path→bytes)
- 修复 web 路由空白页(usePathUrlStrategy + 单层 MaterialApp.router)
- 二维码 URL 改为从 STORAGE_PUBLIC_URL 环境变量读取
- 新增 PUBLIC_URL dart-define → AppConfig.publicBaseUrl
- 新增 CI/CD workflows + NAS runner compose 配置
- seed S001 补充商品描述字段

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-04-30 00:31:11 +08:00
parent 393e227de5
commit 655c1d366e
17 changed files with 738 additions and 157 deletions
+10
View File
@@ -272,6 +272,13 @@ start_backend() {
# ── 启动 Web 前端(后台) ─────────────────────────────────
start_web_bg() {
# 清理占用 8081 的旧进程
local old_pid
old_pid=$(lsof -ti:8081 2>/dev/null | head -1)
if [ -n "$old_pid" ]; then
kill -9 "$old_pid" 2>/dev/null || true
sleep 1
fi
info "启动 Flutter Web (Chrome,后台)..."
flutter run -d chrome --web-port 8081 >>"$WEB_LOG" 2>&1 &
local pid=$!
@@ -308,6 +315,9 @@ if [ "$RUN_WEB" = true ] && [ "$RUN_FRONTEND" = true ]; then
elif [ "$RUN_WEB" = true ]; then
cd "$CLIENT_DIR" && flutter pub get
# 清理占用 8081 的旧进程
_old=$(lsof -ti:8081 2>/dev/null | head -1)
[ -n "$_old" ] && kill -9 "$_old" 2>/dev/null && sleep 1
echo ""
success "Chrome 启动中,稍候自动打开..."
echo -e "${CYAN}提示:按 r 热重载,按 q 退出,后端继续在后台运行${NC}"