2.2 KiB
2.2 KiB
每日运势指南产品规格(DailyFortuneGuide)
1. 目标
- 依据用户的出生日期、时间、城市生成基础命盘,结合当日天干地支与天象输出六维度运势、吉祥元素、最佳行动时机。
- 指南内容在小程序内结构化展示,并保留最多 20 条本地历史记录。
- 每日最多计算 10 次,观看激励广告后才允许触发计算。
2. 页面与职责
| 页面 | 路径 | 职责 |
|---|---|---|
| 首页 | pages/home/index |
输入表单、校验、广告流程、触发生成、提示每日一次更准 |
| 结果页 | pages/result/index |
展示六维度评分、吉祥元素、命盘摘要与 AI 解读,可跳转历史 |
| 历史列表 | pages/history/index |
展示本地最多 20 条记录、支持查看详情 |
| 历史详情 | pages/history-detail/index |
还原指定记录的运势内容 |
3. 数据模型
FortuneForm:{ birthDate, birthTime, birthCity }FortuneResult: 后端DailyFortuneResponseHistoryItem:{ id, createdAt, formSnapshot, fortune }- 本地存储键:
fortune:quota:YYYYMMDDfortune:history
4. 交互规则
- 必填项缺失或城市长度 < 2 时阻止提交。
- 每次生成前必须成功播放激励视频广告;未完整观看给出提示。
- 每日调用次数达到
config.maxDailyQuota(默认 10)后禁止继续生成。 - 成功生成后强制写入历史,超出 20 条旧记录被淘汰。
- 历史记录详情可脱网查看,上一次生成的结果缓存在
store.currentFortune供结果页使用。
5. 接口
POST /api/daily-fortune/analyze- 请求:
{ birthDate, birthTime?, birthCity, birthProvince? } - 响应:
DailyFortuneResponse(命盘、六维运势、吉祥元素、AI narrative) - 错误码:
CONTENT_RISK、BIRTHDATE_INVALID、GENERATION_FAILED
- 请求:
6. 技术实现
- 统一在
store/fortuneStore.js管理表单、当前结果、配额和历史列表,遵循单一职责。 services/fortuneService.js封装请求;utils/adService.js复用激励广告逻辑;utils/storage.js包装tt存储 API。- 所有提示文案集中在
constants/messages.js。 - 页面样式遵循示例图的卡片化布局,移动端友好、对比度清晰。