73a041d9c8546ed89d9cba8639bd718f5c0d1d7e
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
Test / e2e-test (push) Failing after 1m26s
精油价目: - 字号恢复固定大小(14/10/13/11px),手机端@media缩小 - 不再用clamp()(之前太小) - 下架改用 api.post 替代 api() raw fetch,更可靠 - 稀释比例/使用禁忌卡片: emoji和标题合并为一行(flex row) 翻译同步: - 打开翻译编辑器时预填充: 读取 oilsMeta.enName → oilEn() → 填入输入框 - 用户看到当前英文名,修改后保存到 oils.en_name - 精油价目页 getEnglishName 读同一字段,自动同步 翻译表: - 补充 舒缓→Deep Blue 等常用精油英文名 - oilEn() 支持去掉/添加"复方"后缀匹配 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
doTERRA 精油配方计算器
精油配方成本计算、配方管理、配方卡片导出工具。
功能
- 配方查询 - 搜索配方,按名称/精油/标签筛选,分类浏览
- 配方编辑 - 可视化编辑精油成分、滴数,自动计算成本
- 容量换算 - 支持单次/5ml/10ml/30ml 容量,自动稀释比例换算
- 智能粘贴 - 粘贴文本自动识别精油名称和滴数(支持模糊匹配、同音字纠错)
- 配方卡片 - 生成精美配方卡片图片,支持中英双语,品牌水印
- 个人配方 - 保存私人配方,记录使用日记
- 精油库存 - 标记已有精油,自动推荐可做配方
- 收藏系统 - 收藏喜欢的配方,快速访问
- 商业核算 - 项目成本利润分析(企业用户专属)
- Excel 导出 - 批量导出配方到 Excel 表格
- 多角色权限 - 查看者 / 编辑者 / 高级编辑者 / 管理员
- Bug 追踪 - 内置问题反馈和追踪系统
技术栈
前端
- Vue 3 (Composition API +
<script setup>) - Vite 构建工具
- Pinia 状态管理
- Vue Router 路由
- html2canvas 配方卡片图片生成
- ExcelJS Excel 导出
后端
- FastAPI (Python)
- SQLite 数据库
- Uvicorn ASGI 服务器
部署
- Docker 多阶段构建
- Kubernetes (k3s)
- Traefik 反向代理 + 自动 TLS
快速开始
前端开发
cd frontend
npm install
npm run dev
开发服务器启动在 http://localhost:5173,自动代理 /api 请求到后端。
后端开发
pip install -r backend/requirements.txt
uvicorn backend.main:app --reload --port 8000
Docker 构建
docker build -t oil-calculator .
docker run -p 8000:8000 -v oil-data:/data oil-calculator
访问 http://localhost:8000。
项目结构
frontend/src/
router/ # 路由配置
stores/ # Pinia stores (auth, oils, recipes, diary, ui)
composables/ # useApi, useDialog, useSmartPaste, useOilTranslation
components/ # 共享组件 (RecipeCard, TagPicker, LoginModal...)
views/ # 页面 (RecipeSearch, RecipeManager, Inventory...)
assets/ # 全局样式
backend/
main.py # FastAPI 应用 + 所有 API 端点
database.py # SQLite 数据库初始化和迁移
部署
详见 doc/deploy.md。
Description
Languages
Vue
45.4%
JavaScript
22.2%
HTML
16%
Python
13%
CSS
2.3%
Other
1.1%