# Requirements Document

## Introduction

本文档定义了将 PncyssD 目录下的原型页面按照 course-web 项目规范进行重构的需求。PncyssD 是一个"人生轨迹"应用原型，包含登录、引导注册、仪表盘等核心页面。重构目标是将原生 ES Modules + Tailwind CSS 的实现迁移到 React + Vite 架构，同时保持原有的视觉设计风格和后端接口调用逻辑。

## Glossary

- **PncyssD_App**: 原型应用，包含登录、引导、仪表盘等页面的原生 JavaScript 实现
- **Course_Web**: 目标项目，使用 React + Vite + Tailwind CSS 的现代前端架构
- **Glassmorphism**: 玻璃拟态设计风格，使用模糊背景和半透明效果
- **Onboarding_Flow**: 引导流程，包含5个步骤的用户信息采集
- **Dashboard**: 仪表盘页面，包含生命长河、爽文剧本、实现路径三个功能模块
- **AI_Service**: AI 服务接口，用于生成分析、剧本和路径规划

## Requirements

### Requirement 1: 登录页面重构

**User Story:** As a 用户, I want 通过手机号验证码登录系统, so that 我可以安全地访问我的人生轨迹数据。

#### Acceptance Criteria

1. WHEN 用户访问登录页面 THEN THE PncyssD_App SHALL 显示玻璃拟态风格的登录卡片，包含标题"欢迎回来"和副标题"开启你的数字生命档案"
2. WHEN 用户输入手机号 THEN THE PncyssD_App SHALL 验证手机号格式为11位数字
3. WHEN 用户点击获取验证码按钮 THEN THE PncyssD_App SHALL 调用后端 `/auth/sms-code` 接口发送验证码
4. WHEN 验证码发送成功 THEN THE PncyssD_App SHALL 显示60秒倒计时并禁用获取按钮
5. WHEN 用户输入正确的验证码并点击登录 THEN THE PncyssD_App SHALL 调用后端 `/auth/login` 接口进行验证
6. WHEN 登录成功 THEN THE PncyssD_App SHALL 保存 token 到 localStorage 并跳转到引导页面
7. IF 登录失败 THEN THE PncyssD_App SHALL 显示错误提示信息
8. THE PncyssD_App SHALL 在登录按钮上显示"开启旅程"文字和橙色渐变样式

### Requirement 2: 引导流程页面重构

**User Story:** As a 新用户, I want 通过分步骤的引导流程填写个人信息, so that 系统可以了解我并提供个性化服务。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 提供5个步骤的引导流程：基本信息、童年记忆、开心经历、低谷时光、未来愿景
2. WHEN 用户进入步骤1 THEN THE PncyssD_App SHALL 显示"你是谁？"标题和昵称、性别、MBTI、星座、兴趣爱好输入字段
3. WHEN 用户进入步骤2 THEN THE PncyssD_App SHALL 显示"那段纯真的时光"标题和童年记忆的日期、描述输入字段
4. WHEN 用户进入步骤3 THEN THE PncyssD_App SHALL 显示"光芒闪耀的时刻"标题和开心经历的日期、描述输入字段
5. WHEN 用户进入步骤4 THEN THE PncyssD_App SHALL 显示"在暗夜中潜行"标题和低谷时光的日期、描述输入字段
6. WHEN 用户进入步骤5 THEN THE PncyssD_App SHALL 显示"未来想成为谁？"标题和未来愿景、理想生活状态输入字段
7. WHEN 用户点击下一步 THEN THE PncyssD_App SHALL 保存当前步骤数据并切换到下一步骤
8. WHEN 用户点击返回 THEN THE PncyssD_App SHALL 返回上一步骤并保留已填写数据
9. THE PncyssD_App SHALL 在页面底部显示步骤指示器，当前步骤高亮显示
10. WHEN 用户完成所有步骤并点击"开启人生" THEN THE PncyssD_App SHALL 调用后端接口保存用户资料并跳转到仪表盘
11. THE PncyssD_App SHALL 在记忆描述字段下方显示灵感标签（如：秋千、晚霞、糖果等），点击可快速插入文字

### Requirement 3: 仪表盘页面重构

**User Story:** As a 已登录用户, I want 在仪表盘中管理我的人生轨迹数据, so that 我可以回顾过去、创造未来。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 显示左侧导航栏，包含"生命长河"、"爽文剧本"、"实现路径"三个导航项
2. THE PncyssD_App SHALL 在导航栏顶部显示用户头像、昵称和 MBTI/星座信息
3. WHEN 用户点击导航项 THEN THE PncyssD_App SHALL 切换到对应的内容视图并高亮当前导航项
4. THE PncyssD_App SHALL 在导航栏底部显示音乐播放控制按钮和重置数据按钮
5. WHEN 用户点击用户头像区域 THEN THE PncyssD_App SHALL 显示用户菜单弹窗

### Requirement 4: 生命长河视图重构

**User Story:** As a 用户, I want 记录和查看我的人生重要事件, so that 我可以回顾和反思我的人生轨迹。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 显示"生命长河"标题和"记录足迹"按钮
2. WHEN 用户点击"记录足迹"按钮 THEN THE PncyssD_App SHALL 显示事件录入弹窗，包含标题、时间、详情输入字段
3. WHEN 用户提交事件 THEN THE PncyssD_App SHALL 调用 AI 服务分析事件并生成疗愈反馈
4. THE PncyssD_App SHALL 以时间线形式展示所有已记录的事件，每个事件卡片包含标题、时间、内容和 AI 洞察
5. WHILE 事件列表为空 THEN THE PncyssD_App SHALL 显示空状态提示"此间尚无回响，等待你执笔..."
6. THE PncyssD_App SHALL 按时间倒序排列事件列表

### Requirement 5: 爽文剧本视图重构

**User Story:** As a 用户, I want 基于我的人设生成个性化的人生剧本, so that 我可以获得激励和方向感。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 在左侧显示角色设定卡片，展示用户的昵称、星座、MBTI、兴趣爱好
2. THE PncyssD_App SHALL 提供剧本主题输入框和叙事风格、篇幅选择器
3. WHEN 用户点击"开启天命编撰"按钮 THEN THE PncyssD_App SHALL 调用 AI 服务生成剧本内容
4. WHILE 剧本生成中 THEN THE PncyssD_App SHALL 显示加载状态"编撰中..."
5. THE PncyssD_App SHALL 在右侧显示生成的剧本内容，使用章节标题格式化显示
6. THE PncyssD_App SHALL 在左侧显示历史卷轴列表，点击可切换查看不同剧本
7. WHILE 无剧本生成 THEN THE PncyssD_App SHALL 显示空状态提示

### Requirement 6: 实现路径视图重构

**User Story:** As a 用户, I want 将剧本转化为可执行的行动计划, so that 我可以一步步实现我的人生目标。

#### Acceptance Criteria

1. IF 用户未生成剧本 THEN THE PncyssD_App SHALL 显示提示"先生成剧本，方能洞察路径"并提供跳转按钮
2. WHEN 用户已有剧本 THEN THE PncyssD_App SHALL 显示"实现路径"标题和"开启人生导航"按钮
3. WHEN 用户点击"开启人生导航"按钮 THEN THE PncyssD_App SHALL 调用 AI 服务基于剧本生成行动路径
4. THE PncyssD_App SHALL 以阶段卡片形式展示路径，每个阶段包含序号、标题和具体建议
5. WHEN 路径已生成 THEN THE PncyssD_App SHALL 将按钮文字改为"重新推演"

### Requirement 7: 用户资料管理重构

**User Story:** As a 用户, I want 查看和编辑我的个人资料, so that 我可以保持信息的准确性。

#### Acceptance Criteria

1. WHEN 用户点击用户头像 THEN THE PncyssD_App SHALL 显示用户资料弹窗
2. THE PncyssD_App SHALL 在弹窗中显示用户头像、昵称、MBTI、星座、生命足迹数量、天命卷轴数量
3. WHEN 用户点击"编辑资料"按钮 THEN THE PncyssD_App SHALL 切换到编辑模式，显示可编辑的表单字段
4. WHEN 用户保存修改 THEN THE PncyssD_App SHALL 调用后端接口更新用户资料
5. WHEN 用户点击"清除数据并退出"按钮 THEN THE PncyssD_App SHALL 确认后清除本地存储并刷新页面

### Requirement 8: 视觉设计规范

**User Story:** As a 用户, I want 体验一致的视觉设计风格, so that 我可以获得沉浸式的使用体验。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 使用深色背景配色方案，主色调为 `#0a0c10` 到 `#1a1c2c`
2. THE PncyssD_App SHALL 使用橙色 `#FFAB91` 作为强调色
3. THE PncyssD_App SHALL 使用玻璃拟态效果（backdrop-blur、半透明背景、细边框）
4. THE PncyssD_App SHALL 使用 Noto Sans SC 和 Noto Serif SC 字体
5. THE PncyssD_App SHALL 在背景中显示动态渐变光晕效果
6. THE PncyssD_App SHALL 使用圆角 32px 的卡片设计
7. THE PncyssD_App SHALL 使用平滑的页面切换动画（淡入淡出、上下滑动）

### Requirement 9: 响应式布局

**User Story:** As a 用户, I want 在不同设备上都能正常使用应用, so that 我可以随时随地记录我的人生轨迹。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 在移动端显示汉堡菜单按钮，点击展开侧边导航
2. THE PncyssD_App SHALL 在移动端将仪表盘布局调整为单列显示
3. THE PncyssD_App SHALL 在移动端调整卡片圆角为 20px
4. THE PncyssD_App SHALL 在移动端隐藏导航项的文字标签，只显示图标

### Requirement 10: 数据持久化

**User Story:** As a 用户, I want 我的数据能够被安全保存, so that 我不会丢失我的人生记录。

#### Acceptance Criteria

1. THE PncyssD_App SHALL 使用 localStorage 存储用户数据，key 为 `lifeTrajectory_v3_data`
2. THE PncyssD_App SHALL 在数据变更时自动保存到 localStorage
3. THE PncyssD_App SHALL 在页面加载时从 localStorage 恢复数据
4. THE PncyssD_App SHALL 在登录成功后同步数据到后端服务器
5. IF localStorage 存储失败 THEN THE PncyssD_App SHALL 显示存储空间不足的提示
