# 示例：文件夹蒸馏

## 用户输入

```
请把我的知识库蒸馏成一个可安装的 Skill。

知识库：@wolai公式助手
蒸馏范围：只提炼「日期函数」和「逻辑函数」文件夹里的内容
这个知识库主要解决什么问题：帮助wolai用户编写日期和条件类公式
希望别人安装这个 Skill 后能做什么：快速查询和编写wolai日期公式与条件公式
```

## 知识库内容（模拟）

wolai公式助手知识库包含：
- 📁 基础函数（文件夹）- ❌ 不蒸馏
  - 数学函数.md
  - 文本函数.md
- 📁 日期函数（文件夹）- ✅ 蒸馏
  - now().md
  - today().md
  - date().md
  - datedif().md
- 📁 逻辑函数（文件夹）- ✅ 蒸馏
  - if().md
  - and().md
  - or().md
  - not().md
- 📁 查找函数（文件夹）- ❌ 不蒸馏
  - vlookup().md
  - index().md

## 蒸馏输出

### 目录结构

```
wolai-formula-helper/
├── SKILL.md                ← 核心技能文件
└── references/
    ├── date-functions.md   ← 日期函数详细说明
    └── logic-functions.md  ← 逻辑函数详细说明
```

### SKILL.md 内容

```markdown
---
name: wolai-formula-helper
description: wolai 日期与逻辑公式助手 - 帮助快速查询和编写日期函数、逻辑函数。触发词：wolai公式、日期公式、逻辑公式、if函数、datedif
trigger: wolai公式,日期公式,逻辑公式,if函数,datedif,日期函数,逻辑函数
---

# wolai 日期与逻辑公式助手

> 快速查询 wolai 数据表格中的日期函数和逻辑函数用法，附带示例和常见错误。

---

## 不适用场景

- ❌ 数学函数查询（请使用数学函数助手）
- ❌ 查找函数查询（请使用查找函数助手）
- ❌ 文本函数查询（请使用文本函数助手）

---

## 执行流程

### Step 1: 识别用户需求

| 用户说 | 行动 |
|--------|------|
| 「怎么计算两个日期之差」 | 查询 datedif() 函数 |
| 「如果...就...怎么写」 | 查询 if() 函数 |
| 「多个条件同时满足」 | 查询 and() 函数 |
| 「任意条件满足」 | 查询 or() 函数 |
| 「今天日期」 | 查询 today() 函数 |

### Step 2: 提供函数说明

提供以下内容：
1. 函数语法
2. 参数说明
3. 使用示例
4. 常见错误

### Step 3: 提供相关函数

如果是日期函数，提供相关日期函数；如果是逻辑函数，提供相关逻辑函数。

---

## 日期函数速查

> 完整说明见 `references/date-functions.md`

| 函数 | 说明 | 示例 |
|------|------|------|
| `now()` | 返回当前日期和时间 | `now()` → `2024-01-15 10:30:00` |
| `today()` | 返回当前日期 | `today()` → `2024-01-15` |
| `date(年,月,日)` | 构造日期 | `date(2024,1,15)` → `2024-01-15` |
| `datedif(开始,结束,单位)` | 计算日期差 | `datedif([开始日期],[结束日期],"D")` → `天数` |

---

## 逻辑函数速查

> 完整说明见 `references/logic-functions.md`

| 函数 | 说明 | 示例 |
|------|------|------|
| `if(条件,真值,假值)` | 条件判断 | `if([金额]>1000,"大额","小额")` |
| `and(条件1,条件2,...)` | 多条件同时满足 | `and([金额]>1000,[状态]="已审批")` |
| `or(条件1,条件2,...)` | 任意条件满足 | `or([状态]="紧急",[金额]>5000)` |
| `not(条件)` | 条件取反 | `not([状态]="已完成")` |

---

## 组合示例

### 示例1：计算合同剩余天数并标注状态

```
if(
  datedif(today(),[结束日期],"D")>30,
  "充足",
  if(
    datedif(today(),[结束日期],"D")>0,
    "紧张",
    "已过期"
  )
)
```

### 示例2：多条件审批判断

```
if(
  and([金额]<=1000,[类型]="日常"),
  "自动通过",
  if(
    and([金额]<=5000,[类型]="日常"),
    "部门审批",
    "高管审批"
  )
)
```

---

## 常见错误

### 错误1：datedif 单位写错

❌ 错误：`datedif([开始],[结束],"天")`
✅ 正确：`datedif([开始],[结束],"D")`

| 单位 | 正确写法 |
|------|---------|
| 天 | `"D"` |
| 月 | `"M"` |
| 年 | `"Y"` |

### 错误2：if 函数缺少参数

❌ 错误：`if([金额]>1000,"大额")` （缺少第三个参数）
✅ 正确：`if([金额]>1000,"大额","小额")`

### 错误3：文本比较忘记加引号

❌ 错误：`if([状态]=已完成,...)`
✅ 正确：`if([状态]="已完成",...)`

---

## 参考文档

- [日期函数详细说明](./references/date-functions.md) - 所有日期函数的完整说明
- [逻辑函数详细说明](./references/logic-functions.md) - 所有逻辑函数的完整说明

---

## 注意事项

1. **日期格式** - wolai 中的日期格式为 `YYYY-MM-DD`
2. **文本字段引用** - 引用文本字段用 `[字段名]`，文本常量用 `"文本"`
3. **空值处理** - 如果字段可能为空，用 `if([字段]="",...)` 先判断
```

### references/date-functions.md（节选）

```markdown
# 日期函数详细说明

## now()

返回当前日期和时间。

**语法**：`now()`

**返回值**：日期时间类型，格式 `YYYY-MM-DD HH:MM:SS`

**示例**：
- `now()` → `2024-01-15 10:30:00`
- `year(now())` → `2024`
- `month(now())` → `1`

**常见用途**：
- 记录创建时间：`if([创建时间]="",now(),[创建时间])`
- 计算年龄：`year(now())-year([出生日期])`

---

## today()

返回当前日期（不含时间）。

**语法**：`today()`

**返回值**：日期类型，格式 `YYYY-MM-DD`

**示例**：
- `today()` → `2024-01-15`
- `day(today())` → `15`

**常见用途**：
- 判断任务是否逾期：`if([截止日期]<today(),"逾期","正常")`

---

## date(年,月,日)

构造一个日期。

**语法**：`date(年,月,日)`

**参数**：
- 年：四位年份，如 `2024`
- 月：1-12
- 日：1-31（需符合该月实际天数）

**示例**：
- `date(2024,1,15)` → `2024-01-15`
- `date(year(today()),month(today()),1)` → 本月第一天

---

## datedif(开始日期,结束日期,单位)

计算两个日期之间的差值。

**语法**：`datedif(开始日期,结束日期,单位)`

**参数**：
- 开始日期：日期类型
- 结束日期：日期类型
- 单位：`"Y"`(年)、`"M"`(月)、`"D"`(天)

**示例**：
- `datedif([入职日期],today(),"Y")` → 工作年限
- `datedif([开始日期],[结束日期],"D")` → 项目天数

**注意事项**：
- 结束日期必须晚于开始日期，否则返回错误
- 单位必须用双引号包裹
```
