# PRD — [Feature Name]

> **This is a template.** Copy to `docs/prd/[feature]-[YYYY-MM-DD].md` and fill in. Delete this template intro section before publishing the real PRD.

- **Date**: YYYY-MM-DD
- **Owner**: product-lead
- **Status**: Draft / Review / Approved / In Progress / Done / Archived
- **Estimated effort tier**: Small / Medium / Large（参考 `.claude/standards/cost-budget.md` 的 token 预算分级）

## 1. Background

为什么做这件事？解决什么用户痛点 / 业务需求？引用任何相关的内部文档、Linear 工单、Slack 讨论、用户访谈记录。

## 2. Goal & Non-Goals

**目标**：

- 一句话目标声明
- 关键成功指标（KPI）—— 上线后用什么数据判断这件事做对了

**Non-Goals**：

- 明确不做什么，避免范围蔓延

## 3. User Stories

| ID | As a | I want to | So that |
|---|---|---|---|
| US-1 | 终端用户 | ... | ... |
| US-2 | 管理员 | ... | ... |

## 4. Acceptance Criteria

每条 AC 必须可独立验证。code-reviewer / qa-engineer 会**逐条核对**。

| ID | Priority | AC | Verification method |
|---|---|---|---|
| AC-1 | P0 | 用户提交邮箱 + 密码后，POST /api/auth/login 返回 200 + JWT token | curl + 检查响应体 |
| AC-2 | P0 | 错误密码返回 401，错误信息不暴露"邮箱不存在" vs "密码错误"的区别 | 手工 / SIT |
| AC-3 | P1 | 失败 5 次后触发限流，返回 429 | SIT |

## 5. Design

- UI 设计：链接到 `docs/design/[feature]/spec.md` + `index.html` 原型
- API 契约：列出新增/变更的接口签名（路径、请求体、响应体、错误码）
- 数据模型：列出新增/变更的表结构（字段、类型、索引）

## 6. Technical Constraints

- 必须遵守 `.claude/standards/coding.md`、`security.md`、`observability.md`
- LLM 集成：参考 skill `agf-wiring-multi-llm-sdk`
- 性能预算：API P95 ≤ 500ms / LLM P95 ≤ 5s
- 不引入新依赖（除非 tech-lead 已起 ADR）

## 7. Cost Estimate

- 预估 LLM token 消耗 / 月：
- 预估 Agent Team 开发消耗 token：
- 触发 cost-budget.md 哪一档？

## 8. Out of Scope / Future Work

明确不在本次范围、留给后续迭代的工作项。

## 9. Open Questions

未确定的问题，分配给具体角色去搞清楚。

## 10. Sign-offs

- [ ] product-lead: 初稿
- [ ] tech-lead: 技术可行性 review（仅在涉及架构变更时）
- [ ] frontend-dev / backend-dev / ai-agent-dev: 实现可行性确认
- [ ] uiux-designer: 设计契合 PRD（仅在有 UI 时）
- [ ] qa-engineer: AC 可测性确认
