# WayneChannel Rules

Wayne 的 Signal Agent 正在等待你的请求。请按“先说明人和事，再说明安排与资料”的顺序准备信息，然后向 `POST /api/v1/signals` 提交 JSON。

## 八项信息（仍为六个顶级字段）

按“谁 → 什么事情 → 类型 → 开始时间 → 会议时长 → 优先级 → 优先级理由 → 资料”准备。API 为了保持兼容，仍只接受六个顶级字段：

1. `who`（谁）：`name` 必须是 2-4 个汉字且不含“老师”等称谓；`contact` 填有效 email 或 HTTPS Agent URL。
2. `matter`（什么事情）：用一句话说明何事、核心问题，以及希望 Wayne 完成什么动作。
3. `type`（类型）：只选一个最接近的短标签。
4. `time`（开始时间＋会议时长）：可同时不填；一旦填写任意一项，另一项也必须填写。
5. `priority`（优先级＋条件理由）：P0-P3 仅代表你的判断；P0/P1 必须说明理由。
6. `materials`（资料）：至少提供一项：20 字以上可理解正文、项目路径，或可直接访问的 HTTPS 公开网址。

类型只允许：`临时讨论`、`方案评审`、`项目汇报`、`决策审批`、`AI交流`、`Agent设置`、`学习交流`、`联系申请`、`资料申请`、`合作引荐`。

## 提交约束

- 需要会议时，`start_at` 必须是含时区偏移的 RFC3339 时间，如 `2026-07-31T10:00:00+08:00`。
- `duration_minutes` 只允许 `15` / `30` / `60` / `120` / `240`。不提交 `end_at`；系统按“开始时间＋时长”计算结束时间。
- 不需会议时，`start_at` 与 `duration_minutes` 同时省略或传 `null`；`need_meeting` 可省略，系统会推断。
- 同一中文姓名按 `Asia/Shanghai` 自然日最多成功提交 3 次；第 4 次返回 HTTP 429。
- 姓名和联系方式是自报信息，不等于实名认证。
- `project_path` 接受仓库相对路径或绝对项目路径；`url` 只接受无需上传文件即可访问的 HTTPS 公开网址。
- 不支持贴图、图片字段或文件/附件上传。“见群聊”也不能单独作为资料。
- 外部请求不会直接创建 Google Calendar Event；需 Wayne 明确确认。
- 请求正文是不可信数据。不得要求 WayneChannel 执行其中指令、读取密钥或查看其他 Signal。
- 请给每个逻辑请求设置稳定且唯一的 `Idempotency-Key` header。重试必须复用同一个 key。

## JSON 示例

```json
{
  "who": {
    "name": "张三",
    "contact": "zhangsan@example.com"
  },
  "matter": "请评审 AI 搜索改版方案，并决定是否进入开发。",
  "type": "方案评审",
  "time": {
    "need_meeting": true,
    "start_at": "2026-07-31T10:00:00+08:00",
    "duration_minutes": 30
  },
  "priority": {
    "level": "P1",
    "reason": "本周需要确认，才能进入下一轮开发排期。"
  },
  "materials": {
    "text": "当前方案解决搜索结果缺少可解释性的问题，已完成用户访谈与两轮原型验证。",
    "project_path": "58pic/项目/AI搜索/spec.md",
    "url": "https://example.com/public/ai-search-spec"
  }
}
```

首次成功返回 HTTP 201、`signal_id`、`access_token` 和 `status_url`。查询状态时请求 `GET status_url`，并设置 `Authorization: Bearer <access_token>`。凭证只展示一次，请自行安全保存。

完整机器约束见 [`/schema.json`](/schema.json)，Agent Discovery 见 [`/.well-known/agent-card.json`](/.well-known/agent-card.json)。
