# P08 建圈申请 · 设计说明（create-circle.vue）

> 单元：`create-circle` ｜ group=community（辅助） ｜ P08 ｜ 依据：pages.json unit#16 + 规格表 P08 建圈入口 + 执行方案 §5.16
> 实现：`vue/src/pages/create-circle.vue` ｜ 状态帧 fixtures：`design/fixtures/community.states.json`

## 1. 区块与字段对照

| 字段/区块 | 实现落点 | 校验（C 维度） |
|---|---|---|
| ① 圈名 12 字 | input maxlength=12 | 必填；失焦校验「请输入圈名」红字；计数 n/12 |
| ② 简介 100 字+计数 | textarea maxlength=100 | 必填；失焦校验「请输入圈子简介」；计数 n/100 |
| ③ 封面 1 张 | 上传位（选择后 .ph 预览 + 「换一张」） | 必选语义；选择动作 toast（Upload 白名单语义） |
| ④ 审核说明 | 蓝底提示卡：「建圈需后台审核，通常 1-3 个工作日【占位】；结果经消息中心通知；未通过可修改重提」 | 预期管理 |
| ⑤ 提交 | footbar block（submitting=loading 锁「提交中…」） | 空字段提交拦截定位 |

## 2. 状态帧（board_parts=2）

| 帧 | 渲染 |
|---|---|
| normal | 预填示意表单（7/12 圈名、40/100 简介、未选封面） |
| submitting | 提交按钮 loading 锁（防连点成帧）；**对比度修复（2026-10-10 验收看查）**：loading/禁用态由共享 AppButton 白字 opacity .45（实测 1.48:1）改为本页作用域覆盖「深粉字浅粉底 5.38:1」，共享组件不改 |
| success | 「已提交，等待后台审核」+ 1-3 工作日【占位】+返回圈子→circle（**≠建圈成功**） |
| error | ErrorRetry「提交失败，表单内容已保留」 |
| guest | 登录引导 Sheet（建圈必登录） |
| empty / extreme | N/A（pages.json na_reason：表单页无列表空态；12/100 字顶格并入 normal 校验提示，无独立信息增量） |

## 3. 九维度

- **A**：提交状态机 normal→submitting→success/error；审核≠成功的语义显式。
- **B**：提交 loading 锁；失焦校验；封面删除/更换二次动作 toast。
- **C**：见 §1 逐字段（键盘 text、确认键 next、错误红字在字段下方 FormField emsg）。
- **D**：计数 n/上限；【占位】时限显式标注。
- **E**：返回→circle；success→circle；无弹层堆叠（guest Sheet 可点遮罩关）。
- **F**：按 §0.5。
- **G**：N/A——轻表单（pages.json dims 同口径：无大资源）。
- **H**：必填 * + 文字双通道；红字过 --price-deep 对比度（6.32:1）。
- **I**：POST /circles（toast 演示，不接真实接口）。

## 4. 决策触点 → 字段/组件

| 决策点 | 落点 |
|---|---|
| 建圈需审核的预期管理 | 审核说明卡 + success 帧「等待后台审核」 |

## 5. 占位与素材缺口

- 封面槽位：manifest 无 circle-cover 素材（缺口已登记）→ 预览一律 .ph「示意图」，不冒充实拍。
- 示例圈名/简介文案=页内示意占位（fixtures placeholderEntries）。
- 「1-3 个工作日」=【占位】后台可配参数。
- **修不掉登记（2026-10-10 验收看查）**：device-393.png 存在渲染画布错配——页面按 393×852 正确渲染（375 版 hero/normal flex 布局自适应无缺），但截图输出被裁进 750×1624（375×812@2x）画布：右缘计数贴边、按钮下缘/footnote 被裁。根因在 `scripts/render.py` 输出管线（device-393 系列全站同规格），非本页布局缺陷；本组无权改共享脚本，待底座修复后重拍复验。
