KNOWN-007: solarTime.ts 单元测试 KNOWN-008: 消除生产代码中 as any 类型断言 KNOWN-002: 工具层测试覆盖 KNOWN-003: lruCache 边界测试 KNOWN-004: templateService 分支覆盖(100%) KNOWN-001: 6个业务组件测试 额外修复: searchOptimizer memoize bug, templateService 常量修改 bug 测试覆盖率: 75.71% -> 90.22%, 测试用例: 412 -> 671
195 lines
6.8 KiB
Markdown
195 lines
6.8 KiB
Markdown
# 万事宜 (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
|
||
|
||
### 安装与运行
|
||
|
||
```bash
|
||
cd everything-is-suitable-uniapp
|
||
npm install
|
||
|
||
# H5 开发模式
|
||
npm run dev:h5
|
||
|
||
# 微信小程序开发模式
|
||
npm run dev:mp-weixin
|
||
```
|
||
|
||
### 构建
|
||
|
||
```bash
|
||
# 构建 H5
|
||
npm run build:h5
|
||
|
||
# 构建微信小程序
|
||
npm run build:mp-weixin
|
||
```
|
||
|
||
### 测试
|
||
|
||
```bash
|
||
# 单元测试
|
||
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-uni` v3 alpha 兼容性限制)
|
||
|
||
> 详细测试报告见: [docs/reports/RELEASE_TEST_REPORT_2026-08-12.md](docs/reports/RELEASE_TEST_REPORT_2026-08-12.md)
|
||
|
||
## 功能模块
|
||
|
||
### 黄历搜索 (almanac-search)
|
||
- 每日宜忌查询
|
||
- 条件搜索(嫁娶、搬家、开市等)
|
||
- 搜索历史与模板
|
||
|
||
### 紫微斗数 (ziwei)
|
||
- 自动排盘(支持公历输入)
|
||
- 十二宫位完整展示
|
||
- 十四主星 + 辅星体系
|
||
- 三方四正分析
|
||
|
||
### 运势分析 (fortune)
|
||
- 每日/每月/每年运势
|
||
- 事业、财运、感情、健康多维度
|
||
- 幸运色、幸运数字、幸运方位
|
||
|
||
## 许可证
|
||
|
||
MIT License
|