面向中文用户的 东方 / 西方自我探索 小程序。用户输入出生资料 → 可核验算法排出结果 → 温和的人话解读 → 可收藏、可复用 → 可解锁深度报告。
定位是文化娱乐与自我反思,不是科学测评,也不做命运预测。
原生微信小程序(WXML / WXSS / JS),零第三方素材。全部图标为自绘 SVG(base64 内联),可直接导入开发者工具编译运行。
| 板块 | 模块 | key | 状态 |
|---|---|---|---|
| 东方探索 | 八字 | bazi |
✅ ready |
| 东方探索 | 五行 | wuxing |
✅ ready |
| 东方探索 | 易经 | yijing |
✅ ready |
| 东方探索 | 关系与择偶 | mate |
✅ ready |
| 西方探索 | 西洋占星 | astrology |
✅ ready |
| 西方探索 | 星盘解读 | birthchart |
✅ ready |
| 西方探索 | 人类图 | humandesign |
✅ ready |
| 西方探索 | 关系合盘 | synastry |
✅ ready |
单一来源在 utils/modules.js,8 个模块全部 status: 'ready',每个模块都有结果页 + 独立深度报告。
免费闭环:探索 → 选模块 → 看所需资料 → 输入(支持单人 / 双人 / 三种起卦)→ 结果(含可视化)→ 收藏 → 我的档案里再查看 / 复用。
变现闭环:结果页锁定章节 → 付费墙(3 档 SKU)→ 微信支付 → 服务端确认 → 发放权益 → 深度报告页 → 已解锁列表 / 订单流水。
计算与解读分离:算法只负责排出既有结果,解读文案只描述已算出的结果,不编造。
| 文件 | 负责 | 关键实现 |
|---|---|---|
utils/lunarw.js |
八字四柱 / 十神 / 纳音 / 五行统计 / 大运 | 薄封装 vendor/lunar.js |
utils/planets.js |
十大行星 + 月亮黄经 | 自研:JPL 近似轨道要素 + 开普勒迭代,月亮用 Meeus ELP2000 精简式 |
utils/chart.js |
上升点 / 中天 / Placidus 宫位 / 5 种主要相位 / 逆行 | GMST→LST,黄赤交角 Meeus 22.2;|纬度|>60° 回退整宫制 |
utils/iching.js |
文王六十四卦 | 时间 / 数字 / 金钱龟 三种起卦 |
utils/humandesign.js |
64 闸门 / 9 中心 / 36 通道 / 类型·权威·人生角色·分人 | 黄经 +58° 对齐 Ra Uru Hu 轮序;Design 时刻 = 出生前 88 天太阳弧 |
utils/mate.js |
东方关系合参 | 生肖 / 日干 / 日支 / 五行 / 纳音 5 项规则比对 + 综合分 |
utils/synastry.js |
西方关系合盘 | 交叉相位 + 日月金火等 7 组重点组合 + 元素互补 |
utils/engine.js |
统一调度 compute(key, input) |
8 模块一入口,时区→UT 归一 |
utils/result.js / utils/deep.js |
结果 → 文案 → 深度报告 | 8 模块各自有 4–10 章深度内容 |
精度:planets.js 与权威星历离线对照,行星黄经误差多数 <0.02°,最差 <0.16°(月亮 0.004°–0.043°)。
降级:出生时间未知 → 八字不排时柱、占星不生成上升点,结果页显示「不知道」,不猜。
按"优先复用、禁止重复造轮子"的原则,每个模块先检索现成方案再决策:
| 能力 | 来源 | 许可证 | 决策 |
|---|---|---|---|
| 八字 / 农历 / 干支 / 节气 | 6tail/lunar-javascript |
MIT | ✅ 直接复用,落为 vendor/lunar.js(436KB),utils/lunarw.js 做薄封装 |
| 人类图 64 闸门轮序 | jdempcy/hdkit |
MIT | ✅ 复用闸门轮序常量 GATE_ORDER,其余(中心 / 通道 / 类型 / 权威)自研 |
| 星历(行星黄经) | mivion/ephemeris |
GPL-2.0 | ❌ 排除。GPL 会传染整个小程序,商用不可接受 → 改为自研 utils/planets.js,精度已对标 |
| 易经卦序 | npm iching |
— | ❌ 排除。该包是 C/C++ 原生绑定,非纯 JS,小程序环境不可用 → 自研 utils/iching.js |
许可证摘要保留在 vendor/LICENSE-lunar.txt(MIT,含原始版权声明)。
| SKU | 名称 | 售价 | 划线原价 | 权益键 |
|---|---|---|---|---|
deep_single |
单模块深度报告 | ¥9.9 | ¥29.8 | deep:<module> |
deep_all |
全模块深度报告 | ¥39.9 | ¥159 | all |
pass_year |
年度权益卡 | ¥68 | ¥299 | all + pass |
- 首页促销卡:限时倒计时(时/分/秒实时跳)+ 划线原价 + 折扣角标 + 「最受欢迎 / 最划算」徽标 + 明确列出覆盖的 8 个模块。
- 结果页锁定章节:付费章节用模糊遮罩做可预览的"半透"呈现,点击直接跳付费墙——先给甜头,再要钱。
- 解锁页:倒计时紧迫感 + 社会证明 + 8 模块覆盖清单 + 三档 SKU 对照 + 权益说明。
- 权益门禁统一走
utils/entitlement.js,只由服务端支付成功回调触发。
utils/deep.js 的深度报告完全由已算出的结果按固定规则派生。同一份出生资料每次生成结果一致、可复核,不调用生成式模型凭空编造。
代码里不具备的对外能力一律不伪造(utils/config.js 是唯一开关):
API_BASE: '', // 留空 = 未接后端 → 订单接口不可用
PAY_ENABLED: false, // 未开商户号 → 支付不可用
BLOCK_IOS_VIRTUAL_PAY: true, // iOS 端虚拟支付限制未开通时点「立即解锁」会明确告知原因并列出上线所需材料,不会伪造订单、不会假装成功。utils/pay.js 里的完整链路(下单 → wx.requestPayment → 服务端查单 → 发放权益)已经写好,接上后端与商户号即可直接跑通,无需改页面。
重要合规点:微信对 iOS 端小程序内的虚拟商品支付有限制。
canPayHere()会在 iOS 端拦截并给出说明。上线前请以微信官方当前规则为准。
node tests/algo.test.js # 52 项:八字/星历/宫位/易经/人类图 + 8 模块全链路
node tests/flow.test.js # 27 项:端到端数据流(计算 → 结果 → 存储 → 收藏 → 复用 → 权益门禁)
node tests/preflight.test.js # 上工具前预检(页面四件套/组件路径/图标类/路由/插值变量)全部通过(52 + 27 + 预检)。preflight 会在导入开发者工具之前扫出最容易导致编译失败或运行时报错的问题。
主包体积约 1020KB(< 2MB 限制),其中 vendor/lunar.js 占 436KB。
├── app.js / app.json / app.wxss # 生命周期与来源解析、路由与 tabBar、设计令牌
├── project.config.json # 工程配置(appid 为测试号,未伪造)
├── pages/
│ ├── explore/ # 探索:洞察卡 + 8 模块格 + 深度报告促销卡(倒计时)
│ ├── input/ # 输入:单人/双人/三种起卦,按模块渲染
│ ├── result/ # 结果:可视化 + 免费版内容 + 锁定章节模糊遮罩
│ ├── unlock/ # 付费墙:倒计时 + 社会证明 + 8 模块清单 + 3 档 SKU
│ ├── report/ # 深度报告(付费后内容)
│ ├── orders/ # 已解锁内容 + 订单流水
│ ├── archive/ # 我的档案:昵称、资料、记录、收藏、复用
│ └── legal/ # 用户协议 + 隐私政策
├── components/feature-card/ # 特点卡组件
├── styles/icons.wxss # 自绘图标(base64 SVG,由生成器产出,112 个)
├── utils/ # 算法 / 数据 / 变现层
├── vendor/lunar.js + LICENSE-lunar.txt # 嫁接的 MIT 库
├── tools/gen-icons.js # 图标生成
├── tools/gen-tab-icons.js # tabBar PNG 生成(需系统 Chrome)
├── tools/gen-preview.js # 由真实引擎输出生成预览 HTML(避免手抄失真)
├── tests/ # 算法、流程与预检
└── preview/ # 设计预览(HTML + 截图,非运行依赖)
- 打开 微信开发者工具 → 「导入项目」
- 项目目录选择本仓库根目录
- AppID:选「测试号」即可(仓库内未填真实 AppID)
- 编译 —— 无需后端、无需配置域名
无需 npm install;preview/ 与 tools/ 仅用于产出设计与资源,不参与运行。
- AppID + 注册主体 → 填进
project.config.json - 微信认证 + 小程序备案(审核必备)
- 在公众平台填写 《小程序用户隐私保护指引》(
pages/legal已提供对应文案) - 配置 客服会话(
pages/archive已有open-type="contact"入口) - 若做支付:微信支付商户号 + 与本内容相符的经营类目资质 → 改
utils/config.js - 若做云同步/服务端:HTTPS 域名并加入 request 合法域名
占卜/命理类内容在微信属敏感类目,审核会看经营资质与文案。上线前请确认当前类目政策。
app.wxss 为唯一令牌来源。视觉方向:淡粉紫底 + 白色大圆角卡 + 梅玫瑰主色 + 粉彩图标瓦片。
- 页面底
#FAF6F9,卡片纯白 + 双层柔和阴影;主色梅玫瑰#A8556B - 正文
#2E2434(高对比),次级#85788E,注释#B4A9BE - 模块图标为彩色线条,放在粉彩浅底瓦片上(每格不同色,8 格各不相同)
⚠️ 改样式时注意:图标以 CSS 变量--ico注入。瓦片底色用background-color; 若需在瓦片上叠渐变,必须写成background-image: var(--ico), linear-gradient(...)(图标在前)。 单独写background-image: linear-gradient(...)会把图标层覆盖掉,图标整体消失(这是本项目踩过的坑)。
改图标 → 重跑 node tools/gen-icons.js。
node tools/gen-preview.js # 由真实引擎输出生成 12 个页面的 HTML
cd preview && npm i playwright && node screenshot.js # 使用系统 Chrome 渲染 PNGpreview/shots/(12 张,均由真实引擎输出渲染):
| 截图 | 页面 |
|---|---|
home.png |
探索首页(8 模块格 + 促销卡) |
result-bazi.png |
八字结果(四柱表) |
result-wuxing.png |
五行结果(五色分布) |
result-yijing.png |
易经结果(卦象) |
result-mate.png |
关系与择偶结果 |
result-astrology.png |
西洋占星结果 |
result-birthchart.png |
星盘解读结果 |
result-humandesign.png |
人类图结果(九中心) |
result-synastry.png |
关系合盘结果 |
unlock.png |
付费墙 |
input.png |
输入页 |
archive.png |
我的档案 |
截图用与
app.wxss同源的设计令牌在浏览器按 750px 设计宽度渲染,属设计预览;不是真机截图,实际渲染以微信开发者工具为准。
- 不复制任何第三方产品的名称 / 素材 / 文案,仅参考其东方 + 西方分类结构。
- 无任何外部图片素材,图标全部自绘。
- 所有结果页与付费页均标注「文化娱乐与自我反思,非科学测评与预测」。
- 收费文案规避「改运、消灾、保证脱单、预测结果」,只承诺"更系统的自我梳理 / 更多反思维度 / 可留存"。
- 出生资料默认只存本机,不上传;统计事件不含出生资料与完整分析。
- 付费为一次性买断,不自动续费、不绑定会员。
- 8 个模块全量开发 + 深度报告
- 后端 + 微信支付接通(代码链路已就绪,只差账号与商户号)
- 深度报告导出长图 / PDF
- 云同步与 AI 解释云函数(可选)
- 视频号引流:已预留
?module=x&source=channels直达路径 + 来源参数 + 统计事件(挂载由账号侧完成)
MIT — 注意:vendor/lunar.js 为第三方 MIT 库,许可证见 vendor/LICENSE-lunar.txt。