Mai 6ab82ed54f fix: 部署使用公网IP (WG MTU限制无法SSH)
原因: udp2raw 隧道有效MTU低于1420,SSH大包握手丢包
2026-05-21 23:38:11 +08:00

花信 🌸

给老婆用的月经管理应用。简洁大方,内置多种可视化模型。

线上地址: https://47.102.213.175/huaxin/


网络拓扑

通过 WireGuard 组网(10.13.13.0/24),本机为 10.13.13.5,服务器为 10.13.13.1。由于 udp2raw 隧道 MTU 限制,部署时通过公网 SSH 进行。

技术栈

  • 框架: Vue 3 + Vue Router 4
  • 构建: Vite 5
  • 图表: Canvas 2D 原生绘制
  • 部署: Nginx 静态托管

项目结构

huaxin-uniapp/
├── src/
│   ├── App.vue                # 根组件 + Tab 导航栏
│   ├── main.js                # 入口 + 路由配置
│   ├── pages/
│   │   ├── Home.vue           # 首页:周期状态/预测/快捷记录/迷你趋势图
│   │   ├── Calendar.vue       # 日历:月视图 + 经期标记
│   │   ├── Record.vue         # 记录:流量/症状/情绪/备注
│   │   └── Analytics.vue      # 分析:6种可视化模型
│   ├── components/
│   │   ├── StatusCard.vue     # 状态卡片
│   │   ├── CycleBar.vue       # 周期进度条
│   │   └── QuickActions.vue   # 快捷按钮
│   └── utils/
│       ├── util.js            # 工具函数
│       └── mock.js            # 模拟数据
├── deploy.sh                  # 🚀 自动部署脚本
├── vite.config.js
├── index.html
└── package.json

6种可视化模型

模型 文件 说明
📈 折线图 drawLineChart() 周期长度趋势 + 28天基准线
📊 柱状图 drawBarChart() 每次经期天数对比
🎯 雷达图 drawRadarChart() 症状频率分析
🌊 热力图 generateHeatmap() 12月×31天年度热力分布
🔵 气泡图 drawBubbleChart() 情绪变化趋势
📋 箱线图 drawBoxChart() 流量分布统计

🌿 日常开发流程

1. 本地开发

# 启动开发服务器(浏览器 http://localhost:3000
npm run dev

修改代码后热更新即时生效。

2. 提交代码

# 查看改了什么
git status
git diff

# 提交
git add -A
git commit -m "feat: 添加了xxx功能"
# 或
git commit -m "fix: 修复了xxx问题"
# 或
git commit -m "refactor: 重构了xxx"

3. 发布新版本

# 打标签(版本号自增)
git tag v1.1.0      # 新功能
git tag v1.0.1      # 小修复

# 推送到远程(如果有)
git push origin master --tags

4. 🚀 部署

一行命令搞定:

./deploy.sh

脚本会自动执行:

  1. 检查 git 工作区是否干净
  2. 读取当前版本号(git tag
  3. 安装依赖 + 构建 (npm run build)
  4. 上传到服务器 /var/www/huaxin/
  5. 重载 Nginx
  6. 验证返回 HTTP 200

视觉设计

  • 主色: #E893A7 玫瑰粉
  • 辅助色: #C4A0D9 薰衣草紫
  • 圆角: 12px 卡片风格
  • 字体: -apple-system / PingFang SC

TODO

  • 接入真实数据(替换 mock.js
  • 微信服务通知提醒
  • 云端同步
  • 数据导出(CSV
  • 暗黑模式
S
Description
No description provided
Readme 4 KiB
Languages
Vue 79.5%
JavaScript 12%
Shell 6.3%
HTML 2.2%