diff --git a/manifest.json b/manifest.json index c72f634..fd63679 100644 --- a/manifest.json +++ b/manifest.json @@ -50,7 +50,7 @@ "quickapp" : {}, /* 小程序特有相关 */ "mp-weixin" : { - "appid" : "", + "appid" : "wxdf340fe2d9aff21d", "setting" : { "urlCheck" : false }, diff --git a/pages.json b/pages.json index 5f4b807..1540715 100644 --- a/pages.json +++ b/pages.json @@ -5,7 +5,8 @@ "style": { "navigationBarTitleText": "我的宠物", "navigationBarBackgroundColor": "#ffffff", - "navigationBarTextStyle": "black" + "navigationBarTextStyle": "black", + "navigationStyle": "custom" } }, { @@ -69,6 +70,60 @@ "navigationStyle": "custom" } }, + { + "path": "pages/pets/pet-chat", + "style": { + "navigationBarTitleText": "AI聊天", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, + { + "path": "pages/pets/pet-chat-simple", + "style": { + "navigationBarTitleText": "AI聊天", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, + { + "path": "pages/pets/add-record-enhanced", + "style": { + "navigationBarTitleText": "添加记录", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, + { + "path": "pages/pets/add-record-simple", + "style": { + "navigationBarTitleText": "添加记录", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, + { + "path": "pages/pets/pet-records", + "style": { + "navigationBarTitleText": "宠物记录", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, + { + "path": "pages/pets/pet-timeline", + "style": { + "navigationBarTitleText": "成长时光", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + }, { "path": "pages/index/index", "style": { diff --git a/pages/pets/add-record-enhanced.vue b/pages/pets/add-record-enhanced.vue new file mode 100644 index 0000000..6a62027 --- /dev/null +++ b/pages/pets/add-record-enhanced.vue @@ -0,0 +1,643 @@ + + + + + diff --git a/pages/pets/add-record-simple.vue b/pages/pets/add-record-simple.vue new file mode 100644 index 0000000..0fb37c4 --- /dev/null +++ b/pages/pets/add-record-simple.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/pages/pets/pet-chat-simple.vue b/pages/pets/pet-chat-simple.vue new file mode 100644 index 0000000..acab171 --- /dev/null +++ b/pages/pets/pet-chat-simple.vue @@ -0,0 +1,442 @@ + + + + + diff --git a/pages/pets/pet-chat.vue b/pages/pets/pet-chat.vue new file mode 100644 index 0000000..34216e3 --- /dev/null +++ b/pages/pets/pet-chat.vue @@ -0,0 +1,639 @@ + + + + + diff --git a/pages/pets/pet-detail.vue b/pages/pets/pet-detail.vue index 64f672f..6595884 100644 --- a/pages/pets/pet-detail.vue +++ b/pages/pets/pet-detail.vue @@ -54,7 +54,7 @@ - + @@ -85,33 +85,29 @@ export default { }, methods: { loadPetInfo() { - // 模拟从本地存储或API获取宠物信息 - const mockPets = [ - { - id: 1, - name: '小橘', - breed: '橘猫', - age: 2, - companionDays: 365, - avatar: '/static/cat-avatar.jpg', - gender: '公', - weight: '4.5kg', - birthday: '2022-01-15' - }, - { - id: 2, - name: '小白', - breed: '金毛', - age: 3, - companionDays: 1095, - avatar: '/static/dog-avatar.jpg', - gender: '母', - weight: '25kg', - birthday: '2021-03-20' + try { + // 从本地存储获取宠物信息 + const pets = uni.getStorageSync('pets') || [] + this.petInfo = pets.find(pet => pet.id == this.petId) || {} + + // 如果没有找到宠物信息,使用默认数据 + if (!this.petInfo.id) { + this.petInfo = { + id: this.petId, + name: '未知宠物', + breed: '未知品种', + age: 0, + companionDays: 0, + avatar: '/static/default-pet.png', + gender: '未知', + weight: '0kg', + birthday: '未知' + } } - ] - - this.petInfo = mockPets.find(pet => pet.id == this.petId) || {} + } catch (error) { + console.error('加载宠物信息失败', error) + this.petInfo = {} + } }, goBack() { @@ -126,10 +122,16 @@ export default { addRecord() { uni.navigateTo({ - url: `/pages/pets/add-record?petId=${this.petId}` + url: `/pages/pets/add-record-simple?petId=${this.petId}` }) }, - + + chatWithPet() { + uni.navigateTo({ + url: `/pages/pets/pet-chat-simple?petId=${this.petId}` + }) + }, + viewHealth() { uni.navigateTo({ url: `/pages/pets/health-record?petId=${this.petId}` @@ -202,7 +204,7 @@ export default { padding: 30rpx; display: flex; gap: 20rpx; - + :deep(.u-button) { flex: 1; } diff --git a/pages/pets/pet-records.vue b/pages/pets/pet-records.vue new file mode 100644 index 0000000..7d9311f --- /dev/null +++ b/pages/pets/pet-records.vue @@ -0,0 +1,587 @@ + + + + + diff --git a/pages/pets/pet-timeline.vue b/pages/pets/pet-timeline.vue new file mode 100644 index 0000000..3044f40 --- /dev/null +++ b/pages/pets/pet-timeline.vue @@ -0,0 +1,604 @@ + + + + + diff --git a/pages/pets/pets.vue b/pages/pets/pets.vue index adb2093..f7e243e 100644 --- a/pages/pets/pets.vue +++ b/pages/pets/pets.vue @@ -1,32 +1,137 @@ @@ -34,35 +139,159 @@ export default { data() { return { - petsList: [] + petsList: [], + showQuickActions: false, + totalRecords: 0, + totalDays: 0, + upcomingReminders: 0 } }, onShow() { this.loadPets() + this.loadStatistics() + }, + computed: { + // 计算总陪伴天数 + totalCompanionDays() { + return this.petsList.reduce((total, pet) => total + (pet.companionDays || 0), 0) + } }, methods: { loadPets() { try { - const pets = uni.getStorageSync('pets') || [] + let pets = uni.getStorageSync('pets') || [] + + // 如果没有宠物数据,添加一些模拟数据 + if (pets.length === 0) { + pets = [ + { + id: 1, + name: '小橘', + breed: '橘猫', + age: 2, + companionDays: 365, + avatar: '/static/default-pet.png', + gender: '公', + weight: '4.5kg', + birthday: '2022-01-15', + healthStatus: 'healthy', + personality: ['活泼', '粘人', '贪吃'], + lastRecord: '2024-01-15' + }, + { + id: 2, + name: '小白', + breed: '金毛', + age: 3, + companionDays: 1095, + avatar: '/static/default-pet.png', + gender: '母', + weight: '25kg', + birthday: '2021-03-20', + healthStatus: 'healthy', + personality: ['温顺', '聪明', '忠诚'], + lastRecord: '2024-01-14' + } + ] + // 保存模拟数据到本地存储 + uni.setStorageSync('pets', pets) + } + this.petsList = pets } catch (error) { console.error('加载宠物列表失败', error) this.petsList = [] } }, + + loadStatistics() { + try { + // 加载统计数据 + const records = uni.getStorageSync('petRecords') || [] + this.totalRecords = records.length + + // 计算总陪伴天数 + this.totalDays = this.petsList.reduce((total, pet) => total + (pet.companionDays || 0), 0) + + // 模拟待办提醒数量 + this.upcomingReminders = Math.floor(Math.random() * 5) + 1 + } catch (error) { + console.error('加载统计数据失败', error) + } + }, + + getHealthIcon(status) { + const iconMap = { + healthy: 'checkmark', + warning: 'warning', + sick: 'close' + } + return iconMap[status] || 'checkmark' + }, + addPet() { uni.navigateTo({ url: '/pages/pets/add-pet' }) }, + viewPetDetail(pet) { uni.navigateTo({ url: `/pages/pets/pet-detail?id=${pet.id}` }) }, + + chatWithPet(pet) { + uni.navigateTo({ + url: `/pages/pets/pet-chat-simple?petId=${pet.id}` + }) + }, + addRecord(pet) { uni.navigateTo({ - url: `/pages/pets/add-record?petId=${pet.id}` + url: `/pages/pets/add-record-simple?petId=${pet.id}` + }) + }, + + viewHealth(pet) { + uni.navigateTo({ + url: `/pages/pets/health-charts?petId=${pet.id}` + }) + }, + + viewTimeline(pet) { + uni.navigateTo({ + url: `/pages/pets/pet-timeline?petId=${pet.id}` + }) + }, + + // 快捷操作方法 + navigateToRecords() { + this.showQuickActions = false + uni.navigateTo({ + url: '/pages/pets/all-records' + }) + }, + + navigateToStats() { + this.showQuickActions = false + uni.navigateTo({ + url: '/pages/pets/statistics' + }) + }, + + navigateToReminders() { + this.showQuickActions = false + uni.navigateTo({ + url: '/pages/pets/reminders' + }) + }, + + exportData() { + this.showQuickActions = false + uni.showToast({ + title: '数据导出功能开发中', + icon: 'none' }) } } @@ -90,6 +319,9 @@ export default { .pet-actions { margin-left: 20rpx; + display: flex; + gap: 8px; + flex-direction: column; } } diff --git a/技术栈选择建议.md b/技术栈选择建议.md deleted file mode 100644 index 9316a41..0000000 --- a/技术栈选择建议.md +++ /dev/null @@ -1,152 +0,0 @@ -# 宠物管家小程序技术栈选择建议 - -## 推荐方案:uni-app + Vue3 - -### 选择理由 - -#### 1. 功能复杂度匹配 -- 你的项目包含8个主要功能模块,功能复杂度较高 -- uni-app的组件化开发模式非常适合复杂业务场景 -- Vue3的组合式API便于组织复杂的业务逻辑 - -#### 2. 开发效率优势 -- **快速开发**:丰富的UI组件库(uView、uni-ui) -- **代码复用**:组件可以在不同页面间复用 -- **开发工具**:HBuilderX提供可视化开发支持 - -#### 3. 跨平台能力 -- 一套代码多端发布(微信小程序、支付宝小程序、H5、App) -- 为后续业务扩展提供技术基础 - -#### 4. 生态系统 -- 插件市场丰富,有现成的图表、AI对话等插件 -- 社区活跃,问题解决方案多 - -## 具体技术栈配置 - -### 前端技术栈 -``` -核心框架:uni-app + Vue3 + TypeScript -状态管理:Pinia -UI组件库:uView UI 2.0 -图表库:uCharts -工具库:lodash、dayjs -``` - -### 后端技术栈 -``` -运行环境:Node.js 16+ -Web框架:Express.js -数据库:MongoDB + Redis -文件存储:腾讯云COS -AI服务:腾讯云AI或百度文心一言 -推送服务:微信小程序模板消息 -``` - -### 开发工具 -``` -IDE:HBuilderX 或 VS Code + uni-app插件 -版本控制:Git -API测试:Postman -数据库管理:MongoDB Compass -``` - -## 项目结构建议 - -``` -pet-miniprogram/ -├── pages/ # 页面文件 -│ ├── index/ # 首页 -│ ├── pet/ # 宠物相关页面 -│ │ ├── list/ # 宠物列表 -│ │ ├── detail/ # 宠物详情 -│ │ └── add/ # 添加宠物 -│ ├── record/ # 记录相关页面 -│ │ ├── list/ # 记录列表 -│ │ ├── add/ # 添加记录 -│ │ └── detail/ # 记录详情 -│ ├── statistics/ # 统计页面 -│ ├── family/ # 家庭管理 -│ ├── adoption/ # 领养专区 -│ ├── ai-assistant/ # AI助手 -│ └── user/ # 用户中心 -├── components/ # 公共组件 -│ ├── pet-card/ # 宠物卡片 -│ ├── record-item/ # 记录项 -│ ├── chart/ # 图表组件 -│ └── upload/ # 上传组件 -├── static/ # 静态资源 -├── store/ # 状态管理 -│ ├── modules/ -│ │ ├── user.js # 用户状态 -│ │ ├── pet.js # 宠物状态 -│ │ └── record.js # 记录状态 -│ └── index.js -├── utils/ # 工具函数 -│ ├── request.js # 网络请求 -│ ├── auth.js # 认证相关 -│ ├── upload.js # 文件上传 -│ └── common.js # 通用工具 -├── api/ # API接口 -│ ├── user.js -│ ├── pet.js -│ ├── record.js -│ └── adoption.js -├── manifest.json # 应用配置 -├── pages.json # 页面配置 -└── App.vue # 应用入口 -``` - -## 关键技术实现要点 - -### 1. 数据管理 -- 使用Pinia进行状态管理 -- 本地存储用户登录状态和常用数据 -- 实现数据的离线缓存机制 - -### 2. 图片处理 -- 集成腾讯云COS SDK -- 实现图片压缩和上传 -- 支持多图上传和预览 - -### 3. 图表统计 -- 使用uCharts实现消费统计图表 -- 支持柱状图、饼图、折线图 -- 响应式图表适配不同屏幕 - -### 4. AI对话 -- 集成AI API(腾讯云或百度) -- 实现对话历史存储 -- 支持语义识别和智能提醒 - -### 5. 消息推送 -- 集成微信小程序模板消息 -- 实现家庭成员消息通知 -- 支持定时提醒功能 - -## 开发周期预估 - -基于uni-app + Vue3的开发效率,预计开发周期: - -- **项目搭建**:1周 -- **核心功能开发**:10-12周 -- **测试优化**:2-3周 -- **总计**:13-16周 - -## 学习资源推荐 - -1. **uni-app官方文档**:https://uniapp.dcloud.net.cn/ -2. **Vue3官方文档**:https://cn.vuejs.org/ -3. **uView UI文档**:https://www.uviewui.com/ -4. **微信小程序开发文档**:https://developers.weixin.qq.com/miniprogram/dev/framework/ - -## 总结 - -对于你的宠物管家小程序项目,**uni-app + Vue3** 是最佳选择: - -✅ **开发效率高** - 适合复杂功能快速开发 -✅ **技术成熟** - 生态完善,社区支持好 -✅ **扩展性强** - 支持跨平台发布 -✅ **维护成本低** - 代码结构清晰,易于维护 - -建议立即开始使用这个技术栈进行项目开发! diff --git a/第一版本功能拆分详细说明.md b/第一版本功能拆分详细说明.md index d6934a2..527e47a 100644 --- a/第一版本功能拆分详细说明.md +++ b/第一版本功能拆分详细说明.md @@ -1,419 +1,32 @@ # 宠物管家小程序第一版本功能拆分详细说明 -## 1. 功能模块总览 - -### 1.1 核心功能模块 -1. **用户系统** - 微信登录、用户信息管理 -2. **宠物档案管理** - 宠物信息录入、展示、编辑 -3. **日常记录系统** - 多类型记录的添加、查看、管理 -4. **记账统计功能** - 消费记录、统计分析、图表展示 -5. **分享权限管理** - 记录分享设置、隐私控制 -6. **家庭共养功能** - 家庭创建、成员邀请、权限管理 -7. **AI助手基础版** - 简单对话、知识查询、智能提醒 -8. **领养专区** - 发布领养、浏览申请、沟通管理 - -## 2. 详细功能拆分 - -### 2.1 用户系统 - -#### 2.1.1 微信登录 -**功能描述**:用户通过微信授权登录小程序 -**具体实现**: -- 调用微信小程序登录API获取code -- 后端通过code换取openid和session_key -- 生成JWT token返回给前端 -- 前端存储token用于后续API调用 - -**页面设计**: -- 登录页面:显示微信登录按钮 -- 授权页面:获取用户基本信息授权 - -**数据字段**: -- openid:微信用户唯一标识 -- nickname:用户昵称 -- avatar:用户头像 -- phone:手机号(可选) - -#### 2.1.2 用户信息管理 -**功能描述**:用户可以查看和编辑个人信息 -**具体实现**: -- 个人中心页面展示用户信息 -- 支持修改昵称、头像、手机号 -- 头像支持拍照或从相册选择 - -### 2.2 宠物档案管理 - -#### 2.2.1 宠物信息录入 -**功能描述**:用户可以添加宠物的基本信息 -**必填字段**: -- 宠物名字:文本输入 -- 品种:下拉选择或文本输入 -- 性别:单选(公/母) -- 生日:日期选择器 -- 到家日期:日期选择器 - -**可选字段**: -- 体重:数字输入(单位:kg) -- 毛色:文本输入 -- 性格标签:多选标签 -- 特殊说明:文本输入 -- 头像:图片上传 - -**自动计算字段**: -- 年龄:根据生日自动计算 -- 陪伴天数:根据到家日期自动计算 -- 星座:根据生日自动计算 - -#### 2.2.2 宠物信息展示 -**首页宠物卡片**: -- 宠物头像(圆形) -- 宠物名字 -- 年龄和陪伴天数 -- 快捷操作按钮(添加记录、查看详情) - -**宠物详情页**: -- 完整的宠物信息展示 -- 编辑按钮 -- 最近记录列表 -- 统计数据概览 - -#### 2.2.3 多宠物管理 -**功能描述**:支持用户管理多只宠物 -**具体实现**: -- 宠物列表页面 -- 宠物切换功能 -- 每只宠物独立的记录和统计 - -### 2.3 日常记录系统 - -#### 2.3.1 记录分类定义 -**随手记**: -- 内容:文字描述 -- 图片:可选,最多9张 -- 时间:默认当前时间,可修改 - -**大事记**: -- 预设选项:绝育、第一次吃奶、第一次吃猫粮、第一次用猫砂、第一次搞破坏、第一次出门、第一次发情、生日、到家 -- 自定义:用户可以添加自定义大事记 -- 内容:文字描述 -- 图片:可选 -- 时间:必填 - -**日常记录**: -- 体重:数值输入(kg)+ 备注 -- 尿便:次数 + 状态描述 + 图片 -- 饮食:食物类型 + 分量 + 时间 + 图片 -- 喝水:水量(ml)+ 时间 -- 记账:金额 + 类别 + 备注 - -**健康记录**: -- 喂保健品:保健品名称 + 剂量 + 时间 -- 驱虫:驱虫药名称 + 时间 + 下次提醒 -- 疫苗:疫苗类型 + 时间 + 下次提醒 -- 抗体水平:检测结果 + 时间 -- 体检:体检项目 + 结果 + 图片 -- 看病:症状 + 诊断 + 治疗方案 + 费用 -- 给药:药品名称 + 剂量 + 频次 + 时间 -- 住院:入院时间 + 出院时间 + 原因 + 费用 -- 手术:手术类型 + 时间 + 费用 + 恢复情况 - -**洗护记录**: -- 洗澡:时间 + 使用产品 + 图片 -- 剪指甲:时间 + 备注 -- 洗耳朵:时间 + 使用产品 -- 刷牙:时间 + 使用产品 -- 梳毛:时间 + 备注 -- 剃脚毛:时间 + 备注 -- 美容:时间 + 项目 + 费用 + 图片 -- 挤肛门腺:时间 + 备注 -- 擦眼屎:时间 + 备注 - -**清洁记录**: -- 消毒:消毒区域 + 使用产品 + 时间 -- 清洁:清洁项目 + 时间 -- 换猫砂:时间 + 猫砂类型 -- 洗猫砂盆:时间 + 清洁产品 -- 洗食盆:时间 -- 洗水盆:时间 -- 洗玩具:时间 + 清洁方式 -- 洗笼子:时间 + 清洁产品 -- 换滤芯:设备名称 + 时间 -- 换干燥剂:时间 + 位置 - -**自定义类型**: -- 用户可以创建自定义记录类型 -- 自定义字段配置 -- 保存为模板供后续使用 - -#### 2.3.2 记录添加流程 -1. 选择宠物(如果有多只) -2. 选择记录类型 -3. 填写记录内容 -4. 上传图片(可选) -5. 设置分享权限 -6. 保存记录 - -#### 2.3.3 记录展示和管理 -**时间线展示**: -- 按时间倒序显示所有记录 -- 不同类型用不同图标和颜色区分 -- 支持下拉刷新和上拉加载 - -**分类筛选**: -- 按记录类型筛选 -- 按时间范围筛选 -- 按宠物筛选(多宠物情况) - -**记录详情**: -- 完整的记录信息展示 -- 图片查看(支持放大) -- 编辑和删除功能 - -### 2.4 记账统计功能 - -#### 2.4.1 消费记录 -**记录字段**: -- 金额:数字输入(精确到分) -- 类别:食物、医疗、用品、服务、其他 -- 备注:文字描述 -- 关联宠物:选择宠物(支持多选) -- 时间:默认当前时间,可修改 - -**快捷记录**: -- 常用金额快捷按钮 -- 常用类别快捷选择 -- 语音输入金额 - -#### 2.4.2 统计分析 -**宠物维度统计**: -- 可以切换查看不同宠物的消费 -- 支持查看所有宠物的总消费 - -**时间维度统计**: -- 按月份统计:当月消费总额和分类占比 -- 按年份统计:全年消费趋势 -- 自定义时间范围统计 - -**图表展示**: -- 柱状图:月度消费趋势 -- 饼图:消费类别占比 -- 折线图:消费变化趋势 - -#### 2.4.3 数据导出 -- 支持导出Excel格式的消费记录 -- 按时间范围和宠物筛选导出 -- 包含详细的消费明细和统计汇总 - -### 2.5 分享权限管理 - -#### 2.5.1 分享设置 -**三种分享模式**: -- 公开:所有用户可见 -- 仅家人:只有家庭成员可见 -- 私有:只有自己可见 - -**设置方式**: -- 添加记录时设置 -- 记录详情页修改 -- 批量修改多条记录 - -#### 2.5.2 默认设置 -- 用户可以设置默认的分享权限 -- 新记录自动使用默认设置 -- 可以为不同类型的记录设置不同的默认权限 - -### 2.6 家庭共养功能 - -#### 2.6.1 家庭创建 -**创建流程**: -1. 用户点击创建家庭 -2. 填写家庭名称 -3. 选择要共享的宠物 -4. 生成邀请码 - -**家庭信息**: -- 家庭名称 -- 创建时间 -- 成员数量 -- 共享宠物列表 - -#### 2.6.2 成员邀请 -**邀请方式**: -- 邀请码分享:生成6位数字邀请码 -- 微信直接邀请:通过微信分享邀请链接 - -**邀请流程**: -1. 家庭主人发送邀请 -2. 被邀请人点击链接或输入邀请码 -3. 确认加入家庭 -4. 设置成员权限 - -#### 2.6.3 权限管理 -**角色定义**: -- 主人:所有权限,可以邀请成员、设置权限、删除家庭 -- 家人:可以查看和添加记录,不能删除其他人的记录 -- 观察者:只能查看记录,不能添加或修改 - -**权限细分**: -- 查看记录:所有角色都有 -- 添加记录:主人和家人 -- 编辑记录:只能编辑自己添加的记录 -- 删除记录:只能删除自己添加的记录 -- 管理宠物:只有主人可以 - -#### 2.6.4 消息推送 -**推送场景**: -- 新成员加入家庭 -- 重要健康记录(生病、疫苗、体检等) -- 紧急情况记录 - -**推送方式**: -- 微信小程序模板消息 -- 站内消息通知 - -### 2.7 AI助手基础版 - -#### 2.7.1 基础对话功能 -**对话界面**: -- 聊天气泡样式 -- 支持文字输入 -- 显示AI回复 - -**知识问答**: -- 宠物生病:常见疾病症状和处理建议 -- 宠物训练:基础训练方法和技巧 -- 宠物喂养:不同年龄段的喂养指导 -- 紧急情况:紧急情况的处理步骤 - -#### 2.7.2 智能提醒功能 -**语义识别**: -- 识别时间表达:明天、下周、9点等 -- 识别任务内容:疫苗、体检、喂药等 -- 生成结构化提醒 - -**提醒管理**: -- 自动生成提醒记录 -- 设置推送时间 -- 提醒后询问完成状态 -- 更新任务状态 - -#### 2.7.3 对话历史 -**历史记录**: -- 保存所有对话内容 -- 按日期分组显示 -- 支持搜索历史对话 - -**分页加载**: -- 每页显示20条对话 -- 支持上拉加载更多 -- 新对话自动滚动到底部 - -#### 2.7.4 每日总结 -**总结功能**: -- 每天晚上自动总结当天对话 -- 识别重要信息(健康问题、异常情况) -- 生成关注提醒 - -**主动关怀**: -- 如果提到宠物生病,第二天主动询问情况 -- 定期询问宠物状况 -- 提供个性化建议 - -### 2.8 领养专区 - -#### 2.8.1 发布领养信息 -**宠物信息**: -- 基本信息:名字、性别、种类、年龄 -- 健康状况:绝育、疫苗、驱虫、疾病情况 -- 性格描述:文字描述宠物性格和习惯 -- 图片上传:最多9张宠物照片 - -**领养要求**: -- 基础要求:年龄、居住条件、经济能力 -- 特殊要求:养宠经验、是否同意绝育等 -- 筛选问题:自定义问题列表 - -**发布设置**: -- 有效期:可设置领养信息的有效期 -- 联系方式:手机号或微信号 -- 地区:选择所在城市和区域 - -#### 2.8.2 浏览和筛选 -**列表展示**: -- 宠物照片和基本信息 -- 发布时间和地区 -- 快速筛选标签 - -**筛选功能**: -- 地区筛选:按省市区筛选 -- 类型筛选:按宠物种类筛选 -- 条件筛选:按年龄、性别、绝育状态筛选 - -**搜索功能**: -- 关键词搜索 -- 按品种搜索 -- 按发布者搜索 - -#### 2.8.3 申请和沟通 -**申请流程**: -1. 查看领养详情 -2. 填写申请信息 -3. 回答筛选问题 -4. 提交申请 -5. 等待审核 - -**申请信息**: -- 个人基本信息 -- 养宠经验描述 -- 居住环境说明 -- 承诺和保证 - -**沟通功能**: -- 简单的聊天界面 -- 支持文字和图片 -- 消息推送通知 - -#### 2.8.4 管理和审核 -**发布者管理**: -- 查看所有申请 -- 筛选合适的申请者 -- 与申请者沟通 -- 选择最终领养者 - -**管理员审核**: -- 审核发布的领养信息 -- 处理举报和投诉 -- 维护平台秩序 - -**状态管理**: -- 发布中、已暂停、已完成 -- 申请中、已通过、已拒绝 -- 自动状态更新 - -## 3. 技术实现要点 - -### 3.1 数据存储 -- 使用MongoDB存储所有数据 -- 图片存储在腾讯云COS -- Redis缓存热点数据 - -### 3.2 API设计 -- RESTful API设计 -- JWT token认证 -- 统一的错误处理和返回格式 - -### 3.3 性能优化 -- 图片压缩和懒加载 -- 分页加载减少数据量 -- 缓存常用数据 - -### 3.4 安全考虑 -- 用户数据加密存储 -- API接口权限验证 -- 图片内容安全检查 - ---- - -**文档版本**:v1.0 -**创建日期**:2025年1月 -**负责人**:开发团队 +- 宠物 + - 我的宠物记录(有多只宠物) + - 我的宠物信息(有多只宠物) + - 宠物信息详情 + - 体重图表等等一些宠物健康相关的图形化记录 + - 宠物信息修改 + - 宠物性格预设 + - 我的宠物智能体 + - 宠物智能体聊天 + - 宠物智能体互动(通过live2d或者其他方式进行互动) + - 我的宠物记录 + - 添加宠物 + - 创建记录 +- 助手 + - AI对话,上半部分有这个助手的基本介绍,介绍助手能做什么,以及加一个宠物医生助手的动图头像之类的,上面有几个常见问题,点了就发送,然后AI回答,或者自己编辑询问等待回答。 +- 测评 + - 测评列表(TAB上面选择猫或者狗,默认为猫),然后左边有猫粮/猫罐头/猫砂/等等,狗狗同理 + - 测评详情 +- 领养 + - 领养宠物列表(地区筛选,种类筛选猫或者狗) + - 点击详情可以进行填写信息进行申请 +- 我的 + - 我的个人信息管理 + - 登录 + - 我的家庭 + - 我的宠物概括(多少只,多少记录,多少提醒) + - 领养管理 + - 进去显示已发布的管理列表 + - 点进去显示申请领养人填写的申请记录 + - 或者点击发布申请,你看一下放下右下角的悬浮按钮或者右上角 \ No newline at end of file