食品真相,食话食说
-本周您已分析 8 种食品,成功为家人避开 4 个高风险成分!
-diff --git a/1-原型设计及功能说明/1.1.2通用基础页面-原型功能说明文档-2.0.md b/1-原型设计及功能说明/1.1.2通用基础页面-原型功能说明文档-2.0.md new file mode 100644 index 0000000..39774da --- /dev/null +++ b/1-原型设计及功能说明/1.1.2通用基础页面-原型功能说明文档-2.0.md @@ -0,0 +1,151 @@ +# 1.1.2 通用基础页面 - 功能说明文档 (v2.0) + +**文档目的:** 本文档旨在为技术开发团队提供最终版的页面功能说明、交互反馈及业务规则,作为前端开发的最终参考依据。 + +**版本:** 2.0 (同步代码重构,新增登录流程页面) + +--- + +## 页面流程总览 + +应用启动后,用户将经历以下核心流程: + +`启动页` -> `登录/注册页` -> `用户引导流程 (Onboarding)` -> `应用主页` + +**登录/注册流程分支:** +* 用户可在 `登录/注册页` 选择 `密码登录`。 +* 用户可在 `密码登录页` 选择 `忘记密码`。 +* 用户可在 `登录/注册页` 选择 `第三方社交账户登录`。 +* 用户可在 `登录/注册页` 查看 `用户协议/隐私政策`。 + +--- + +## 1. 启动页 (`SplashView-闪屏页.vue`) + +- **页面名称:** Splash Screen / 启动页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/SplashView-闪屏页.vue` + +### 1.1. 功能描述 +- **核心功能:** 作为应用的入口,展示品牌信息,并在短暂延迟后自动导航到登录页。 +- **显示元素:** + - 应用 Logo (居中,位于文字上方) + - 应用名称: "食话食说 Talk of Food" + - 应用口号: "食品真相,食话食说" + +### 1.2. 交互反馈 +- **自动跳转:** 页面加载完成 `2.5` 秒后,系统自动跳转到 **登录/注册页** (`/login`)。 +- **用户交互:** 此页面无任何用户可操作的交互元素。 + +### 1.3. 布局与样式 +- **布局:** 采用 Flexbox 垂直居中布局。 +- **背景:** 柔和的从上至下线性渐变 (`#fafff5` -> `#f0fdf4`)。 +- **字体大小:** 应用标题为 `32px` 以适应中英文组合。 + +--- + +## 2. 登录认证流程 + +### 2.1. 登录/注册页 (`LoginView-登录页-2.0.vue`) + +- **页面名称:** Login / Register Page / 登录注册页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/LoginView-登录页-2.0.vue` + +#### 2.1.1. 功能描述 +- **核心功能:** 提供用户通过手机验证码注册/登录的主入口,并分流至其他登录方式。 +- **显示元素:** + - 手机号输入框 (11位数字限制) + - 验证码输入框 (6位数字限制) + - "获取验证码" 按钮 + - "登录 / 注册" 主按钮 + - "密码登录" 文字按钮 + - 第三方社交登录图标 (微信, QQ, 抖音, 微博) + - 政策同意复选框及链接 + +#### 2.1.2. 交互反馈 +- **获取验证码:** 点击后,按钮进入60秒倒计时,期间不可再次点击。 +- **登录/注册:** (临时) 点击后,跳转到 **用户引导流程页** (`/onboarding`)。 +- **密码登录:** 点击后,跳转到 **密码登录页** (`/password-login`)。 +- **社交登录:** 点击任一社交图标,跳转到 **第三方授权页** (`/auth`),并通过URL参数传递平台名称。 +- **政策链接:** 点击 `用户协议` 或 `隐私政策` 链接,页面跳转到 **政策详情页** (`/policy`)。 + +### 2.2. 密码登录页 (`PasswordLoginView-密码登录页.vue`) + +- **页面名称:** Password Login Page / 密码登录页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/PasswordLoginView-密码登录页.vue` + +#### 2.2.1. 功能描述 +- **核心功能:** 为已注册用户提供通过手机号和密码登录的方式。 +- **显示元素:** + - 手机号输入框 + - 密码输入框 + - "登录" 按钮 + - "← 其它登录方式" 链接 + - "忘记密码?" 链接 + +#### 2.2.2. 交互反馈 +- **登录:** (临时) 点击后,跳转到 **用户引导流程页** (`/onboarding`)。 +- **其它登录方式:** 点击后,返回 **登录/注册页** (`/login`)。 +- **忘记密码?:** 点击后,跳转到 **忘记密码页** (`/forgot-password`)。 + +### 2.3. 忘记密码页 (`ForgotPasswordView-忘记密码页.vue`) + +- **页面名称:** Forgot Password Page / 忘记密码页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/ForgotPasswordView-忘记密码页.vue` + +#### 2.3.1. 功能描述 +- **核心功能:** 通过两步验证,引导用户安全地重设密码。 +- **流程步骤:** + 1. **验证身份:** 输入手机号和验证码,点击 "下一步"。 + 2. **重设密码:** 验证通过后,输入新密码和确认密码,点击 "确认重设"。 + +#### 2.3.2. 交互反馈 +- **获取验证码:** 与登录页逻辑相同,有60秒倒计时。 +- **下一步:** + - (临时) 如果验证码为 "111111",则进入重设密码步骤。 + - 如果验证码错误,页面下方显示红色错误提示 "验证码错误,请重试"。 +- **确认重设:** + - 如果两次输入的密码不一致,显示错误提示 "两次输入的密码不一致"。 + - (临时) 如果密码一致,模拟重设成功并跳转回 **登录/注册页** (`/login`)。 +- **返回登录:** 点击后,返回上一页。 + +### 2.4. 第三方授权页 (`ThirdPartyAuthView-授权登录页.vue`) + +- **页面名称:** Third Party Auth Page / 第三方授权页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/ThirdPartyAuthView-授权登录页.vue` + +#### 2.4.1. 功能描述 +- **核心功能:** 作为用户点击社交登录图标后的中转页面,模拟向第三方平台请求授权的过程。 +- **显示元素:** + - 加载动画 (Spinner) + - 动态文本,如 "正在通过 微信 安全登录..." + +#### 2.4.2. 交互反馈 +- **自动跳转:** 页面加载 `2` 秒后,模拟授权成功,自动跳转到 **用户引导流程页** (`/onboarding`)。 + +--- + +## 3. 用户引导流程 (`OnboardingView.vue` & `OnboardingStep.vue`) + +- **页面名称:** Onboarding / 用户偏好设置 +- **文件路径:** + - `shihuashishuo-ui/src/views/通用基础页/OnboardingView.vue` (流程控制器) + - `shihuashishuo-ui/src/views/通用基础页/OnboardingStep.vue` (可复用步骤组件) + +### 3.1. 功能描述 +- **核心功能:** 在用户首次登录后,通过一个多步骤的流程收集用户的健康和饮食偏好。 +- **流程步骤:** 关注点 -> 过敏原 -> 基础疾病 -> 饮食偏好。 + +### 3.2. 交互反馈 +- **通用交互:** `跳过`, `下一步`, `返回`, `完成` 按钮逻辑与之前版本一致。 +- **核心交互:** 搜索、Tag式选择、"无"选项互斥、自定义添加等复杂交互逻辑均已实现。 + +--- + +## 4. 政策详情页 (`PolicyView.vue`) + +- **页面名称:** Policy Page / 用户协议或隐私政策页 +- **文件路径:** `shihuashishuo-ui/src/views/通用基础页/PolicyView.vue` + +### 4.1. 功能描述 +- **核心功能:** 显示静态的法律条款文本。 +- **交互反馈:** 点击左上角的 `< 返回` 按钮,页面会返回到之前的页面。 diff --git a/1-原型设计及功能说明/1.1.2通用基础页-原型功能说明文档.md b/1-原型设计及功能说明/2.1.2核心体验页-原型功能说明文档.md similarity index 100% rename from 1-原型设计及功能说明/1.1.2通用基础页-原型功能说明文档.md rename to 1-原型设计及功能说明/2.1.2核心体验页-原型功能说明文档.md diff --git a/3-工作日志/3.1-工作日志-视图层(Views)快照-v1.0.md b/3-工作日志/3.1-工作日志-视图层(Views)快照-v1.0.md new file mode 100644 index 0000000..5823e7a --- /dev/null +++ b/3-工作日志/3.1-工作日志-视图层(Views)快照-v1.0.md @@ -0,0 +1,103 @@ +# “食话食说”APP - 视图层(Views)工作日志快照 + +**最后更新**: 2025-07-23 13:12:29 (UTC+8) +**目的**: 为 `shihuashishuo-ui/src/views` 目录下的所有页面组件提供一份简明扼要的功能说明和状态记录,以便于快速理解项目结构和进行后续开发。 + +--- + +## 设计依据 + +本文件中所有页面的设计思路、功能定义及交互逻辑,均源于以下核心文档,并应以此为准: + +* **产品需求文档**: [`0-产品需求文档/`](0-产品需求文档/) +* **原型设计及功能说明**: [`1-原型设计及功能说明/`](1-原型设计及功能说明/) + +--- + +## 1. 核心体验流程页面 + +这些页面构成了用户使用APP最核心的功能路径。 + +* **`ScanView-扫码页.vue`** + * **用途**: APP的核心功能页面,用于拉起设备摄像头,进行食品包装的二维码或条形码扫描。 + * **状态**: 结构占位,需实现相机调用、扫码识别及与后端API的交互逻辑。 + +* **`SearchView-搜索页.vue`** + * **用途**: 提供手动输入关键词搜索食品、成分或品牌的功能,是扫码功能的补充。 + * **状态**: 结构占位,需实现搜索框、历史记录、搜索建议及API调用逻辑。 + +* **`SearchResultView-搜索结果页.vue`** + * **用途**: 展示通过关键词搜索返回的结果列表。 + * **状态**: 结构占位,需实现结果列表的渲染、分页加载和错误状态处理。 + +* **`ResultView-结果页.vue`** + * **用途**: 展示单个食品的最终分析结果。这是对用户最有价值的页面之一,会包含成分解析、安全评级、营养信息等。 + * **状态**: 结构占位,需根据后端API返回的数据结构,设计精细化的数据可视化组件。 + +--- + +## 2. 主要导航页面 (底部Tab栏) + +这些页面是APP的一级模块,通过底部导航栏进行切换。 + +* **`HomeView-首页-2.0.vue`** + * **用途**: 用户登录后的主入口,也是我们本次迭代的核心。 + * **状态**: **v2.5.1 (已完成)**。经过多轮迭代,现已包含搜索热词、精巧的扫码按钮、个性化提示、含圆形进度盘的健康看板及内容信息流。功能完善,设计现代。 + +* **`DiscoverView-发现页.vue`** + * **用途**: 内容中心,以信息流形式展示与食品安全、健康知识相关的文章、资讯和评测。 + * **状态**: 结构占位,需实现文章列表的渲染和分类筛选功能。 + +* **`KitchenView-厨房页.vue`** + * **用途**: 健康厨房模块,提供健康菜谱、饮食搭配建议等功能。 + * **状态**: 结构占位,需实现菜谱的展示和搜索功能。 + +* **`MallView-商城页.vue`** + * **用途**: 电商模块,用于推荐和销售与健康饮食相关的商品。 + * **状态**: 结构占位,需实现商品列表、分类及详情页的跳转逻辑。 + +* **`MeView-我的.vue`** + * **用途**: 个人中心,用于管理用户资料、健康档案、设置、查看收藏等。 + * **状态**: 结构占位,需实现各功能入口的列表展示。 + +--- + +## 3. 用户引导与认证页面 + +这些页面负责用户的首次进入、注册、登录等流程。 + +* **`SplashView-闪屏页.vue`** + * **用途**: APP启动时展示的第一个页面,通常用于显示品牌Logo或进行短暂的初始化。 + * **状态**: 基础实现,通常在几秒后自动跳转到引导页或登录页。 + +* **`OnboardingView-引导页.vue`** + * **用途**: 用户首次打开APP时的功能介绍和引导流程,通常是可滑动的卡片。 + * **状态**: 结构占位,需与 `OnboardingStep-引导步骤.vue` 配合实现。 + +* **`OnboardingStep-引导步骤.vue`** + * **用途**: 单个引导步骤的组件,被 `OnboardingView` 复用。 + * **状态**: 结构占位。 + +* **`LoginView-登录页.vue`** + * **用途**: 用户登录/注册页面。 + * **状态**: 结构占位,需实现输入框、按钮及登录认证逻辑。 + +* **`PolicyView-协议页.vue`** + * **用途**: 用于展示用户协议和隐私政策的静态文本页面。 + * **状态**: 结构占位,需填充具体的协议内容。 + +--- + +## 4. 其他功能与历史版本页面 + +* **`MessageView-消息列表页.vue`** + * **用途**: 用于展示系统通知、用户互动等消息。 + * **状态**: 结构占位。 + +* **`HomeView-首页-1.0.vue`** + * **用途**: 首页的早期版本。 + * **状态**: **已废弃**。功能和代码与 `2.0` 初始版本一致,可作为历史参考。 + +* **`HomeView-首页-2.0.backup.vue`** + * **用途**: 在第三轮迭代 (v2.3) 开始前创建的 **v2.2 版本备份**。 + * **状态**: **备份文件**。可用于回滚或对比。 \ No newline at end of file diff --git a/3-工作日志/3.2-工作日志-首页迭代开发日志-v1.0.md b/3-工作日志/3.2-工作日志-首页迭代开发日志-v1.0.md new file mode 100644 index 0000000..3c1f2f3 --- /dev/null +++ b/3-工作日志/3.2-工作日志-首页迭代开发日志-v1.0.md @@ -0,0 +1,101 @@ +# “食话食说”APP - 首页迭代开发工作日志 + +**最后更新**: 2025-07-23 13:12:00 (UTC+8) +**核心负责人**: L.star +**目标**: 对产品首页进行多轮迭代设计与开发,以满足用户需求并提升产品体验。 + +--- + +## 1. 初始状态分析 (RESEARCH) + +* **起始文件**: `shihuashishuo-ui/src/views/HomeView-首页-1.0.vue` & `...-2.0.vue` +* **设计文档**: `0-产品需求文档/设计文档-Home页面.md` +* **核心问题**: + 1. **路由错误**: 应用的 `home` 路由指向一个不存在的文件 (`HomeView-首页.vue`)。 + 2. **功能缺失**: 对比设计文档,当前实现**完全缺失“内容信息流 (Feed)”模块**。 + 3. **实现偏差**: 核心扫码按钮尺寸偏小,视觉冲击力不足;底部导航与设计稿不符。 + 4. **版本存疑**: `v1.0` 与 `v2.0` 文件内容完全一致,未发生实质性迭代。 + +--- + +## 2. 迭代历程 (INNOVATE → EXECUTE → REVIEW) + +### **第一轮迭代: 框架完善 (v2.1 → v2.2)** + +* **用户反馈/目标**: + * 修复路由,让页面能正常显示。 + * 补全缺失的“内容信息流”模块。 + * 强化核心扫码按钮的视觉效果。 + * 追求“简单大气”的设计,移除 Slogan。 +* **解决方案**: + * **v2.1 提案**: 提出补全信息流、放大扫码按钮的方案。 + * **v2.2 提案**: 根据“简单大气”的反馈,移除 Slogan,形成最终方案。 +* **核心实现**: + * **路由修复**: 将 `router/index.ts` 中的 `home` 路由指向 `HomeView-首页-2.0.vue`。 + * **备份**: 创建了 `HomeView-首页-2.0.backup.vue` 作为安全备份。 + * **代码修改**: + * 在页面底部新增了 `feed-section`,并填充了示例数据。 + * 显著增大了 `.scan-cta` 的尺寸和样式权重。 + * 从模板中移除了 Slogan 元素。 + +### **第二轮迭代: 功能增强 (v2.3)** + +* **用户反馈/目标**: + 1. 在搜索栏下方增加搜索热词。 + 2. 将扫码按钮改得小巧一些。 + 3. 将个性化提示框升级为包含“每日营养、热量、喝水记录”的健康看板。 +* **解决方案**: + * **v2.3 提案**: 设计了包含热词、精巧按钮和多功能健康看板的布局。 +* **核心实现**: + * **代码修改**: + * 新增 `hot-searches-section` 并填充了关键词数据。 + * 缩小了 `.scan-cta` 的尺寸。 + * 将 `.dynamic-card` 替换为全新的 `.health-dashboard`,并使用 `grid` 布局实现三栏式健康数据展示。 + * **问题修复**: 修复了因复用 `goToSearch` 方法导致的 TypeScript 类型冲突。 + +### **第三轮迭代: 布局优化 (v2.4)** + +* **用户反馈/目标**: + 1. 恢复被替换掉的“个性化使用提示”卡片。 + 2. 解决健康看板三栏式布局“比较奇怪”的问题。 +* **解决方案**: + * **v2.4 提案**: 提出恢复提示卡片,并将健康看板重排为垂直布局的方案。 +* **核心实现**: + * **代码修改**: + * 在扫码按钮下方重新加入了 `.dynamic-card` 的 HTML 结构与样式。 + * 将 `.health-dashboard` 的布局从 `grid` 修改为 `flex-direction: column`,使其内部模块垂直排列,更清晰规整。 + +### **第四轮迭代: 视觉升级 (v2.5)** + +* **用户反馈/目标**: + 1. 将“热量”和“喝水”记录合并到一张卡片里。 + 2. 使用两个并列的圆形图案来记录摄入量。 +* **解决方案**: + * **v2.5 提案**: 设计了包含两个并列圆形进度盘的组合卡片。 +* **核心实现**: + * **代码修改**: + * 新增 `.progress-card` 来容纳两个进度盘。 + * 使用 **SVG** 技术绘制圆形进度盘,通过动态绑定 `stroke-dashoffset` 属性来反映数据进度。 + * 新增 `computed` 属性 (`calorieProgressOffset`, `waterProgressOffset`) 来处理 SVG 计算。 + +### **第五轮迭代: 文本优化 (v2.5.1 - 最终版)** + +* **用户反馈/目标**: + * 明确指出“热量”应为“热量摄入”,避免用户误解。 +* **解决方案**: + * 将标签文本从“热量”修改为“热量摄入”。 +* **核心实现**: + * 使用 `apply_diff` 工具,精准地将 `
热量
` 修改为 `热量摄入
`。 + +--- + +## 3. 最终状态与关键资产 + +* **当前版本**: **v2.5.1** +* **核心文件**: + * `shihuashishuo-ui/src/views/HomeView-首页-2.0.vue` (最终版代码) + * `shihuashishuo-ui/src/views/HomeView-首页-2.0.backup.vue` (v2.2 版备份) + * `shihuashishuo-ui/src/router/index.ts` (已修复路由) +* **本日志**: `3-工作日志/3-工作日志-首页迭代开发日志.md` + +**任务已全部完成。** \ No newline at end of file diff --git a/shihuashishuo-ui/src/router/index.ts b/shihuashishuo-ui/src/router/index.ts index fdc0912..8c28b24 100644 --- a/shihuashishuo-ui/src/router/index.ts +++ b/shihuashishuo-ui/src/router/index.ts @@ -1,8 +1,8 @@ import { createRouter, createWebHistory } from 'vue-router' -import SplashView from '../views/SplashView-闪屏页.vue' -import LoginView from '../views/LoginView-登录页.vue' -import PolicyView from '../views/PolicyView-协议页.vue' -import OnboardingView from '../views/OnboardingView-引导页.vue' +import SplashView from '../views/通用基础页/SplashView-闪屏页.vue' +import LoginView from '../views/通用基础页/LoginView-登录页-2.0.vue' +import PolicyView from '../views/通用基础页/PolicyView-协议页.vue' +import OnboardingView from '../views/通用基础页/OnboardingView-引导页.vue' import MainLayout from '../layouts/MainLayout.vue' const router = createRouter({ @@ -32,6 +32,21 @@ const router = createRouter({ name: 'onboarding', component: OnboardingView, }, + { + path: '/password-login', + name: 'password-login', + component: () => import('../views/通用基础页/PasswordLoginView-密码登录页.vue'), + }, + { + path: '/auth', + name: 'auth', + component: () => import('../views/通用基础页/ThirdPartyAuthView-授权登录页.vue'), + }, + { + path: '/forgot-password', + name: 'forgot-password', + component: () => import('../views/通用基础页/ForgotPasswordView-忘记密码页.vue'), + }, // Main application layout with bottom navigation { path: '/app', @@ -91,11 +106,6 @@ const router = createRouter({ name: 'messages', component: () => import('../views/MessageView-消息列表页.vue'), }, - { - path: '/home-v1', - name: 'home-v1-standalone', - component: () => import('../views/HomeView-首页-1.0.vue'), - }, ], }) diff --git a/shihuashishuo-ui/src/views/HomeView-首页-1.0.vue b/shihuashishuo-ui/src/views/HomeView-首页-1.0.vue deleted file mode 100644 index c08eb8b..0000000 --- a/shihuashishuo-ui/src/views/HomeView-首页-1.0.vue +++ /dev/null @@ -1,297 +0,0 @@ - -食品真相,食话食说
-本周您已分析 8 种食品,成功为家人避开 4 个高风险成分!
-本周您已分析 8 种食品,成功为家人避开 4 个高风险成分!
+蛋白质
+ {{ healthDashboardData.nutrition.protein }} / {{ healthDashboardData.nutrition.proteinGoal }}g +脂肪
+ {{ healthDashboardData.nutrition.fat }} / {{ healthDashboardData.nutrition.fatGoal }}g +