chore: 导入清理前的完整工程状态(含 Capacitor 原生壳,作为回滚备份点)

This commit is contained in:
toor
2026-10-21 11:50:10 +08:00
committed by trae-solo-agent
commit 8ded87a3a8
389 changed files with 52242 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
# @yunyoujun/cook
Cook CLI 工具 - 用于管理菜谱数据和检索菜谱的命令行工具。
## 功能
- 🔍 按食材/厨具/难度/标签/做法检索菜谱(支持食材别名)
- CSV ↔ JSON 双向转换
- ✅ 完整的单元测试覆盖
- 🔄 数据格式一致性保证
## 命令
### search
检索菜谱(支持 AI Skill 调用):
```bash
# 按食材搜索
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:
```bash
pnpm convert
```
功能:
- 读取 `packages/data/recipe.csv`
- 解析并验证数据
- 生成 `packages/data/recipe.json`
- 更新 `lastDbUpdated` 时间戳
## 数据格式
### CSV 结构
```csv
name,stuff,bv,difficulty,tags,methods,tools,id
宫保鸡丁,鸡胸肉、花生米,BV1234567890,简单,川菜、家常菜,炒、煎,炒锅,0
```
字段说明:
- `name`: 菜名(必填)
- `stuff`: 食材列表(用 `、` 分隔)
- `bv`: B站视频 BV 号
- `difficulty`: 难度(简单/普通/困难)
- `tags`: 标签列表(用 `、` 分隔)
- `methods`: 烹饪方式(炒/煎/烘/炸,用 `、` 分隔)
- `tools`: 所需工具(用 `、` 分隔)
- `id`: 固定编号(非负整数,唯一;已发布的 id 不能修改或复用)
### JSON 结构
```json
{
"name": "宫保鸡丁",
"stuff": ["鸡胸肉", "花生米"],
"bv": "BV1234567890",
"difficulty": "简单",
"tags": ["川菜", "家常菜"],
"methods": ["炒", "煎"],
"tools": ["炒锅"]
}
```
## 测试
运行测试:
```bash
# 运行所有测试
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
```
### 技术栈
- **CLI 框架**: [cac](https://github.com/cacjs/cac)
- **交互提示**: [@clack/prompts](https://github.com/natemoo-re/clack)
- **日志输出**: [consola](https://github.com/unjs/consola)
- **运行时**: [tsx](https://github.com/privatenumber/tsx)
## 许可
MIT