Feature Spec: 星座
Status: Active · Map: 2.6 星座 [P2] · Phase: P2
规范:../feature-design.md · 队列:P2-BACKLOG.md
竞品对照:测测星座体系(本命排盘 · 运势大全 · 连线合盘)
1. 功能定义
| 字段 |
内容 |
| Name |
星座(StarProfile)+ 合盘(Synastry) |
| Purpose |
用生日(可选出生时/出生地)生成本命排盘、相位、日周月年/一生运势、行运速览;双人合盘(比较/组合/时空/马克斯/配对 + 次限推运)与恋爱/友情/婚姻指数 |
| Business Goal |
P2 探索供给;分享裂变;深度版/会员转化 |
| In |
Out |
| 圆形本命盘 + 宫位 + 相位预览 |
占卜/算命恐吓话术 |
| 日/周/月/年/一生运势 + 行运速览 |
医疗疗效承诺 |
| 合盘五主盘 + 三推运 + 三指数;附近/邀请 |
自称「测测」;达人市场/微信关系链拉取 |
| 多维 summary + 付费 detail |
|
挂 Profile;GrowthReport star / synastry |
|
2. 用户价值
- 为何需要: 用熟悉的星座语言认识自己的节奏、运势与互动偏好。
- 完成后获得: 本命轮盘、三大星座、行星/宫位、运势与行运;合盘页看五主盘、次限与三指数。
- 为何付费: 完整相位表、年运/一生深析、合盘相处长文、推运深文案与跨盘相位详解。
3. 用户角色
| Actor |
能力 |
| Visitor |
有档案可生成基础报告(轮盘 + 今日运势 + 合盘指数) |
| DeepAccess / VIP |
可见 detail(完整相位、年运/一生深析、合盘深文案) |
| 无档案 |
Empty → 页内填生日(可选时/地) |
4. 用户流程
5. 页面设计
| 路由 |
页面 |
说明 |
/star |
StarProfilePage |
星盘(轮盘)/ 运势 / 行星 |
/synastry |
SynastryPage |
五主盘 Tab + 次限 + 附近/邀请 + 深度墙 |
/synastry/invite/:token |
SynastryInvitePage |
好友接受邀请并生成合盘 |
/reports/:id |
ReportPage |
type=star / synastry 专用展示 |
/relation |
RelationPage |
人格匹配(行为风格,复用指数) |
/explore |
入口 |
排盘 / 合盘 |
6. 页面状态规范
| 状态 |
UI |
| Loading |
生成中 |
| Empty |
页内填生日(可选时/地) |
| Error |
重试 |
| Normal |
轮盘 + 运势基础层 |
| Locked |
深度版 CTA |
7. Business Rules
| ID |
Rule |
| R1 |
必须绑定用户可访问的 Profile;birth_date 必填 |
| R2 |
内容确定性:同档案输入 → 同报告(可版本化 seed) |
| R3 |
summary 始终对所有者可读;detail 需 Membership 或 DeepAccess |
| R4 |
允许运势分、吉凶分维文案、合盘缘分/匹配指数;禁止占卜/算命恐吓与疗效承诺 |
| R5 |
太阳/月亮/上升/行星标签须伴随探索免责(非宿命断言恐吓) |
| R6 |
与个人画像并存:画像偏行为模式;本模块偏星座星盘语言 |
| R7 |
文案过 lexicon;UI 主标题「星座」/「合盘」 |
| R8 |
合盘与人格匹配分流:/synastry 盘型;/relation 行为风格 |
| R9 |
附近的人默认 geo_visible=false;仅可见已开启位置的 self 档案 |
| R10 |
合盘星历走 Swiss Ephemeris(默认 Moshier);宫位制 Whole Sign |
8. 数据模型影响
| 表/字段 |
变更 |
growth_reports.type |
star · synastry |
profiles.birth_time |
可选参与上升/宫位 |
profiles.birth_place |
可选;常用城市表解析经纬度 |
profiles.geo_lat/lng/visible |
附近的人 |
synastry_invites |
邀请 token · host/guest · report_id |
| 报告 JSON |
charts.*(五主盘+推运)· as_of · 三指数 · fortune/transits |
详见 erd;实现切片同步 OpenAPI。
9. API 需求
| Method |
Path |
意图 |
| POST |
/api/v1/reports/star |
body: profile_id → GrowthReport |
| POST |
/api/v1/reports/synastry |
body: profile_id_a + profile_id_b + optional as_of |
| GET |
/api/v1/synastry/nearby |
lat/lng/radius_km → 可合盘对象 |
| POST |
/api/v1/synastry/invites |
生成邀请 |
| GET |
/api/v1/synastry/invites/{token} |
邀请元数据 |
| POST |
/api/v1/synastry/invites/{token}/accept |
接受并生成报告 |
| GET |
/api/v1/reports/{id} |
权益裁剪(复用) |
| POST |
/api/v1/orders + pay-mock |
深度版(复用) |
10. 权限设计
| 能力 |
Visitor+档案 |
DeepAccess/VIP |
| 轮盘 / 日运 / 行运 / 合盘三指数 / 各盘缩略 |
✓ |
✓ |
| 完整相位 / 年运与一生深析 / 合盘相处长文 / 推运深文案 |
✗ |
✓ |
11. 埋点
| Event |
触发 |
star_completed / portrait_completed source=star |
基础结果展示 |
star_wheel_viewed |
点选轮盘行星 |
synastry_completed |
合盘结果展示 |
synastry_invite_created / synastry_invite_accepted |
邀请链路 |
synastry_nearby_opened |
附近面板 |
deep_access_clicked |
surface=star / synastry |
12. 测试验收标准
Given Self 有生日
When 生成星座报告
Then 展示轮盘、太阳/月亮/上升、相位速览、outlook 日/周/月/年/一生与行运;无「占卜」「算命」恐吓
Given 两份档案
When POST synastry
Then summary 含三指数与 charts 五主盘 + 三推运 key;detail 无权益时剥离
Given 邀请 token
When accept
Then 生成 synastry 报告
Given 无权益
When 请求 detail
Then Server 剥离
Given 无档案
When 打开 /star
Then 页内生日表单可生成
13. AI 开发前检查
14. Implementation Notes
| 项 |
内容 |
| 复用 |
ReportRich · DeepAccess · NatalWheel · Explore |
| Packages |
internal/star · ephemeris · natal · fortune · synastry |
| 星历 |
Swiss Ephemeris(CGO,默认 Moshier);热带 + Whole Sign |
| 实现 |
POST /reports/star · POST /reports/synastry · nearby/invites · H5 /star · /synastry · invite |
| Gaps |
ECR-012 收口:报告页复用 StarFortunePanel;分享 type=star;fortuneBundle 仅读 outlook 且剥离 lucky;e2e mock 含 outlook |
| ESS |
docs/ECR/ECR-012-star-alignment.md(Approved · L2)· BD-2026-012 Approved |