17ada52928596593e8c82061d8d9d43db6b05653
- 添加 uni-cloud 等云开发依赖 - 更新 vitest 测试配置,支持云函数 mock - 扩展 uni-app mock 支持云函数调用 - 添加每日推送算法测试脚本
万事宜 (Everything Is Suitable)
中国传统文化研究工具 — 紫微斗数排盘 / 黄历查询 / 运势分析
项目概述
万事宜是一款纯客户端 UniApp 应用,所有计算和数据存储均在本地完成,无需网络连接、无需后端服务、无需注册账号。支持 H5、微信小程序、App 多端发布。
项目结构
everything-is-suitable/
├── everything-is-suitable-uniapp/ # UniApp 主应用
│ ├── src/
│ │ ├── algorithms/ # 核心算法(紫微斗数、黄历、运势)
│ │ ├── components/ # 通用组件
│ │ ├── locales/ # 国际化(9种语言)
│ │ ├── pages/ # 页面
│ │ │ ├── almanac-search/ # 黄历搜索
│ │ │ ├── ziwei/ # 紫微斗数排盘
│ │ │ └── fortune/ # 运势分析
│ │ ├── services/ # 业务服务层(纯本地计算)
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── utils/ # 工具函数(存储、缓存、导出等)
│ │ ├── App.vue
│ │ ├── main.ts
│ │ ├── manifest.json
│ │ └── pages.json
│ ├── e2e/ # E2E 测试(Playwright)
│ ├── Jenkinsfile # Jenkins CI/CD 配置
│ ├── Dockerfile # H5 部署 Docker 配置
│ ├── nginx.conf # Nginx 配置(纯静态,无后端代理)
│ ├── package.json
│ ├── vite.config.ts
│ └── vitest.config.ts
├── assets/ # 落地页素材
├── docs/ # 项目文档
│ ├── plans/ # 历史规划文档
│ ├── baselines/ # 测试基线
│ ├── reports/ # 测试报告
│ └── superpowers/ # Superpowers 工作流计划
├── index.html # 落地页
├── i18n.js # 落地页国际化
└── README.md
技术栈
| 类别 | 技术 |
|---|---|
| 框架 | UniApp (Vue 3 + TypeScript) |
| 构建 | Vite |
| 测试 | Vitest (单元) + Playwright (E2E) |
| 国际化 | vue-i18n (9种语言) |
| 存储 | uni.getStorageSync/setStorageSync |
| CI/CD | Jenkins |
| 部署 | Docker + Nginx (H5) |
快速开始
前置要求
- Node.js >= 20.0.0
- npm >= 9.0.0
安装与运行
cd everything-is-suitable-uniapp
npm install
# H5 开发模式
npm run dev:h5
# 微信小程序开发模式
npm run dev:mp-weixin
构建
# 构建 H5
npm run build:h5
# 构建微信小程序
npm run build:mp-weixin
测试
# 单元测试
npm run test
# 单元测试 + 覆盖率
npm run test:coverage
# E2E 测试
npm run test:e2e
纯客户端架构说明
本应用采用纯客户端架构,核心特征:
- 零网络请求:所有算法(紫微斗数排盘、黄历计算、运势推演)均在客户端本地执行
- 零后端依赖:无 API 调用、无数据库、无服务器
- 本地存储:用户数据通过
uni.getStorageSync/setStorageSync存储在设备本地 - 离线可用:manifest.json 中 INTERNET 权限设为 false,无需网络即可使用全部功能
- 隐私安全:用户数据不离开设备,无需注册账号
规划
总体目标
构建一款纯客户端、离线可用的中国传统文化研究工具,支持紫微斗数排盘、黄历查询、运势分析三大核心功能,覆盖 H5、微信小程序、App 多端。
里程碑
| 阶段 | 状态 | 说明 |
|---|---|---|
| M1: 核心算法实现 | ✅ | 紫微斗数排盘、黄历计算、运势推演算法完成 |
| M2: 页面与交互开发 | ✅ | 三大核心页面(ziwei / almanac-search / fortune)开发完成 |
| M3: 国际化 & 多端适配 | ✅ | 9 种语言支持,UniApp 多端构建验证通过 |
| M4: 测试与质量保障 | ✅ | 单元测试 361 通过,E2E 测试 30 通过,覆盖率 77.5% |
| M5: 封版发布 | ✅ | 封版确认,通过验收 |
进度
当前状态:v1.0.0 封版完成 ✅ (Phase 3 专项测试已补充)
更新日期: 2026-08-12
验收标准对照
| 标准 | 阈值 | 实际值 | 状态 |
|---|---|---|---|
| 单元测试通过率 | ≥ 90% | 100% (408/408) | ✅ |
| 代码覆盖率 (指令) | ≥ 70% | 75.71% | ✅ |
| 代码覆盖率 (函数) | ≥ 70% | 74.07% | ✅ |
| 代码覆盖率 (分支) | ≥ 60% | 67.21% | ✅ |
| E2E 核心流程通过率 | ≥ 80% | 100% (156/156) | ✅ |
| 算法交叉验证 | 100% | 100% | ✅ |
| 算法执行时间 | < 500ms | 通过 | ✅ |
| 页面加载时间 | < 3s | ~1.7s | ✅ |
| 国际化覆盖 | 9/9 语言 | 全部完整 | ✅ |
| 浏览器兼容性 | 4/5 浏览器 | 通过 | ✅ |
| 安全验证 | 全部通过 | 12/12 通过 | ✅ |
| 无 P0 缺陷 | 0 | 0 | ✅ |
测试结果
- 单元测试: 408/408 通过 (100%),22 个测试文件,执行时间 4.24s
- 专项测试: 47/47 通过 (性能测试 7 + 安全测试 8 + 国际化验证 32)
- E2E 测试: 156/156 通过 (100%),覆盖 Chromium/WebKit/Mobile Chrome/Mobile Safari 4 种浏览器 × 39 个用例
- 覆盖率: 整体 75.71%,其中算法层 91.07%,服务层 82.65%
- 性能: 算法执行均 < 200ms,页面加载均 < 2s
- 安全: 12 项安全验证全部通过,无 XSS 风险
- 国际化: 9 种语言键值完整一致
- 缺陷: 6 个已修复,0 个 P0 遗留
已知待办
- 补充
solarTime.ts单元测试(真太阳时计算,当前 0% 覆盖率) - 补充组件层单元测试覆盖 (当前 0%)
- 补充工具层 errorHandler/performanceMonitor 测试
- 补充 templateService 分支覆盖
- 逐步消除代码中
as any类型断言 - 在 CI 标准环境中启用 Firefox 浏览器测试 (当前沙箱环境兼容性限制)
- 修复微信小程序构建问题 (
@dcloudio/vite-plugin-univ3 alpha 兼容性限制)
功能模块
黄历搜索 (almanac-search)
- 每日宜忌查询
- 条件搜索(嫁娶、搬家、开市等)
- 搜索历史与模板
紫微斗数 (ziwei)
- 自动排盘(支持公历输入)
- 十二宫位完整展示
- 十四主星 + 辅星体系
- 三方四正分析
运势分析 (fortune)
- 每日/每月/每年运势
- 事业、财运、感情、健康多维度
- 幸运色、幸运数字、幸运方位
许可证
MIT License
Languages
TypeScript
76.7%
Vue
8.9%
JavaScript
8%
HTML
3.6%
Shell
1.8%
Other
1%