# Resource存储系统使用示例

## 环境配置

在`.env`文件中配置组织密钥：

```bash
# 生成密钥（Python）
python -c "import os, base64; print(base64.b64encode(os.urandom(32)).decode())"

# 配置到.env
ORG_KEYS=test:生成的密钥base64,prod:另一个密钥base64
```

## 使用示例

### 1. 存储代码片段

```bash
curl -X POST http://localhost:8000/api/resource \
  -H "Content-Type: application/json" \
  -d '{
    "id": "test/code/selenium",
    "title": "Selenium绕过检测",
    "body": "import undetected_chromedriver as uc\ndriver = uc.Chrome()",
    "content_type": "code",
    "metadata": {"language": "python"},
    "submitted_by": "user@example.com"
  }'
```

### 2. 存储账号密码（加密）

```bash
curl -X POST http://localhost:8000/api/resource \
  -H "Content-Type: application/json" \
  -d '{
    "id": "test/credentials/website",
    "title": "某网站登录凭证",
    "body": "使用方法：直接登录即可",
    "secure_body": "账号：user@example.com\n密码：SecurePass123",
    "content_type": "credential",
    "metadata": {"acquired_at": "2026-03-06T10:00:00Z"},
    "submitted_by": "user@example.com"
  }'
```

### 3. 存储Cookie（加密）

```bash
curl -X POST http://localhost:8000/api/resource \
  -H "Content-Type: application/json" \
  -d '{
    "id": "test/cookies/website",
    "title": "某网站Cookie",
    "body": "适用于：已登录状态的API调用",
    "secure_body": "session_id=abc123; auth_token=xyz789",
    "content_type": "cookie",
    "metadata": {
      "acquired_at": "2026-03-06T10:00:00Z",
      "expires_at": "2026-03-07T10:00:00Z"
    },
    "submitted_by": "user@example.com"
  }'
```

### 4. 获取资源（无密钥）

```bash
# 公开内容正常返回，敏感内容显示[ENCRYPTED]
curl http://localhost:8000/api/resource/test/credentials/website
```

### 5. 获取资源（有密钥）

```bash
# 敏感内容解密返回
curl http://localhost:8000/api/resource/test/credentials/website \
  -H "X-Org-Key: 你的密钥base64"
```

### 6. 更新资源

```bash
curl -X PATCH http://localhost:8000/api/resource/test/credentials/website \
  -H "Content-Type: application/json" \
  -d '{
    "title": "更新后的标题",
    "metadata": {"acquired_at": "2026-03-06T11:00:00Z"}
  }'
```

### 7. 列出所有资源

```bash
curl http://localhost:8000/api/resource
```

### 8. 按类型过滤

```bash
curl "http://localhost:8000/api/resource?content_type=credential"
```

## Knowledge引用Content

在Knowledge中引用Content资源：

```bash
curl -X POST http://localhost:8000/api/knowledge \
  -H "Content-Type: application/json" \
  -d '{
    "task": "登录某网站",
    "content": "使用Selenium + undetected_chromedriver绕过检测，详见content资源",
    "types": ["tool"],
    "tags": {
      "content_ref": "test/code/selenium",
      "credential_ref": "test/credentials/website"
    },
    "owner": "agent:test",
    "source": {
      "submitted_by": "user@example.com"
    }
  }'
```

## 测试脚本

运行测试脚本验证功能：

```bash
# 启动服务器
uvicorn knowhub.server:app --reload

# 运行测试（另一个终端）
python test_content_storage.py
```
