11 KiB
Requirements Document
Introduction
本项目旨在将 PncyssD 原型设计完整还原为一个基于 React + Tailwind CSS + Headless UI/Radix UI 的现代化前端应用。该应用是一款结合数字疗愈美学与人工智能的人生管理工具,包含登录、深度入站(Onboarding)、仪表盘(Dashboard)三大核心模块,以及生命长河(Timeline)、爽文剧本(Script)、实现路径(Path)三个功能视图。
Glossary
- System: 人生轨迹前端应用系统
- User: 使用该应用的终端用户
- Login_Page: 登录页面组件
- Onboarding_Flow: 深度入站流程组件
- Dashboard: 仪表盘主界面组件
- Timeline_View: 生命长河视图组件
- Script_View: 爽文剧本视图组件
- Path_View: 实现路径视图组件
- Glass_Card: 毛玻璃卡片UI组件
- Glass_Button: 毛玻璃按钮UI组件
- Glass_Input: 毛玻璃输入框UI组件
- Modal: 模态弹窗组件
- State_Manager: 状态管理模块
- AI_Service: AI服务调用模块
Requirements
Requirement 1: 全局视觉主题与布局
User Story: As a user, I want to experience a consistent dark-themed glassmorphism UI, so that I can enjoy a visually cohesive and calming digital healing aesthetic.
Acceptance Criteria
- THE System SHALL render a dynamic fluid background with gradient colors (#1a1c2c, #0a0c10, #2d1b10) and floating blur elements
- THE System SHALL apply glassmorphism styling (backdrop-filter blur, semi-transparent backgrounds, subtle borders) to all card components
- THE System SHALL use Noto Serif SC for headings and Noto Sans SC for body text
- THE System SHALL maintain a fixed header with logo and navigation elements
- THE System SHALL support responsive layouts for mobile (< 768px) and desktop viewports
- WHEN the viewport width is less than 768px, THE System SHALL adjust card border-radius and hide navigation text labels
Requirement 2: 登录页面
User Story: As a user, I want to log in using my phone number and verification code, so that I can access my personal life trajectory data.
Acceptance Criteria
- WHEN the user is not logged in, THE Login_Page SHALL display a centered glass card with phone input, verification code input, and login button
- THE Login_Page SHALL display the title "欢迎回来" with subtitle "开启你的数字生命档案"
- WHEN the user clicks the "获取" button with a valid 11-digit phone number, THE System SHALL start a 60-second countdown and display simulated verification code sent message
- IF the user clicks "获取" with an invalid phone number, THEN THE System SHALL display an error alert
- WHEN the user submits correct phone number and verification code (888888), THE System SHALL transition to the onboarding flow
- IF the user submits incorrect credentials, THEN THE System SHALL display a validation error message
- THE Login_Page SHALL display terms agreement text at the bottom
Requirement 3: 深度入站流程 (Onboarding)
User Story: As a new user, I want to complete a 5-step onboarding process, so that I can set up my personal profile and life memories.
Acceptance Criteria
- THE Onboarding_Flow SHALL consist of exactly 5 sequential steps with progress indicator dots
- WHEN on step 1, THE System SHALL display form fields for: 称呼, 性别, MBTI, 星座, 兴趣爱好
- WHEN on step 2, THE System SHALL display "童年记忆" section with date picker, text area, and inspiration tags (秋千, 晚霞, 糖果, etc.)
- WHEN on step 3, THE System SHALL display "开心的经历" section with date picker, text area, and inspiration tags (海浪, 拥抱, 掌声, etc.)
- WHEN on step 4, THE System SHALL display "沮丧与低谷" section with date picker, text area, and inspiration tags (落叶, 雨伞, 长廊, etc.)
- WHEN on step 5, THE System SHALL display "未来想成为谁" section with vision and ideal life text areas
- WHEN the user clicks an inspiration tag, THE System SHALL append the tag text to the corresponding text area
- THE System SHALL save form data to state when navigating between steps
- WHEN the user completes step 5 and clicks "开启人生", THE System SHALL transition to the dashboard
- THE System SHALL display "返回" button on steps 2-5 and hide it on step 1
- THE System SHALL update progress indicator to highlight current step with orange color and expanded width
Requirement 4: 仪表盘布局
User Story: As a logged-in user, I want to access a dashboard with sidebar navigation, so that I can switch between different life management views.
Acceptance Criteria
- THE Dashboard SHALL display a sidebar with navigation items: 生命长河, 爽文剧本, 实现路径
- THE Dashboard SHALL group navigation items under "回溯过去" and "创造未来" sections
- WHEN the user clicks a navigation item, THE System SHALL highlight it with active state styling and load the corresponding view
- THE Dashboard SHALL display a user profile button in the header
- THE Dashboard SHALL display an inspirational quote at the bottom of the sidebar
- THE System SHALL apply smooth fade transitions when switching between views
Requirement 5: 生命长河视图 (Timeline)
User Story: As a user, I want to record and view my life events on a timeline, so that I can reflect on my past experiences with AI-powered insights.
Acceptance Criteria
- THE Timeline_View SHALL display a header with title "生命长河" and "记录足迹" button
- WHEN no events exist, THE System SHALL display an empty state with wind icon and placeholder text
- WHEN events exist, THE System SHALL display them in reverse chronological order with timeline dots and connecting line
- FOR EACH event card, THE System SHALL display: title, date, content, and AI feedback section
- WHEN the user clicks "记录足迹", THE System SHALL open a modal with event form (title, date, content)
- WHEN the user submits a new event, THE System SHALL call AI service for analysis and save the event with AI feedback
- THE System SHALL display loading state "正在共鸣生命轨迹..." while AI processes the event
Requirement 6: 爽文剧本视图 (Script Generator)
User Story: As a user, I want to generate epic life scripts based on my profile and experiences, so that I can envision an inspiring future narrative.
Acceptance Criteria
- THE Script_View SHALL display a two-column layout: settings panel (left) and script display (right)
- THE System SHALL display user's character settings (nickname, zodiac, MBTI, hobbies) in a read-only card
- THE System SHALL provide form inputs for: 剧本主题, 叙事风格 (dropdown), 剧本篇幅 (dropdown)
- THE System SHALL offer style options: 都市沉浮, 快意恩仇, 唯美浪漫, 星际远征, 荒诞不经, 迷雾重重, 午夜回响
- THE System SHALL offer length options: 极简, 连载, 史诗
- WHEN the user clicks "开启天命编撰", THE System SHALL generate a script via AI service and display it
- THE System SHALL display historical scripts list with theme, style, length, and date
- WHEN the user clicks a historical script, THE System SHALL load and display that script
- WHEN no script is selected, THE System SHALL display an empty state with sparkles icon
- THE System SHALL format script content with 【标题】 sections highlighted in orange
Requirement 7: 实现路径视图 (Path Generator)
User Story: As a user, I want to generate actionable life paths based on my scripts, so that I can plan realistic steps toward my goals.
Acceptance Criteria
- IF no script is selected, THEN THE Path_View SHALL display a prompt to generate a script first
- WHEN a script is selected, THE System SHALL display the script theme and "开启人生导航" button
- WHEN the user clicks the path generation button, THE System SHALL call AI service to generate path steps
- THE System SHALL display path steps as numbered cards with blue accent styling
- EACH path step card SHALL display: step number, phase title, and detailed recommendations
- THE System SHALL apply staggered animation delays when rendering path cards
Requirement 8: 用户资料模态框
User Story: As a user, I want to view and edit my profile information, so that I can keep my personal data up to date.
Acceptance Criteria
- WHEN the user clicks the profile button, THE System SHALL open a modal displaying user avatar, nickname, MBTI, zodiac
- THE System SHALL display statistics: 生命足迹 count and 天命卷轴 count
- WHEN the user clicks "编辑资料", THE System SHALL switch to edit mode with editable fields
- THE System SHALL provide editable fields for: 昵称, 职业, MBTI, 星座, 兴趣爱好
- WHEN the user clicks "保存修改", THE System SHALL update the state and return to view mode
- WHEN the user clicks "清除数据并退出", THE System SHALL clear all local storage and reload the page
Requirement 9: 状态管理与持久化
User Story: As a user, I want my data to persist across sessions, so that I don't lose my life records and scripts.
Acceptance Criteria
- THE State_Manager SHALL persist all user data to localStorage under key 'life_trajectory_v3'
- THE State_Manager SHALL load saved state on application initialization
- THE State_Manager SHALL provide methods for: save, load, updateRegistration, addLifeEvent, addScript, setPath, clear
- THE System SHALL automatically save state after any data modification
- IF localStorage data is corrupted, THEN THE System SHALL handle the error gracefully and use default state
Requirement 10: 页面过渡动画
User Story: As a user, I want smooth animations between pages and views, so that the experience feels polished and fluid.
Acceptance Criteria
- WHEN transitioning between major views (login → onboarding → dashboard), THE System SHALL apply fade-out and fade-in animations
- THE System SHALL display a loading spinner with text "载入生命序列..." during transitions
- WHEN switching dashboard views, THE System SHALL apply subtle opacity and translate animations
- THE System SHALL use cubic-bezier easing for smooth motion curves
- THE System SHALL apply staggered animations for list items and cards
Requirement 11: 模态弹窗系统
User Story: As a user, I want modal dialogs for focused interactions, so that I can complete tasks without leaving the current context.
Acceptance Criteria
- THE Modal SHALL display with a dark backdrop (bg-black/60) and blur effect
- THE Modal SHALL be centered on screen with max-width constraint
- THE Modal SHALL include a close button in the top-right corner
- WHEN the user clicks the close button, THE System SHALL hide the modal
- THE Modal content SHALL be scrollable when exceeding viewport height
Requirement 12: 响应式设计
User Story: As a user, I want the application to work well on both mobile and desktop devices, so that I can access it from any device.
Acceptance Criteria
- WHEN viewport width is less than 768px, THE System SHALL use full-height view container without border-radius
- WHEN viewport width is less than 768px, THE System SHALL hide navigation item text labels and show only icons
- THE System SHALL use CSS Grid with responsive column configurations (1 column on mobile, 12-column grid on desktop)
- THE System SHALL adjust padding and spacing for mobile viewports