Files
toor 76a5d71252 refactor: 只保留 Web,移除 Capacitor 原生壳
删除 android/、ios/ 两个 Capacitor 原生工程与 capacitor.config.ts、
ionic.config.json,以及 scripts/android、scripts/ios.sh 构建脚本;
根与 apps/web 的 @capacitor/* 依赖和相关 npm scripts 一并移除。

Web 侧去掉原生分支:登录只走云乐坊容器授权面板或顶层重定向,
暗色模式不再改原生状态栏,移除 Android 物理返回键处理。

保留 @nuxtjs/ionic(Web UI 框架)、云乐坊 window.ylf 桥接与 PWA。

决策记录见 docs/decisions/0004-web-only.md。
2026-10-21 12:27:50 +08:00
..

@yunyoujun/cook

Cook CLI 工具 - 用于管理菜谱数据和检索菜谱的命令行工具。

功能

  • 🔍 按食材/厨具/难度/标签/做法检索菜谱(支持食材别名)
  • CSV ↔ JSON 双向转换
  • ✅ 完整的单元测试覆盖
  • 🔄 数据格式一致性保证

命令

检索菜谱(支持 AI Skill 调用):

# 按食材搜索
pnpm search --stuff "鸡蛋,番茄"

# 组合筛选
pnpm search --stuff "鸡蛋,番茄" --tool "电饭煲" --difficulty "简单"

# 支持别名(西红柿 → 番茄)
pnpm search --stuff "鸡蛋,西红柿"

参数:

  • --stuff <items>: 食材,逗号/顿号分隔
  • --tool <tool>: 厨具(电饭煲/烤箱/空气炸锅/微波炉/一口大锅)
  • --difficulty <level>: 难度(简单/普通/困难)
  • --tag <tag>: 标签(懒人/下饭/减脂 等)
  • --method <method>: 做法(炒/煎/蒸/煮/烤/炸 等)
  • --limit <n>: 最大返回数(默认 10)

convert

将本地 CSV 转换为 JSON:

pnpm convert

功能:

  • 读取 packages/data/recipe.csv
  • 解析并验证数据
  • 生成 packages/data/recipe.json
  • 更新 lastDbUpdated 时间戳

数据格式

CSV 结构

name,stuff,bv,difficulty,tags,methods,tools,id
宫保鸡丁,鸡胸肉、花生米,BV1234567890,简单,川菜、家常菜,炒、煎,炒锅,0

字段说明:

  • name: 菜名(必填)
  • stuff: 食材列表(用 、 分隔)
  • bv: B站视频 BV 号
  • difficulty: 难度(简单/普通/困难)
  • tags: 标签列表(用 、 分隔)
  • methods: 烹饪方式(炒/煎/烘/炸,用 、 分隔)
  • tools: 所需工具(用 、 分隔)
  • id: 固定编号(非负整数,唯一;已发布的 id 不能修改或复用)

JSON 结构

{
  "name": "宫保鸡丁",
  "stuff": ["鸡胸肉", "花生米"],
  "bv": "BV1234567890",
  "difficulty": "简单",
  "tags": ["川菜", "家常菜"],
  "methods": ["炒", "煎"],
  "tools": ["炒锅"]
}

测试

运行测试:

# 运行所有测试
pnpm test

# 运行 CLI 测试
pnpm test packages/cook

# 测试覆盖率
pnpm test:coverage

测试内容:

  • ✅ CSV 解析和格式化
  • ✅ BV 号清洗(URL 前缀去除)
  • ✅ 空值和边界情况处理
  • ✅ 数组字段空值过滤
  • ✅ CSV/JSON 往返一致性

开发

项目结构

packages/cook/
├── src/
│   ├── commands/
│   │   ├── convert.ts     # CSV 转 JSON
│   │   └── search.ts      # 菜谱检索
│   ├── utils/
│   │   ├── alias.ts       # 食材别名(数据在 packages/data/aliases.json)
│   │   ├── config.ts      # 配置和常量
│   │   ├── csv.ts         # CSV 处理工具
│   │   ├── csv.test.ts    # CSV 测试
│   │   └── search.ts      # 检索核心逻辑
│   └── index.ts           # CLI 入口
├── types.ts               # 类型定义
├── package.json
└── tsconfig.json

技术栈

许可

MIT