# Dada Feature Summary 1.1 版本

## 1. 文档定位

| 项目 | 说明 |
| --- | --- |
| 唯一需求来源 | `PRD.md` v1.10，状态为“P0-A 本机测试需求冻结稿” |
| 当前交付 | 仅 P0-A |
| 文档用途 | 为后续 `DevelopmentPlan.md` 提供范围导航、需求索引、状态与契约入口；不替代 PRD，不增加或重新解释需求 |
| 冲突处理 | 本文与 PRD 不一致时以 PRD 为准；产品行为变化必须先升版 PRD |
| 非本文件职责 | 不定义技术选型、数据库/API 结构、UI 细节、测试步骤或任务拆分 |

P0-A 是只在项目方当前 Windows 电脑运行的单机测试版：本地网页连接本地后端，本地后端只监听 localhost，并把业务数据保存到本机 `LocalDataRoot`。正式支持环境仅为该电脑上的当前稳定版 Chrome 和 Edge；其他浏览器及不受支持的 Chrome/Edge 版本只能进入无绕过入口的“浏览器不受支持”引导页，不能进入任何产品功能。

页面或设置区域必须持续显示：

> 测试数据仅保存在本机，不自动备份，也不会迁移到正式系统。

## 2. 产品目标与核心闭环

Dada 面向受邀的图片创作者。普通用户通过邀请码和邮箱验证码注册，填写创作署名与社交 ID，使用三个 AI 模型之一生成底图，在电脑画布中添加和编辑文字模板、普通贴纸、色卡及动态贴纸，由本地后端自动保存项目，最后下载 JPG/PNG 成品；用户也可在同一电脑再次打开项目、查看历史并下载原始生成图或已保存的最新成品。

核心闭环为：

`邀请注册或邮箱登录 -> 查看点数与模型限制 -> AI 生图 -> 电脑画布编辑 -> 本地后端自动保存 -> 下载 JPG/PNG -> 同机继续处理或再次下载`

P0-A 的目标是验证上述完整闭环、三模型契约、点数原子结算、素材还原、本机数据边界、管理员运营和审计能力，不以远程部署或扩大参与人数代替产品验收。

## 3. 阶段边界

| 范围 | 定位 | 关键边界 |
| --- | --- | --- |
| P0-A，当前交付 | 当前 Windows 电脑上的 localhost 单机测试版 | 本地网页、本地后端、本机磁盘；最多 10 个普通账号；电脑完整编辑；核心复杂模板白名单；全部 1,407 张初始规范普通贴纸；只允许本机当前稳定版 Chrome/Edge 进入产品，其他浏览器和不支持版本硬阻断 |
| P0-B，未来阶段 | 公司系统合并后的完整 P0 | 最多 50 个普通账号；全部规定素材一次性公开；正式存储与远程部署；正式数据隔离；手机完整编辑；必须满足第 10 节全部门槛后另行开放 |
| P1，后续候选 | 不属于 P0-A | 上传本地底图、空白纯色/渐变画布、为既有普通贴纸补标题和关键词后开放搜索、公开注册准备、高德公司主体迁移评估、公开合规与完整条款 |
| 明确不做 | 当前 PRD 已排除 | 付费订阅和在线支付、小红书账号绑定或直接发布、多页图组和批量生成、社区、脱离模板的普通文字、用户上传自定义贴纸、AI 生成贴纸、GIF/视频导出、复制生成、完整封面模板、提示词优化、局部重绘、去背景、专业调色、协作、项目版本历史、分组及图层面板/隐藏/锁定 |

P0-A 不提供手机、局域网、远程访问或跨设备流程，不使用 COS、公司对象存储、公司服务器、备案域名、HTTPS 站点或其他远程文件存储。P0-A 后端仍需从本机向 AI 网关、Resend 和高德发起必要的外网 HTTPS 请求。

## 4. 用户与权限边界

| 身份或主体 | 能力边界 |
| --- | --- |
| 访客 | 通过浏览器支持检查后可访问独立注册和登录入口；未登录时只能读取 `public_release_asset` 的公开只读资源，不能访问项目、私有图片、内部预览或后台；未通过检查时只能看到无继续入口的阻断引导页 |
| 普通用户 | 通过有效邀请码和 Resend 邮箱验证码注册，或以已注册邮箱验证码登录；管理自己的资料、点数、项目、生成历史、私有资源和导出；不能访问其他用户内容或后台 |
| 获内部预览授权的普通用户 | 仍是普通用户，只能额外查看 `AssetPreviewGrant` 授权批次中 `internal_preview` 或 `passed` 的复杂模板；不获得后台、调点、模型配置、邀请码或私有内容权限 |
| `super_admin` | P0 唯一后台角色；管理邀请码、账号状态、点数、模型配置、普通贴纸、素材版本、内部预览、生成记录、辅助服务和审计；确认私有内容告知后按规定打开私有内容并产生独立访问审计；可确认并显式清理符合条件的无引用历史上传贴纸文件 |
| 部署人员 | 维护当前阶段后端安全配置；不是 Dada 用户或后台角色，没有产品账号、登录入口、后台会话或产品权限；配置生效由 `system` 审计 |

P0 允许存在多个权限相同的 `super_admin`，第二个白名单邮箱可创建独立备用管理员。P0-A 人工验收固定使用项目方控制的 1 个 `super_admin` 和 1 个普通账号；跨普通用户隔离由测试程序在同机独立浏览器配置中临时创建第二个普通账号验证并清理。`super_admin` 不占普通账号名额。

私有内容区域的全局提示确认按“`super_admin` 身份 + 告知版本”持久记录，不按浏览器、标签页或会话记录；同一身份确认同一版本后不重复显示，告知文案升版后重新提示。该确认不替代逐次审计，每次打开图片或完整提示词仍写入独立 `PrivateContentAccessLog`。

账号状态只有 `active`、`suspended`、`deleted`。`active` 和 `suspended` 普通账号占用名额，`deleted` 释放名额；注销后旧数据不可恢复，原邮箱只能用新邀请码创建全新账号。

## 5. P0-A 功能摘要与追踪矩阵

下表只承担 PRD 与 AC 导航作用。AC 索引已按第 22 节分类表过滤，不把未来 P0-B 场景纳入当前实现。

| 模块 | P0-A 摘要 | PRD 索引 | 当前 AC 索引 |
| --- | --- | --- | --- |
| 邀请注册与邮箱登录 | 独立注册/登录入口；邀请码在发码前校验；Resend 验证码；30 天会话；创作署名、社交 ID 和版本化内测告知；管理员邮箱白名单与独立后台认证。开发环境可由初始化脚本预置一个普通测试账号，但正式认证验收必须真实调用 Resend，预置账号不能作为验收证据 | AUTH-01 至 AUTH-07 | AC-01、02、22、33、41、45、47、49 |
| 点数与原子结算 | 新用户默认 10 点；模型默认每次 1 点且可配置；维护 `available_balance` 与 `reserved_balance`；提交时原子冻结，成功只提交一次，失败/拒绝只释放一次；只有带原因和流水的管理员调点可使可用余额为负 | CREDIT-01 至 CREDIT-06 | AC-03 至 05、28、29、40、51、53、55 |
| 三模型 AI 生图 | 支持 `gemini-3.1-flash-image-preview`、`gemini-3-pro-image-preview`、`gpt-image-2`；输入仅含提示词、模型、比例、可选参考图和生成按钮；比例为 3:4、1:1、4:3、9:16；每次一张图。同账号同时只能有一个 `queued` 或 `running` 任务，再次提交返回当前任务，不创建第二个任务或重复冻结点数。后台始终恰好有一个已启用默认模型，停用当前默认模型必须原子指定合法替代默认模型。每个模型具有唯一正整数 `recommendation_priority`；运行时只在当前可用于新任务的模型中按数值由小到大返回推荐模型，无可用模型时返回空推荐，运行时降级不得回写启停、默认或推荐优先级。三个模型必须分别完成契约验证，不能按名称推断相同协议 | GEN-01 至 GEN-16、ADMIN-03 | AC-03 至 06、28、30、34、40、41、44、51、53、55 |
| 项目、历史、保存与冲突 | 新建创作建立项目，项目内继续生成只追加历史；项目比例创建后固定；最多 20 个 active 项目、每项目 10 张成功图。默认名来自提示词摘要和创建日期，用户可重命名并触发自动保存。无成功图的 `failed_empty` 草稿可批量移入回收站，含成功图的项目不得混入该快捷操作。删除后保留 720 小时；P0-A 只处理同机多标签 `state_version` 冲突 | PROJECT-01 至 PROJECT-09、GEN-11、GEN-12 | AC-03 至 07、20、21、34、35、AC-36 的 P0-A 子集、AC-38 的 P0-A 子集、43、44、55、56 |
| 电脑画布与底图编辑 | 任何产品功能前先执行浏览器支持检查；仅本机当前稳定版 Chrome/Edge 可进入完整编辑器，其他浏览器和不支持版本硬阻断且无继续入口。编辑器支持选择、移动、缩放、旋转、翻转、透明度、复制、层级、对齐吸附、循环选择、长按候选、多选和框选；无图层面板。覆盖元素最多 50 个。底图支持裁剪、适配、亮度、对比度、饱和度、色温和固定滤镜；换底图保留覆盖元素并重置底图编辑状态 | EDITOR-01 至 EDITOR-09、GEN-12、NFR-01 | AC-07、14、20、24、27、32、35、AC-36 的 P0-A 子集 |
| 文字模板与字体 | 添加文字必须先选模板；P0-A 仅公开 32 个白名单模板及其实际引用字体，并包含 FONT081。模板按分类和 catalog 稳定顺序展示，支持显示名称搜索和账号级最近使用；切换模板保留文本、换行和变换；支持内容、填充、描边、背景、对齐、行距和字距等冻结能力。普通贴纸关键词搜索仍属于 P1 | TEXT-01 至 TEXT-14 | AC-09 至 12、19、32 |
| 25 个普通贴纸 part | 初始规范素材为 part1 至 part25 的 1,407 张 PNG，色卡和动态贴纸不计入这些 part。支持虚拟列表、懒加载和账号级最近使用。`super_admin` 可上传 PNG/WebP，配置稳定 ID、既有 part、顺序、启停和可选内部名称；上传原图及 Dada 生成的缩略图写入 `LocalDataRoot` 并计入 `managed_content_bytes`，只读规范素材库不计入。`full/unavailable` 阻断上传、缩略图生成和其他受管二进制写入。无引用历史上传文件只能由 `super_admin` 确认并审计后显式清理；下架只阻止新添加，已有项目按保存版本继续渲染 | STATIC-01 至 STATIC-04、ADMIN-06、第 17.7、17.19 节 | AC-13、14、27、31、32、41、46、48、50、55 |
| 色卡与动态贴纸 | P0-A 色卡仅启用 COLOR001、COLOR002、COLOR008、COLOR016；从当前底图未经裁剪、调色和滤镜处理的原始图片中在浏览器本地稳定提取五色，裁剪、调色或滤镜变化不重新提取。动态贴纸仅启用 DYN001-004、007、008、011、012、015、016，编辑时注入时间、地点或身份数据，导出为静态内容。DYN004 在调用定位前先告知原始坐标会保存到项目并显示在成品中，用户确认后才调用定位；DYN012 使用 FONT081 并标明替代字体 | COL-01 至 COL-05、DYN-01 至 DYN-09 | AC-07、AC-15 的 P0-A 子集、AC-16 至 19、32、41、47 |
| 导出 | 客户端按画布真实像素合成 JPG/PNG，无 Dada 水印；未提交文字或样式修改需确认，确认后形成一次撤销记录并导出，取消则不提交也不导出。下载文件与写入 `LocalDataRoot` 的成品必须来自同一次合成；每种格式只保留最新一份。后端持久化失败时仍可下载，但不得更新 `latest_exports` | EXPORT-01 至 EXPORT-06 | AC-23 的 P0-A 子集、24、27、35、AC-38 的 P0-A 子集、55、56 |
| 运营后台 | 邀请码、账号状态、点数、模型默认与推荐配置、普通贴纸及无引用历史文件显式清理、素材版本、内部预览批次与授权、生成记录、辅助服务、操作审计和私有内容访问；私有内容列表默认隐藏正文，区域提示按管理员身份与告知版本持久确认，文案升版后重新提示，每次打开仍记录独立审计。P0 只有一种后台角色，但可有多个管理员账号 | AUTH-07、CREDIT-06、ADMIN-01 至 ADMIN-09 | AC-25、29 至 31、41、42、45、47、49 至 52、55 |
| 素材发布与内部预览 | 复杂模板按稳定 ID、版本和发布状态注册；P0-A 普通用户只见已通过且已启用的白名单。授权测试账号可见授权批次中的 `internal_preview` 或 `passed`；剩余 `full_p0` 模板可分批验收，但不能逐批向普通用户公开。公开、内部预览、用户私有三类资源严格隔离 | STATIC-04、ADMIN-06、ADMIN-07、NFR-07、第 17.6、17.11 至 17.14 节、第 18 节 | AC-31、32、41、42、46、48 |
| 本机数据与资源访问 | `LocalDataRoot` 与只读素材根目录分离；业务数据、后台上传普通贴纸原图和缩略图由本地后端写入本机磁盘，后两类计入 `managed_content_bytes`，只读规范素材库不计入。浏览器只用资源 ID 访问，不得取得目录绝对路径。`LocalBackendStorageState` 执行 5 GB 内容上限及 80%/90% 预警；`full/unavailable` 阻断新增受管二进制写入，历史上传贴纸文件不得自动清理，物理清理并重新计量后才更新容量状态。数据不自动备份、不迁移、不提供可编辑项目归档 | PROJECT-04 至 PROJECT-09、STATIC-04、ADMIN-06、NFR-07、NFR-09、第 17.19、18.9、18.10、23.4 节 | AC-20、24、31、35、AC-36 的 P0-A 子集、41、46、48、50、55、56 |
| 隐私、审计与免费服务边界 | API 密钥只在本地后端安全配置；用户内容私有；私有内容区域提示按 `super_admin` 身份与告知版本持久确认，告知升版后重新提示且每次打开继续写访问审计；注销立即删除业务内容，匿名事件和审计最多保留 180 天；Resend 与高德达到应用硬上限或供应商不可用时硬停止，不启用付费备用、自动购买或自动扩容；AI 网关不开自动充值 | PRIV-01 至 PRIV-06、NFR-05、NFR-08、ADMIN-05、ADMIN-08、ADMIN-09、第 23.1 至 23.5 节 | AC-22、25、39 至 41、47、49 至 53、56 |

v1.10 重点变更的 AC 导航为：AC-24（不支持浏览器硬阻断）、AC-25（私有内容告知持久化与逐次审计）、AC-30（默认模型原子替换与运行时推荐）、AC-31（贴纸容量、写入阻断与显式清理）、AC-50（贴纸清理审计）、AC-51（运行时不可用不回写模型配置）和 AC-55（本机容量计量与恢复）。

### 5.1 P0-A 复杂素材白名单

| 类型 | 当前普通用户可见范围 |
| --- | --- |
| 文字模板 | FLOWER001-008、H001-008、TAG001-007、TAG051、SIMPLE001-008，共 32 个 |
| 字体 | P0-A 仅显示白名单模板实际引用的字体面板项，并强制包含 FONT081；不显示白名单之外的其他字体项 |
| 色卡 | COLOR001、COLOR002、COLOR008、COLOR016，共 4 个 |
| 动态贴纸 | DYN001、DYN002、DYN003、DYN004、DYN007、DYN008、DYN011、DYN012、DYN015、DYN016，共 10 个 |
| 普通贴纸 | part1 至 part25 的 1,407 张初始规范 PNG 全量可见；P0-A 不支持普通贴纸关键词搜索，该能力属于 P1 |

白名单外复杂模板必须先注册，但对未授权普通用户不可发现；获授权内部测试账号仍可查看其授权批次中的 `internal_preview` 或 `passed` 模板。`full_p0` 模板可以分批进入 `passed`，只能在 P0-B 全部门槛满足后一次性改为 `enabled`。

## 6. 关键状态与规则

| 对象 | 状态与导航规则 |
| --- | --- |
| 浏览器支持检查 | 本机当前稳定版 Chrome/Edge 通过检查后才可进入产品；其他浏览器或不受支持版本只进入“浏览器不受支持”引导页，不提供继续或绕过入口 |
| 账号 | `active`、`suspended`、`deleted`；暂停账号不能注册或登录，注销立即失效且旧数据不可恢复 |
| `UserProfile` 私有内容告知确认 | 确认按 `super_admin` 身份与告知版本持久记录；同一版本不因新标签页、重启或重新登录重复提示，告知升版后重新提示；每次打开私有内容仍独立写入 `PrivateContentAccessLog` |
| `ModelConfig` 默认与推荐 | 所有配置中始终恰好有一个已启用默认模型；停用当前默认模型与指定合法替代模型必须原子成功或整体失败。`recommendation_priority` 为不并列的唯一正整数，1 最高；缺失、非正整数或重复时整次配置保存失败且不部分写入。运行时推荐只从当前可用于新任务的模型派生，无可用模型时为空，不形成第二个默认状态或回写配置 |
| `GenerationJob` | `queued`、`running`、`succeeded`、`failed`、`rejected`；同账号已有 `queued` 或 `running` 时不创建第二个任务；成功只提交一次冻结点，失败或拒绝只释放一次 |
| `Project` | `active`、`trashed`、`purged`；只有 active 计入 20 个上限，trashed 在 `deleted_at + 720 小时` 前可在名额允许时恢复，purged 用户侧不可恢复 |
| `save_status` | `saved`、`dirty`、`saving`、`failed`、`conflicted`；刷新、关闭或崩溃后只恢复最后一次本地后端 `saved` 状态，浏览器不保存可恢复的私有草稿 |
| `TemplateRegistry.release_status` | `imported`、`internal_preview`、`passed`、`enabled`、`disabled`；授权测试账号可见授权批次中的 `internal_preview` 或 `passed`，`full_p0` 不得据此逐批公开 |
| `ExternalServiceUsage.service_status` | `active`、`paused_quota`、`paused_provider`、`disabled`；发布前送达测试失败只阻止发布，不创建运行时质量状态。只有免费周期或供应商可用条件重新满足后，`super_admin` 才能恢复暂停服务并留下后台审计 |
| `GatewayBalanceState` | 余额为可用、不足或无法可靠确认；影响范围为模型、账户或未知。模型级只把对应模型标记为运行时不可用，账户级或未知处理共享结算账户的全部模型；不得改写 `ModelConfig.enabled`、`is_default` 或 `recommendation_priority`，确认真实余额恢复后才可由 `super_admin` 恢复运行时可用状态并审计 |
| `LocalBackendStorageState` | `capacity_notice_level` 为 `normal`、`warning`、`critical`；`storage_status` 为 `active`、`full`、`unavailable`。受管内容包含后台上传普通贴纸原图和缩略图，不含只读规范素材；`full/unavailable` 阻断上传和缩略图生成，清理后的容量状态只在物理清理和重新计量后更新，详见第 8 节 |
| 历史上传贴纸清理 | 只允许 `super_admin` 确认并显式清理不再被任何已发布版本或项目引用的原图/缩略图；仍有引用时拒绝整个操作，清理请求、校验和结果均审计，物理清理与重新计量前不更新容量状态 |

### 6.1 九类生成错误

| 分类 | 用户动作 | 任务与点数 |
| --- | --- | --- |
| `upstream_timeout` | 使用原输入重试 | `failed`，释放冻结点 |
| `upstream_failed` | 稍后重试 | `failed`，释放冻结点 |
| `safety_rejected` | 修改提示词或参考图 | `rejected`，释放冻结点 |
| `model_disabled` | 选择其他模型或等待 | 不创建任务、不冻结点 |
| `gateway_balance_insufficient` | 选择未受影响模型或联系管理员 | 未创建则不冻结；已创建则 `failed` 并释放 |
| `gateway_contract_invalid` | 选择其他模型或联系管理员 | 未创建则不冻结；已创建则 `failed` 并释放 |
| `reference_invalid` | 更换或移除参考图 | 未创建则不冻结；已创建则 `failed` 并释放 |
| `unknown_retryable` | 稍后重试 | `failed`，释放冻结点 |
| `unknown_non_retryable` | 联系管理员 | `failed`，释放冻结点 |

`reference_invalid` 沿用 PRD 的“参考图格式、大小、数量或内容无效”边界；供应商安全策略拒绝提示词或参考图时使用 `safety_rejected`。三个模型共用固定分类。P0 使用统一 `config_version`，错误映射变化递增该版本，不拆分错误映射版本；后台不能新增、重命名或删除分类。

## 7. 十九个产品数据契约导航

本节只说明用途，不复制或重新设计字段。

| 契约 | 用途 |
| --- | --- |
| `UserProfile` | 账号身份、资料、角色、状态、注册告知同意、`super_admin` 最近确认的私有内容告知版本与时间，以及注销时间的产品记录 |
| `ModelConfig` | 每模型启停、唯一已启用默认模型、唯一正整数推荐优先级、点数、输入限制、网关路由、契约验证和统一版本复核 |
| `Project` | 项目比例、底图、生成历史、画布、最新成品、版本和保存状态；同时表达 `draft_state`、`batch_deletable`、回收站时间及清理边界 |
| `GenerationJob` | 每次生成的配置快照、任务状态、参考图关系、点数和错误分类 |
| `CanvasElement` | 文字、普通贴纸、色卡和动态贴纸的通用画布状态与类型专用数据 |
| `TemplateRegistry` | 复杂模板稳定 ID、资源版本、验证、批次、发布层级和可见状态 |
| `StaticStickerCatalog` | 普通贴纸稳定 ID、既有 part、顺序、资源引用、版本、启停状态与 `bundled_read_only/admin_uploaded` 来源分类；后台上传文件受容量计量和无引用显式清理规则约束 |
| `DynamicStickerData` | 动态贴纸类型、原始/格式化值、覆盖值及 DYN004 授权坐标 |
| `CreditAccount` 与 `CreditLedger` | 可用/冻结余额，以及初始化、管理员调点、冻结、提交和释放的不可变流水 |
| `PrivateContentAccessLog` | `super_admin` 每次打开私有图片或完整提示词时产生的独立 180 天审计，不因全局提示已确认而省略 |
| `AnonymousRetainedEvent` | 注销后保留的不可回溯随机主体事件和有限统计字段 |
| `AssetReleaseManifest` | 版本化素材清单、哈希、资源类别与 P0-A `local_filesystem` 发布引用 |
| `AssetPreviewGrant` | 普通测试账号对指定内部模板批次的限时授权与撤销 |
| `ClientCachePolicy` | 公开素材主动缓存 150 MB 上限、LRU 和私有内容禁存规则 |
| `ExternalServiceUsage` | Resend/高德的周期用量、硬上限、暂停原因和恢复状态 |
| `AdminOperationLog` | 除私有内容查看外的后台敏感操作、普通贴纸历史文件清理请求/引用校验/结果，以及系统配置生效审计 |
| `GatewayBalanceState` | 网关余额、影响范围、运行时不可用模型和人工确认恢复；不改写模型启停、默认或推荐优先级 |
| `GenerationErrorCategory` | 三模型共享的固定错误、用户动作、重试和点数口径 |
| `LocalBackendStorageState` | P0-A 本机受管内容容量、80%/90% 提醒、5 GB 硬上限、可用状态和重计量时间；计入后台上传贴纸原图/缩略图，不计只读规范素材，清理完成后才更新状态 |

## 8. 本机数据与资源访问边界

### 8.1 `LocalDataRoot`

- `LocalDataRoot` 默认位于当前 Windows 用户的应用数据目录，由本地后端解析；必须可配置，且不得位于 Git 仓库、项目目录、用户主动下载目录或只读素材根目录。
- 本机数据库、账号、项目、参考图、生成图、导出成品、审计日志、派生文件，以及后台上传的普通贴纸原图和 Dada 生成的缩略图写入 `LocalDataRoot`。浏览器只通过资源 ID 和本地后端鉴权接口访问私有文件。
- 浏览器不得通过 `file://`、本机绝对路径或 File System Access API 读取 `LocalDataRoot` 或素材根目录；用户主动用标准文件选择器选择参考图不受此限制。
- 未保存画布、提示词、私有图片引用和编辑内容只存在当前页面内存，不写入 `localStorage`、`IndexedDB` 或 Cache Storage。强制刷新、关闭或崩溃后只恢复最后一次本地后端 `saved` 状态。
- P0-A 不创建自动备份，不提供可编辑项目包、数据库、账号、点数、审计日志或素材关系的导出/导入，也不把本机业务数据迁移到 P0-B。用户只能主动下载原始生成图和 JPG/PNG 成品。
- P0-A 不对本机文件实施 Dada 应用层加密，依赖当前 Windows 用户登录和文件系统权限；机器损坏、重装或删除 `LocalDataRoot` 后不可由 Dada 恢复。

### 8.2 容量与可用性

`hard_limit_bytes` 固定为 5,368,709,120 字节，对用户显示 5 GB。`managed_content_bytes` 统计参考图、生成图、导出成品、派生二进制文件，以及 `super_admin` 后台上传的普通贴纸原图和 Dada 生成的缩略图；不统计产品随安装包提供或通过本机安全配置原地引用的只读规范素材库、应用代码、150 MB 浏览器公开素材缓存、数据库元数据、审计记录或用户下载目录。

| 条件 | 状态与行为 |
| --- | --- |
| 低于 80% 且目录可写 | `normal` / `active`，正常写入 |
| 达到 80% 且低于 90% | `warning`，非阻断提醒；继续允许生图、保存、后台贴纸原图上传和缩略图生成，不自动删除 |
| 达到 90% 且低于 5 GB | `critical`，持续清理提醒；仍允许生图、保存、后台贴纸原图上传和缩略图生成，不自动删除 |
| 已达到或本次写入预计超过 5 GB | `full`；不创建新任务、不调用 AI、不冻结点数，不持久化新参考图、`latest_exports`、后台贴纸原图、缩略图或其他受管二进制内容；仍可编辑已有项目、读取和下载已有内容、只下载客户端导出、永久删除项目及显式清理符合条件的无引用历史贴纸文件 |
| `LocalDataRoot` 不可写或系统磁盘已满 | `unavailable`；停止新增写入、后台贴纸上传、缩略图生成和 AI 调用，保留已有项目及素材的查看、下载和删除入口 |

`warning` 和 `critical` 的清理引导顺序固定为：下载需保留的成品、永久删除不需要的项目或由 `super_admin` 显式清理符合条件的无引用历史贴纸文件、等待物理清理和重新测量、恢复后继续生成。历史上传原图和缩略图不得自动清理；只有不再被任何已发布版本或项目引用时，才能由 `super_admin` 确认后显式清理，清理请求、引用校验与结果必须写入不可修改的 `AdminOperationLog`，仍有引用时拒绝整个操作。只有物理清理完成并重新计量后，才能更新 `managed_content_bytes`、`capacity_notice_level`、`storage_status` 和 `last_measured_at`；容量低于硬上限且目录可写时才能恢复 `active`。

### 8.3 素材原地只读复用

P0-A 通过本地后端安全配置解析以下 `%USERPROFILE%` 路径。解析后的绝对路径不得进入 Git、普通项目数据或浏览器响应。

| 素材 | 只读入口 |
| --- | --- |
| 总交接 | `%USERPROFILE%\Desktop\sticker_web_handoff\STICKER_WEB_REPLICATION_HANDOFF.md` |
| 机器总 manifest | `%USERPROFILE%\Desktop\sticker_web_handoff\sticker_web_catalog_manifest.json` |
| 完整性报告 | `%USERPROFILE%\Desktop\sticker_web_handoff\sticker_archive_validation_20260722.json`，当前 `all_valid=true` |
| 文字模板 | `%USERPROFILE%\Desktop\sticker_text\模板\单模板归档`；分类 `catalog.csv` 与 `templates/<ID>/metadata.json` |
| 字体 | `%USERPROFILE%\Desktop\sticker_text\字体\面板全量采集\font_panel_full_20260722`；`reports/font_panel_catalog.csv` 与单字体 `metadata.json` |
| 文字行为资料 | `%USERPROFILE%\Desktop\sticker_text\键盘`、`%USERPROFILE%\Desktop\sticker_text\样式` |
| 普通贴纸 | `%USERPROFILE%\Desktop\贴纸素材`；`sticker_part1` 至 `sticker_part25`，共 1,407 张 PNG |
| 色卡 | `%USERPROFILE%\Desktop\sticker_colour\单模板归档`；`catalog.csv` 与 `styles/<ID>/metadata.json` |
| 动态贴纸 | `%USERPROFILE%\Desktop\sticker_interactive\单模板归档`；`catalog.csv` 与 `templates/<ID>/metadata.json` |

约 3.57 GB 规范素材在原目录只读复用，不复制全库、不提交 Git、不放入 `LocalDataRoot`，也不计入 `managed_content_bytes`。后台上传的普通贴纸原图和缩略图写入 `LocalDataRoot` 并计入容量，不得写回只读素材根目录。Git 只保存版本化 manifest、catalog、metadata、版本号和哈希。普通贴纸当前缺少统一 catalog，开发准备需生成 `StaticStickerCatalog`，但不得改写源素材。目录移动、改名、不可读或校验失败时，只暂停依赖功能并提示重新配置，不修改代码或自动复制素材。

## 9. P0-A 验收分类与发布准备

### 9.1 第 22 节 AC 分类

| 分类 | AC 范围 | `DevelopmentPlan.md` 处理规则 |
| --- | --- | --- |
| P0-A 必验 | AC-01 至 AC-07、AC-09 至 AC-14、AC-16 至 AC-22、AC-24 至 AC-25、AC-27 至 AC-35、AC-39 至 AC-53、AC-55 至 AC-56 | 必须拆入当前开发与验收任务 |
| 通用规则，当前只验 P0-A 子集 | AC-15、AC-23、AC-36、AC-38 | 只拆入下表列出的本机操作和预期 |
| P0-B 门槛与未来验收 | AC-08、AC-26、AC-37、AC-54 | 不属于当前交付，不得拆入当前迭代或阻止 P0-A 完成 |

AC-15、AC-23、AC-36、AC-38 的完整规则仍保留在 PRD；本节只筛选当前 P0-A 验收子集，并未删除其余规则。

四个通用 AC 的当前子集为：

| AC | P0-A 当前子集 |
| --- | --- |
| AC-15 | 仅验 COLOR001、COLOR002、COLOR008、COLOR016 四种色卡及其共同提色、换底图更新和原始底图边界 |
| AC-23 | 在四种比例导出 JPG/PNG，验证像素、画布一致性、未提交修改确认、每格式最新一份和同一电脑再次下载 |
| AC-36 | 仅验同一台 Windows 电脑两个标签页的 `state_version` 冲突、旧页只读、一次本地导出和刷新本地后端最新版本 |
| AC-38 | 仅验本机“暂无导出成品”空状态、进入编辑并导出、下载原始生成图，以及不自动创建默认成品 |

### 9.2 P0-A 启动门槛

AC-41 必须在实际验收开始前通过，重点包括：

- 本地网页和本地后端可启动，后端只监听 localhost，局域网地址和其他设备不能访问。
- 第 18 节素材根目录可读，manifest 与素材文件校验通过，且未复制第二套约 3.57 GB 全量素材。
- `LocalDataRoot` 独立、可写、未硬编码用户名；80%/90% 预警和 5 GB 限制可用。
- 正式验收账号真实调用 Resend；发信域名验证完成，QQ、163、企业邮箱各 20 封至少 19 封在 2 分钟内送达；应用硬上限为每天 80 封、每月 2,400 封，不配置付费备用通道。
- 高德个人 Web 服务 Key 的接口、绑定、安全限制和每月 1,000 次应用硬上限实测通过。
- AI 网关不开自动充值，三个模型的 AC-40 完整契约矩阵通过，模型级/账户级/未知影响范围的余额停用与恢复规则可用。
- 版本化内测告知、本机数据风险提示、150 MB 公开素材缓存上限和私有状态禁存通过。
- AI 网关、Resend、高德所需外网 HTTPS 调用可用，任何 API 密钥均未进入 PRD、Git、前端、manifest 或本机数据日志。

任一启动门槛失败时不得开始 P0-A 实际验收。开发初始化账号只用于并行开发，不能替代 AUTH-01、AUTH-02、AUTH-07、AC-01、AC-33、AC-41 或 AC-49。

## 10. P0-B 未来开放门槛

P0-B 仅作为未来阶段的不可弱化门槛记录，不是当前功能或当前完成条件。未经未来单独立项，不得纳入当前开发任务。向普通用户开放前必须同时满足：

- P0-A 验收已通过。
- 全量 332 个文字模板、86 个字体面板项、1,407 张初始规范普通贴纸、16 个色卡和 35 个动态贴纸完成规定验收。
- AC-26 全量跨平台视觉回归和 AC-37 手机横竖屏完整编辑通过。
- 所有白名单外复杂模板均为 `passed`，随后一次性切换为 `enabled`，不得逐批向普通用户开放。
- 普通账号阶段上限切换并验证为 50；公开 manifest 始终不含 `internal_preview_asset`。
- 三个模型在最后一次契约相关配置变化后均为 `verified`。
- 公司系统合并、正式存储后端、远程服务器、域名、HTTPS、正式数据隔离和移动端访问方案均已定版并验收。
- P0-A 本机账号、项目、点数、审计日志和素材关系不自动或手动导入 P0-B；用户下载的图片不是迁移包。

不能通过只扩大人数、只开放部分模板或只完成手机编辑来宣称进入 P0-B。AC-08、AC-26、AC-37、AC-54 及 AC-15/23/36/38 中的 P0-B 子集须在未来单独立项。

## 11. 后续 DevelopmentPlan 输入约束

以下条目仅作为 `DevelopmentPlan.md` 必须处理的约束索引。它们不代表实现顺序、技术选型或任务拆分；`DevelopmentPlan.md` 必须在完整阅读 PRD v1.10 和本文件后编写，并至少处理以下工程主题：

1. localhost 单机部署边界、启动方式、本地后端回环监听、进程与故障恢复，不引入 P0-B 基础设施。
2. 邀请码、Resend 验证码、30 天会话、管理员白名单、多 `super_admin`、开发初始化账号隔离和正式验收切换。
3. 点数事务、任务幂等、`queued/running` 单任务约束、提交时 `ModelConfig` 复核、默认模型原子替换、`recommendation_priority` 与运行时推荐、结算与失败释放。
4. 三模型独立适配器、脱敏契约证据、同步/异步差异、参考图生命周期、统一 `config_version` 和九类错误映射。
5. 项目/历史/失败草稿、自动保存、同机多标签冲突、撤销重做、回收站 720 小时与资源异步清理。
6. Chrome/Edge 支持版本硬检查与无绕过阻断、画布渲染、字体加载、导出一致性、50 元素性能预算及固定浏览器版本、Windows 版本、DPR、视口和动画基准；具体环境在后续 `tdd.md` 记录。
7. 只读素材根目录发现、manifest/catalog/metadata 校验、`StaticStickerCatalog` 生成、`asset_origin`、后台上传贴纸原图/缩略图、无引用显式清理、资源版本化、三类访问隔离和浏览器资源 ID 接口。
8. `LocalDataRoot` 布局、`LocalBackendStorageState` 计量与写入前预判、后台贴纸容量归属、80%/90% 提示、5 GB 硬停止、`full/unavailable` 上传与缩略图阻断、物理清理后重新计量、数据库/日志目录不可写、日志轮转和 180 天清理。
9. JPG/PNG 单次合成、下载与本地后端持久化一致性、失败降级及“只下载图片、无项目归档/迁移”的产品边界。
10. Resend、高德和 AI 网关的免费或余额硬停止、运行时不可用不回写模型默认/推荐配置、无自动费用、管理员确认恢复及审计。
11. 私有资源鉴权、按 `super_admin` 身份与告知版本持久确认私有内容提示、逐次访问审计、注销删除、匿名保留、密钥隔离和本机数据风险告知。
12. 严格按第 22 节 AC 分类进行任务拆分和测试分层；当前只实现 P0-A 必验项及 AC-15/23/36/38 的 P0-A 子集。

素材授权台账在正式公开或商业化前补齐，不改变当前 P0-A 或未来 P0-B 的既定阻塞规则。后续文档不得把 P0-B 门槛弱化为分批开放，也不得把未来能力写入当前 P0-A 实现。
