# 发布基线分组清单

更新时间：2026-06-08 20:32:23 CST

## 当前快照

- 工作区变更总数：270
- 修改文件：133
- 未跟踪文件/目录：115
- 删除文件：22
- macOS 元数据：0
- QA 产物：`qa-artifacts/` 已加入 `.gitignore`，不进入发布提交

本文件只做发布基线分组，不代表已经提交。提交前仍需按每组跑对应门禁。

## 分组提交边界

### 1. `chore: clean release workspace`

范围：

- `.gitignore`
- `.dockerignore`
- 删除旧 demo HTML：`experts.html`、`membership.html`
- 删除旧 mock：`miniapp/src/api/mock.ts`
- 删除旧静态商品 fixture：`web/src/data/products.ts`
- 删除旧 `semio copy/*`
- 删除根目录旧 PRD/演示/设计文档

处理原则：

- 当前删除项默认视为废弃，可作为这一组提交。
- 如果后续要保留旧 PRD/演示资料，应恢复后移动到 ignored `local-archive/`，不要放回发布代码树。
- 不提交 `qa-artifacts/`、`local-archive/`、`secrets/`、`.env`、证书、密钥。

### 2. `feat: harden phone auth and miniapp login`

范围：

- `backend/.env.example`
- `backend/db/migrations/045_granular_expert_permissions_and_demo_cleanup.sql`
- `backend/db/migrations/046_miniapp_pc_scan_login.sql`
- `backend/db/migrations/047_auth_rate_limits.sql`
- `backend/src/lite/env.mjs`
- `backend/src/lite/sms.mjs`
- `backend/src/lite/miniapp-wechat.mjs`
- `backend/src/lite/wechat-oauth.mjs`
- `backend/src/lite/auth-repository.mjs`
- `backend/src/lite/prisma.mjs`
- `backend/src/lite/business-pg.mjs`
- `backend/src/lite/api.mjs`
- `miniapp/src/pages/auth/login/`
- `miniapp/src/pages/auth/phone/`
- `miniapp/src/pages/auth/onboarding/`
- `miniapp/src/pages/auth/pc-confirm/`
- `miniapp/src/api/backend.ts`
- `miniapp/src/stores/storage.ts`
- `web/src/app/login/LoginForm.tsx`
- `web/src/components/providers/AppProvider.tsx`
- `web/src/lib/backend.ts`

门禁：

- `cd backend && npm run typecheck && npm run prisma:validate && npm run test:business-closure`
- `cd miniapp && npm run typecheck && npm run build:weapp`
- `cd web && npm run lint && npm run build`

### 3. `feat: add wechat payment integration`

范围：

- `backend/db/migrations/048_wechat_payments.sql`
- `backend/src/lite/checkout-transaction-repository.mjs`
- `backend/src/lite/wechat-pay.mjs`
- `backend/src/lite/business-pg.mjs`
- `backend/src/lite/api.mjs`
- `web/src/components/commerce/CheckoutPageClient.tsx`
- `web/src/app/checkout/success/success-client.tsx`
- `web/src/components/shared/QrCodeSvg.tsx`
- `miniapp/src/pages/checkout/`
- `miniapp/src/pages/checkout/success/`

门禁：

- 本地只跑 dev 支付闭环。
- 真 JSAPI、Native、回调交给生产服务器 QA Agent。

### 4. `feat: add manual invoice center`

范围：

- `backend/db/migrations/050_manual_invoice_center.sql`
- `backend/src/lite/invoice-repository.mjs`
- `backend/src/lite/uploaded-files-repository.mjs`
- `backend/src/lite/file-storage.mjs`
- `backend/src/lite/business-pg.mjs`
- `backend/src/lite/api.mjs`
- `web/src/app/account/invoices/`
- `web/src/app/account/orders/[id]/page.tsx`
- `web/src/app/admin/invoices/`
- `web/src/app/admin/orders/[id]/page.tsx`
- `miniapp/src/pages/account/orders/`
- `miniapp/src/pages/account/orders/detail/`

门禁：

- 用户已支付订单申请发票。
- 后台发票中心列表/详情/状态流转。
- 上传 PDF/OFD。
- 用户下载发票文件。
- 文件越权应被拒绝。

### 5. `feat: add exception center and system status`

范围：

- `backend/db/migrations/049_production_operations.sql`
- `backend/db/migrations/051_exception_center.sql`
- `backend/src/lite/operations-repository.mjs`
- `backend/src/lite/observability.mjs`
- `backend/src/lite/products-repository.mjs`
- `backend/src/lite/orders-repository.mjs`
- `backend/src/lite/payments-repository.mjs`
- `backend/src/lite/api.mjs`
- `backend/src/lite/business-pg.mjs`
- `backend/src/health/health.controller.ts`
- `web/src/app/admin/exceptions/`
- `web/src/app/admin/system/`

门禁：

- backend 内网 `/api/metrics` 输出 Prometheus 指标，公网 `/api/metrics` 由 Caddy 返回 404。
- `/admin/exceptions` 可查看、处理、解决、忽略。
- 支付超时、权益缺失、发票失败、文件对象缺失可入异常中心。

### 6. `feat: add production infra baseline`

范围：

- `.env.production.example`
- `Makefile`
- `docker-compose.yml`
- `backend/Dockerfile`
- `web/Dockerfile`
- `deploy/`
- `.github/`
- `docs/PRODUCTION_RUNBOOK.md`
- `docs/BACKUP_RESTORE.md`
- `docs/PRODUCTION_QA_AGENT_CHECKLIST.md`
- `RELEASE_READINESS.md`

门禁：

- `docker compose --env-file .env.production.example config`
- 本开发机不强制跑完整 Docker build；完整启动交给生产服务器 QA Agent。

### 7. `feat: complete admin operations surfaces`

范围：

- `web/src/app/admin/coupons/`
- `web/src/app/admin/expert-applications/`
- `web/src/app/admin/expert-bookings/`
- `web/src/app/admin/expert-withdrawals/`
- `web/src/app/admin/experts/`
- `web/src/app/admin/memberships/`
- `web/src/app/admin/orders/page.tsx`
- `web/src/app/admin/payments/`
- `web/src/app/admin/reconcile/`
- `web/src/app/admin/revenue/`
- `web/src/app/admin/search/`
- `web/src/app/admin/settlements/`
- `web/src/app/admin/site/`
- `web/src/app/admin/staff-accounts/`
- `web/src/app/admin/staff-audit/`
- `web/src/app/admin/staff-roles/`
- `web/src/app/admin/users/`
- `web/src/components/admin/AdminShell.tsx`
- `web/src/lib/month-filter.ts`

门禁：

- `cd web && npm run lint && npm run build`
- 管理员主要页面能打开，表格不白屏。

### 8. `feat: polish user web experience`

范围：

- `web/src/app/error.tsx`
- `web/src/app/loading.tsx`
- `web/src/app/not-found.tsx`
- `web/src/app/account/**`
- `web/src/app/agents/**`
- `web/src/app/courses/**`
- `web/src/app/data/**`
- `web/src/app/events/**`
- `web/src/app/experts/**`
- `web/src/app/membership/page.tsx`
- `web/src/app/passport/`
- `web/src/components/account/`
- `web/src/components/commerce/`
- `web/src/components/home/`
- `web/src/components/layout/`
- `web/src/components/shared/`
- `web/src/lib/brand.ts`
- `web/public/assets/dlbdi-logo.jpg`

门禁：

- `cd web && npm run lint && npm run build && npm run test:e2e`
- 375/390/1440 宽度人工抽查。

### 9. `feat: complete miniapp workbench and account flows`

范围：

- `miniapp/README.md`
- `miniapp/project.config.json`
- `miniapp/project.private.config.json`
- `miniapp/src/app.config.ts`
- `miniapp/src/app.css`
- `miniapp/src/components/ui.tsx`
- `miniapp/src/constants/`
- `miniapp/src/pages/account/**`
- `miniapp/src/pages/checkin/`
- `miniapp/src/pages/consulting/`
- `miniapp/src/pages/data-service/`
- `miniapp/src/pages/staff/`
- `miniapp/src/pages/services/**`
- `miniapp/src/pages/home/index.tsx`
- `miniapp/src/dlbdi-logo.jpg`

门禁：

- `cd miniapp && npm run typecheck && npm run build:weapp`
- 真机验收交给生产服务器 QA Agent 和微信开发者工具。

### 10. `test: add production smoke checks`

范围：

- `backend/tests/`
- `web/tests/`
- `web/playwright.config.ts`
- `backend/scripts/`

门禁：

- `cd backend && npm run test:unit && npm run test:business-closure`
- `cd web && npm run test:e2e`

## 不提交清单

- `.env`
- `.env.production`
- `backend/.env`
- `secrets/`
- `local-archive/`
- `qa-artifacts/`
- `backend/storage/`
- `web/.next/`
- `miniapp/dist/`
- `*.pem`
- `*.p12`
- `*_cert.zip`
- `*.key`
- `*.crt`

## 下一步

1. 跑完整非 Docker 门禁。
2. 按本文件分组 staging。
3. 每组提交前复核 `git diff --cached --stat`。
4. 完成提交后交给生产服务器 QA Agent 执行 `docs/PRODUCTION_QA_AGENT_CHECKLIST.md`。
