B基金 / 磐石基金 — 客户自部署说明（2026-09-23 v15）
================================================
源码对应 GitHub main：de913b56cece4fa9019006bd5e4d1acb95b5ebc6
（含可编辑收益编号；合并自 PR #19）

本包供贵方在自有 Cloudflare 账号与域名 fund.onele.top 自行部署。
本包不含任何生产 Secret、.env、node_modules 或 .git。
仓库内 wrangler.jsonc 中的 database_id、域名与 ALLOWED_ORIGINS 为交付参考模板，
部署前必须改成贵方自己的 D1 与域名，切勿直接复用他人 Cloudflare 资源。

一、环境准备
1. 安装 Node.js 20+、npm，并安装 Wrangler：npm i -g wrangler
2. 使用贵方 Cloudflare 账号登录：npx wrangler login
3. 解压本包后进入目录：
   cd monolith-fund-platform-client-handoff-20260923-v15
   npm ci

二、创建贵方 Cloudflare 资源（首次）
1. 创建 Pages 项目（项目名可自定，下文以 YOUR_PAGES_PROJECT 表示）：
   npx wrangler pages project create YOUR_PAGES_PROJECT --production-branch main
2. 创建 D1 数据库（库名可自定，须与 wrangler.jsonc 中 database_name 一致）：
   npx wrangler d1 create YOUR_D1_DATABASE_NAME
   将返回的 database_id 写入 wrangler.jsonc 的 d1_databases[0].database_id
3. 编辑 wrangler.jsonc（或部署前注入的等价配置），至少更新：
   - d1_databases.database_name / database_id → 贵方 D1
   - vars.ALLOWED_ORIGINS → https://fund.onele.top（及必要的 Pages 预览域）
   - vars.PUBLIC_PRIMARY_DOMAIN → fund.onele.top
   - vars.PUBLIC_API_BASE_URL → https://fund.onele.top/api
   - 按需调整 PUBLIC_APP_NAME、SESSION_COOKIE_NAME 等

三、配置 Secret（必须用贵方自己的值，勿使用他人密钥）
在贵方 Cloudflare 账号执行，例如：
  printf '%s' "$SESSION_SIGNING_SECRET" | npx wrangler pages secret put SESSION_SIGNING_SECRET --project-name YOUR_PAGES_PROJECT
  printf '%s' "$TRONGRID_API_KEY" | npx wrangler pages secret put TRONGRID_API_KEY --project-name YOUR_PAGES_PROJECT
  printf '%s' "$ADMIN_MFA_ENCRYPTION_KEY" | npx wrangler pages secret put ADMIN_MFA_ENCRYPTION_KEY --project-name YOUR_PAGES_PROJECT
其他密钥见 .env.example。私钥/助记词不得写入本项目或 Pages 配置。

四、D1 迁移（重要）
将 migrations 应用到贵方远程 D1（库名与 wrangler.jsonc 一致）：
  npx wrangler d1 migrations apply YOUR_D1_DATABASE_NAME --remote

本包含迁移 0001 … 0019。若贵方现网尚未跑完，请备份后执行至 0019（含）：
  0017_daily_compound_performance.sql
  0018_daily_performance_same_day_reapply.sql
  0019_yield_display_no.sql   ← 可编辑收益编号字段

全新空库可再执行基础种子（不含真实用户/订单/资产）：
  npx wrangler d1 execute YOUR_D1_DATABASE_NAME --remote --file seed.sql

迁移会改动账本结构，请先备份；勿在未备份的生产库上盲目执行。

五、构建与发布
  npm run build
  npx wrangler pages deploy dist --project-name YOUR_PAGES_PROJECT --branch main

六、绑定域名 fund.onele.top
在 Cloudflare Pages → 自定义域名 绑定 fund.onele.top，完成 DNS/TLS。
确认健康检查：
  https://fund.onele.top/api/health
  首页、认购页、/admin 可打开。

七、可编辑收益编号（本版重点）
管理员登录后打开：
  https://fund.onele.top/admin/daily-performance
可按持仓账户修改「收益编号」并保存；保存后客户资产页与收益展示立即使用新编号。
须已应用迁移 0019，且管理员具备对应后台权限。

八、常见注意
- 必须用贵方 wrangler login 与贵方 Pages/D1/Secret；本包无法代登录。
- 不要把本包里的 database_id 或 monolith-fund.pages.dev 配置原样用于 fund.onele.top。
- D1 迁移不会随 pages deploy 自动执行，须人工 apply。
- 更细的清单见 DEPLOYMENT_CHECKLIST.md、docs/DEPLOYMENT.md、PROJECT_SERVER_UPGRADE_GUIDE.md。

交付包版本：20260923-v15 | 源码 SHA：de913b56cece4fa9019006bd5e4d1acb95b5ebc6
