aslan-h5/docs/活动页/建页操作模板.md

448 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 建页操作模板
这份文档只回答一个问题:你要怎么操作,才能让我快速生成 `src/views/Activities``src/views/Ranking` 的初版页面。
真正建页时不需要一次说完整需求。推荐先让我创建一份“页面创建信息 md”你在里面按坑位填写你没填的项我生成初版时先不处理。
相关资料:
- [建页资料库.md](./建页资料库.md):组件用法、常用图片名、配置选项。
- [建页执行流程.md](./建页执行流程.md):我真正执行建页时遵守的流程。
- [快速建立活动页方案.md](./快速建立活动页方案.md):文档入口和总览。
## 1. 推荐操作流程
第一次只告诉我页面名称和创建位置:
```text
新建活动页LuckyDollars Season7
创建位置src/views/Activities/LuckyDollars/Season7
```
或者:
```text
新建排行榜页Overall Season2
创建位置src/views/Ranking/OverallSeason2
```
我收到后只做一件事:在 `docs/活动页/` 下创建专属页面信息 md例如
```text
docs/活动页/LuckyDollars-Season7-创建信息.md
```
这份 md 会先填好:
```text
页面类型
页面名称
页面目录
route path
route name
OSS 相对路径
本地开发目录
```
其中 `route path``route name` 会根据页面类型、页面名称、页面目录自动生成。你有特殊需求时,直接在 md 里改掉即可。
`OSS 相对路径``本地开发目录` 也会根据页面类型和页面目录自动生成。你只需要选择是否让我自动创建本地开发目录。
其它信息会尽量由图片扫描和模块预设先填好;只有无法推断的地方才留给你补。
你填完后,再告诉我:
```text
按 docs/活动页/LuckyDollars-Season7-创建信息.md 继续生成初版页面
```
我再根据你填写的信息创建页面、配置、路由、权限、本地 OSS 目录,并把执行结果写回这份专属 md。
## 2. 填写规则
- 模块配置:优先由 Codex 根据页面类型、扫描图片和参考页面自动预设;你只改不符合预期的地方。
- 图片名和模块图片:优先从 `3.1 多语言图片清单` 和模块预设中自动推断,通常不用额外填写。
- 模块接口:常见模块会自动预设,例如抽奖、奖池、任务、排行榜、中奖历史这类接口不用每次手写。
- 没填且无法推断的模块:我先不实现,或标记为“待确认”。
- 参考页面只作为结构和接口参考,不代表新页面就是复制旧页面。
- 初版页面只保证结构、路径、接口位置、基础交互可用,图片对位和局部样式后续你再微调。
- 需要你填写的模块配置、接口参数、组件需求,尽量使用 JSON 代码块,避免用 Markdown 表格对齐。
## 3. 专属页面信息 md 模板
我创建专属页面信息 md 时使用下面模板。基础信息会先填好,模块、预加载和图片用途会尽量根据扫描结果自动预设。
````md
# 页面创建信息
## 1. 基础信息
- 页面类型Activities / Ranking
- 页面名称:
- 页面目录:
- 参考页面:
- 备注:
## 2. 路由和权限
- route path
- route name
- 是否需要登录:是 / 否
- 是否加入 `src/config/security.js`:是 / 否
- 是否加入 `src/utils/permissionManager.js`:是 / 否
说明:`route path` 和 `route name` 由 Codex 先自动生成,你可以按需要修改。
生成规则:
| 页面类型 | 示例目录 | route path | route name |
| --- | --- | --- | --- |
| Activities | `src/views/Activities/LuckyDollars/Season6` | `/activities/lucky-dollars-season6` | `lucky-dollars-season6` |
| Ranking | `src/views/Ranking/OverallSeason2` | `/ranking/overall-season2` | `overall-season2` |
### 2.1 路由、白名单、权限片段说明
专属页面信息 md 中可以展示这三个片段,但不需要你重复填写:
```text
路由代码片段:使用 route path、route name 和页面目录生成。
安全白名单片段:值等于 route path补充到 src/config/security.js。
权限页面片段:值等于 route path后面注释使用页面名称补充到 src/utils/permissionManager.js。
```
示例:
```js
'/activities/lucky-dollars-season6'
'/activities/lucky-dollars-season6' // LuckyDollars Season6
```
## 3. OSS 图片目录
- OSS 相对路径:
- 本地开发目录:
- 是否需要 Codex 自动创建本地开发目录:是 / 否
- 图片是否已放入本地目录:是 / 否
说明OSS 相对路径和本地开发目录由 Codex 自动预填。
生成规则:
| 页面类型 | 示例页面目录 | OSS 相对路径 | 本地开发目录 |
| --- | --- | --- | --- |
| Activities | `src/views/Activities/LuckyDollars/Season6` | `Activities/LuckyDollars/Season6/` | `public/oss/h5/Azizi/Activities/LuckyDollars/Season6/` |
| Ranking | `src/views/Ranking/OverallSeason2` | `Ranking/OverallSeason2/` | `public/oss/h5/Azizi/Ranking/OverallSeason2/` |
如果“是否需要 Codex 自动创建本地开发目录”填“是”Codex 建页时会创建该目录,方便你直接把图片放进去。
### 3.1 多语言图片清单
这部分可由 Codex 扫描本地开发目录自动生成。规则:
- 无后缀图片视为 `en` 原图,例如 `rankBt.png`。
- `_ar`、`_bn`、`_tr` 这类后缀视为对应语言,例如 `rankBt_ar.png`。
- 扫描时会按基础图片名合并语言,例如 `rankBt.png` + `rankBt_ar.png` 生成 `rankBt | en, ar`。
- 图片清单按图片名首字母排序,排序时忽略大小写,方便你快速找图。
- 备注优先按 [建页资料库.md](./建页资料库.md) 的常用图片名整理成中文用途,例如 `bg0` 写“页面背景第 0 段”,`rankBt` 写“排行榜按钮”。
- 如果资料库里没有对应图片名Codex 可以按图片名语义自己起中文用途,例如 `taskTalk` 推断为“聊天任务图标”,`RewardRecharge500` 推断为“充值 500 奖励图”。
- 新页面推荐用 `rankingTopBg` 表示“排行榜前几名展示区背景”;历史图片名 `topBg` 也按这个含义识别,不再按“页面顶部背景”处理。
- 其它语言后缀可按页面实际情况扩展;没识别到对应语言图片时,页面代码回退使用原图。
- 页面生成时不再单独填写“多语言图片规则”,直接以这张清单为准。
| 图片名 | 支持语言 | 备注 |
| --- | --- | --- |
| | | Codex 扫描并匹配或推断中文用途,必要时你再改 |
### 3.2 进入页面前同步预加载图片
这里填写需要和进入页面预加载动画同步的关键图片。Codex 生成页面时会先等待这些图片加载完成,再结束加载动画。
| 图片名 | 是否包含多语言 | 备注 |
| --- | --- | --- |
| | | |
### 3.3 进入页面后后台预加载图片
这里填写不参与进入页面动画、但希望进入页面后继续自动预加载的图片。适合下方长背景、弹窗图、非默认标签页图片、抽奖结果图等。
| 图片名 | 是否包含多语言 | 备注 |
| --- | --- | --- |
| | | |
## 4. 模块配置
这一部分会优先由 Codex 根据页面类型、扫描到的图片名和参考页面自动预设。你只需要改不符合预期的部分;删除或设为 `false` 的模块,初版页面会跳过。
### 4.1 标签页模块
填写方式:
```json
{
"enabled": "",
"defaultValue": "",
"items": [
{
"value": "reward",
"labelKey": "recharge_reward",
"buttonImage": "rewardBt",
"activeButtonImage": "rewardBtActive",
"remark": "奖励"
},
{
"value": "ranking",
"labelKey": "ranking",
"buttonImage": "rankBt",
"activeButtonImage": "rankBtActive",
"remark": "排行榜"
}
]
}
```
### 4.2 页面区块模块
常见区块:
```json
[
{
"name": "reward",
"enabled": "",
"apis": [],
"images": [],
"remark": "奖励区块"
},
{
"name": "ranking",
"enabled": "",
"apis": [],
"images": [],
"remark": "排行榜区块"
},
{
"name": "lottery",
"enabled": "",
"apis": [],
"images": [],
"remark": "抽奖区块"
},
{
"name": "task",
"enabled": "",
"apis": [],
"images": [],
"remark": "任务区块"
},
{
"name": "withdraw",
"enabled": "",
"apis": [],
"images": [],
"remark": "提现/兑换区块"
},
{
"name": "countdown",
"enabled": "",
"apis": [],
"images": [],
"remark": "倒计时区块"
}
]
```
### 4.3 弹窗模块
常见弹窗:
```json
[
{
"name": "rule",
"triggerImage": "",
"backgroundImage": "",
"contentImage": "",
"apis": [],
"remark": "规则弹窗"
},
{
"name": "help",
"triggerImage": "",
"backgroundImage": "",
"contentImage": "",
"apis": [],
"remark": "帮助弹窗"
},
{
"name": "history",
"triggerImage": "",
"backgroundImage": "",
"contentImage": "",
"apis": [],
"remark": "历史记录弹窗"
},
{
"name": "result",
"triggerImage": "",
"backgroundImage": "",
"contentImage": "",
"apis": [],
"remark": "中奖结果弹窗"
},
{
"name": "rewardDetail",
"triggerImage": "",
"backgroundImage": "",
"contentImage": "",
"apis": [],
"remark": "奖励详情弹窗"
}
]
```
### 4.4 排行榜模块
```json
{
"enabled": "",
"api": "",
"loadMode": "remote / local",
"pageSize": "",
"topCount": "",
"myRankingPath": "",
"fieldMap": {
"avatar": "",
"name": "",
"value": "",
"userId": "",
"rank": ""
}
}
```
### 4.5 抽奖模块
```json
{
"enabled": "",
"drawApis": [],
"prizePoolApi": "",
"drawCountApi": "",
"extraApis": [],
"displayMode": "track-only / prize-card / custom",
"slotCount": "",
"centerButtonPosition": "",
"historyButtonPosition": "inside / below / absolute / external / hidden",
"images": {
"background": "",
"activeFrame": "",
"singleDrawButton": "",
"multiDrawButton": "",
"historyButton": "",
"resultBackground": ""
},
"remark": ""
}
```
## 5. 接口参数
```json
{
"activityId": "",
"activityCode": "",
"activityType": "",
"rankingActivityType": "",
"rewardActivityType": "",
"otherParams": {}
}
```
## 6. 组件需求
需要哪个就填“是”,不需要或没填的我先不接。
```json
[
{
"name": "BackgroundLayer",
"enabled": "",
"remark": "长背景分段"
},
{
"name": "itemCenter",
"enabled": "",
"remark": "图片容器"
},
{
"name": "topUser / TopUser",
"enabled": "",
"remark": "前三名用户展示"
},
{
"name": "Barrage",
"enabled": "",
"remark": "弹幕"
},
{
"name": "ActivityTabs",
"enabled": "",
"remark": "标签页"
},
{
"name": "ActivityLotteryGrid",
"enabled": "",
"remark": "抽奖格子"
}
]
```
## 7. 建页后记录
这部分由 Codex 建页后填写。
### 7.1 已完成
-
### 7.2 未填写所以跳过
-
### 7.3 待你微调
-
### 7.4 验证结果
- `npm run build`
- 备注:
````
## 4. 预设选项说明
这些选项填到专属页面信息 md 时,按下面含义理解。
| 选项 | 可选值 | 说明 |
| --- | --- | --- |
| 页面类型 | `Activities` / `Ranking` | 活动页或排行榜页 |
| 预加载方式 | `同步预加载` / `后台预加载` | 同步预加载参与进入动画,后台预加载不阻塞进入页面 |
| 排行榜加载方式 | `remote` / `local` | `remote` 为接口分页,`local` 为前端切片 |
| 抽奖展示方式 | `track-only` / `prize-card` / `custom` | 只转框 / 显示奖品卡 / 自定义格子 |
| 历史按钮位置 | `inside` / `below` / `absolute` / `external` / `hidden` | 抽奖历史按钮放置方式 |
## 5. 初版页面完成后你检查什么
```text
页面能打开
图片路径不 404
切语言时图片后缀符合预期
路由能进入
security 和 permissionManager 已补
排行榜能首屏展示
上拉加载策略正确remote 请求下一页 / local slice 下一段
抽奖点击后有高亮转圈,并能停到中奖位置
弹窗能打开关闭
npm run build 通过
```