# v0.59 策略与个人组合衔接

入口：我的资产 → 策略与个人组合。此功能只读取已存研究与个人快照，生成一次性占比比较，可导出JSON。它不保存共享报告，不修改持仓、不创建信号投递或订单。

## 使用步骤

1. 选择自己的个人工作区，或自己仍为成员的团队工作区，读取模型目录。目录状态仅为元数据，不表示当前可用。
2. 选择一个注册记录并复核证据。展示冻结的币种、交易所、现货/USDT、日线、策略预算、风险及费用参数、注册有效期、历史研究与前向模拟结果。两类研究结果分别标示，均不代表真实账户收益。
3. 选择自己的一个账户最新余额快照。没有快照时先录入完整余额或显式同步；此页面不自动调用交易所。团队管理员无法用团队权限查看其他成员个人余额。
4. 核对所有非零持仓参考价格，填写价格依据、UTC时间及比较说明。手工账户还需声明对应的交易所。USDT计价单位固定为1，其他稳定币不默认等于1。原快照价格仅在其priceAt与余额时间相差不超过60秒时提供建议，仍需用户核对；没有价格时间的手工价格不会自动变为当前报价。
5. 确认完整账户范围及价格后计算。模型币种未列在快照中时，仅在范围确认后视为零。其他持仓保留在分母中，研究目标占比为零。

## 可比较条件与计算

需要显式服务端历史研究证据、完整准入流水复核、当前研究门槛通过、双人确认的有效注册。历史输入可能来自客户端归档或已绑定的服务端采集版本，页面明确标示来源；服务端复算不等于外部数据真实性证明。前向为模拟，不是实盘；来源目标当前也未独立复算。

使用最新按时生成、没有reset或gap的目标，距到期至少60秒。余额及参考价都需处于最近15分钟；参考价格时间在余额前后60秒内；余额还须处于研究目标有效窗口。来源原件、余额确认恢复状态、账户连接状态均需可用。

仅比较一个明确账户的完整现货范围，不聚合多个账户。模型交易所与账户交易所必须一致，手工声明不等于交易所认证，也不能覆盖已知币安原件来源。关联余额若包含Funding等非现货子账户则不可用于现货模型。USDT同时出现在模型资产列和现金列时拒绝比较。

数量和参考价使用18位十进制定点数，乘积保留36位精度。当前占比向零截断至18位小数。各策略同币种目标相加，目标按12位小数计算；不重归一化，100%总和容差为0.0000001个百分点。

`差异（百分点） = 研究目标占比 − 当前参考市值占比`。正负号只表达偏离，不生成买卖方向、数量、建议订单或收益预期。

任何资料缺口都会让总参考市值、当前占比与差异保持null，不把缺价当作零。已知部分小计与参考目标仍可单独查看。零余额不需要价格；全部为零或空账户无法计算占比。

## 数据接口

仅支持同源浏览器个人登录，不接受`X-TrendLab-Workspace`头，独立Bearer接口不存在。模型来源由请求体显式选择，个人持仓始终固定为当前用户。

| 方法 | 地址 | 请求 |
| --- | --- | --- |
| GET | `/api/console/wealth/strategy` | 无查询参数；可访问工作区及自己的账户快照元数据 |
| POST | `…/strategy/catalog` | `{modelWorkspaceId:null或工作区ID}` |
| POST | `…/strategy/model` | `{modelWorkspaceId,registrationId}` |
| POST | `…/strategy/snapshot` | `{accountId,snapshotId}`，必须是自己的最新快照 |
| POST | `…/strategy/compare` | 下述完整对象 |

```json
{
  "modelWorkspaceId": null,
  "registrationId": "所选注册UUID",
  "accountId": "个人账户UUID",
  "snapshotId": "最新快照UUID",
  "expectedModelHash": "模型读取返回的basisHash",
  "expectedSnapshotHash": "快照读取返回的basisHash",
  "valuationAsOf": 1792324800000,
  "prices": [{"asset":"BTC","unitPriceUsdt":"60000"}],
  "declaredVenue": "Binance",
  "scopeConfirmed": true,
  "pricesConfirmed": true,
  "priceReference": "统一时点参考价及核对依据",
  "note": "本次比较说明"
}
```

非手工账户的declaredVenue填写null。价格可为null表示未知，不得提供快照以外币种；每个币种最多一项。字段严格校验，不接受owner等额外参数。所有POST共用每人每分钟8次独立预算，请求上限128KiB。仍受控制台每分钟60次总预算限制。

模型和快照各有来源摘要，涵盖当前修订、证据头、原件及恢复状态。比较时重新读取并在同一事务内复核两边的成员权限及来源；变化返回409，权限撤销返回403。请重新选择、读取并确认来源。

## 导出与复核

JSON信封为`{payload,sha256}`，内含输入、经过服务端读取的模型/快照视图、生成时间及计算结果。含个人持仓，请自行保管。

```bash
node --experimental-strip-types scripts/reproduce-strategy-comparison.mts \
  --file comparison.json --out verified.json
```

工具精确重算占比与差异，并验证导出摘要。它不独立核验模型准入、原始数据真实性、当前服务端状态、当前成员权限或报价真实性；对应证明标志明确为false。校验和用于检测不一致，不是第三方签名。

## 交付边界

此版复用工作区成员访问，不提供跨工作区付费策略目录或新的客户授权体系。空目录不会自动建立模型；真实模型需按研究准入流程准备。未增加数据库表、迁移、定时任务、外部行情调用或交易执行。比较结果不在服务端持久化，恢复后须重新读取并核验原来源。
