# P5.1→NS3 缺失项 #1：App1 Prompt 工程规范

## 简要结论
- 状态：✅ 已解决
- 风险等级：🟡 低
- App1 的完整 Prompt 工程规范已在百炼平台 System Prompt 文档和后端代码中实现，NS3 作为 MCP Server 扩展 spec 不涉及 Prompt 细节属于正常分工。

## 详细审查

### 审查范围
- `apps/backend/app/ai/apps/app1_chat.py` — App1 后端实现
- `docs/prd/ai-app-prompts.md` — 百炼平台 8 个应用的 System Prompt 完整定义
- `docs/prd/specs/P5-miniapp-ai-integration.md` — P5 原始 spec（首条 Prompt 数据结构）
- `docs/prd/Neo_Specs/NS3-mcp-server-ai-extension.md` — NS3 spec

### 发现

1. **System Prompt 模板**：`docs/prd/ai-app-prompts.md` 中定义了 App1 完整的 System Prompt，包含：
   - 角色定义（台球门店运营助手）
   - 5 个技能（数据查询、客户信息、助教业绩、经营数据、库存）
   - 权限控制规则（助教/管理者角色隔离）
   - 查询规范和回复规范
   - `biz_params.user_prompt_params` 参数注入（User_ID、Role、Nickname）

2. **首条 Prompt JSON 结构**：P5 spec 中明确定义了 App1 的首条用户消息结构：
   ```json
   {
     "current_time": "...",
     "source_page": "来源页面标识",
     "page_context": "页面上下文摘要",
     "screen_content": "屏幕可见内容文本化"
   }
   ```

3. **后端实现**：`app1_chat.py` 已实现：
   - `_build_system_prompt()` 构建 system prompt JSON（注入用户信息 + 页面上下文）
   - `_build_page_context()` 调用 `build_page_text()` 获取 10 种页面入口的结构化文本
   - Token 预算控制（`_MAX_SYSTEM_PROMPT_LEN = 4000`）
   - SSE 流式返回完整链路

4. **NS3 的定位**：NS3 是 MCP Server 扩展 spec，职责是数据库连接、查库手册、脱敏策略，不涉及 AI 应用的 Prompt 工程。Prompt 规范由 P5 spec + `ai-app-prompts.md` 承载，这是正确的分工。

### 证据

`app1_chat.py` 中的 system prompt 构建：
```python
prompt: dict = {
    "task": "你是台球门店的 AI 助手，根据用户的问题和当前页面上下文提供帮助。",
    "biz_params": {
        "user_prompt_params": {
            "User_ID": str(user_id),
            "Role": role,
            "Nickname": nickname,
        },
    },
}
```

`ai-app-prompts.md` 中 App1 的 System Prompt 长度约 1500 字，覆盖 5 个技能、权限控制、查询规范、回复规范。

### 说明

App1 是通用对话应用，其 Prompt 工程规范不包含 few-shot 示例和 JSON schema 约束（这些是结构化输出应用 2-8 的需求）。App1 使用流式文本返回（`chat_stream`），不需要 JSON schema 约束。百炼平台的 System Prompt 配置 + 后端 `_build_system_prompt()` 的动态注入，构成了完整的 Prompt 工程规范。
