本文档用于记录项目开发过程中遇到的问题和最终的解决方案 在书写这个文档的时候应该遵循以下格式:
日期——直接用输入法输入“日期”即可获得对应格式,如:2024 年 5 月 1 日 [产生问题/汇报进度的模块] 例如:毫米波心率测量模块;数据库接口模块 [遇到的问题描述/开发进度展示] 汇报人
此文档最终将用于撰写课程设计的报告,建议用于撰写报告的相关内容在记录开发 Log 的时候按照最终报告的格式进行书写,附上对应的展示图片并做好标题命名,所有图片存储在文件夹 fig 中
2024 年 5 月 5 日 15 点 18 分 完成小程序最初加载的页面
页面路径:software_test\mini_program_test\pages\login\init_loading.vue
15 点 58 分 完成在学习板块的背景渐变设计,详见 software_test\mini_program_test\App.vue 中的 globalStyle 内容
等待蓝牙连接页面完成半成品 页面路径:software_test\mini_program_test\pages\learn\wait4bt.vue
2024 年 5 月 6 日 01 点 14 分 完成 API 对话功能 python 的 demo 演示,初步决定智学对话学习助手的交互形式
2024 年 5 月 7 日 18 点 30 分 完成了前端登录页面简单的跳转逻辑实现
22 点 18 分 完成了数据库用户最基本信息的设计
2024 年 5 月 10 日 17 点 57 分 数据库 API 接口调试基本完成
2024 年 5 月 14 日 17 点 56 分 完成用户注册登录系统的后端开发
2024年5月15日 17点29分 开发AI聊天页面样式
2024年5月18日 完成基本AI聊天页面,剩下细节需要调整
2024年5月19日 15点06分 完成了项目创建的上云和搜索框实现
17点55分
完成了页面高度调整,亟待完成easyinput
组件的样式调试
2024 年 5 月 5 日前已完成
- 本地毫米波数据处理,
- 学会租云服务器进行 yolo 模型训练、本地摄像头验证功能
- Dlib 功能实现、本地摄像头验证功能
2024 年 5 月 9 日完成
- 毫米波模块静息态、stroop 范式测试
2024 年 5 月 18 日完成
- yolo模型的云端加载
- Dlib模型的云端加载
- yolo,Dlib模型http协议测试(jupyter notebook和云服务器通信)
- 使用 STM32 已实现将串口接收数据进行串口发送功能,功能操作方式(可通过按键控制开始收发等)有待进一步优化,串口接收毫米波输出数据,串口通过蓝牙发送数据,蓝牙还未调试
- 在微信开发平台已经搭建蓝牙接收调试程序,正在进行调试,调试完毕后将开始学习并进行进行 uni—app 的搭建,微信开发者平台的蓝牙框架适用于 uni-app 只需移植
3.完成 uni-app 蓝牙页面的开发,蓝牙连接和学习开始的 button 功能待合并
4.完成了 tabBar 的设计,在 tabBar 设计时遇到问题:图片的链接需要使用本地的而非网络 url 格式链接,由 codefun 设计的静态 ui 图片链接均为网络 url、链接,我初步只更改了 tabBar 的几个图片的本地连接,后续有需要再更改其它
5.完成了 user 页面的逻辑跳转和组件功能,有待和数据库进行 api 调用数据交互
2024 年 5 月 7 日 出问题的静态页面总结:
- 页面“书架”的滚动和 tabBar
- 页面“学完”的图标
- 蓝牙连接 Ready 后的问号位置对齐
- 复习的“历史”界面头顶消失
致命问题: 在 codefun 的 view 容器中有 header 标记的都无法编译出来
解决方案 问题原因:Header 标识的容器组件错误,导致误删了状态栏以外的元素 解决方案:
- 在 codefun 平台上更改 header 标识的容器组件
- 在 figma 上修改对应属性
2024 年 5 月 10 日 发现 codefun 平台上面存储的静态素材的 url 会更新 解决方案
- unicloud 平台上云存储静态素材
- 用腾讯云或阿里云等云平台自己搭建云图床
优先尝试第一种解决方案
2024年5月17日 开发问题汇总
- 通过
v-if
,v-for
,scroll-view
等方法与组件解决聊天框对话的渲染 - 解决发送后自动滚动到底部的问题,关键在于属性
scroll-into-view
的使用 - 解决了下拉框的样式问题:1)必须确认css样式命名;2)可以通过>>>改动组件深层的样式
tips:
- 需要熟练掌握开发者工具用于调试
- 深刻理解flex布局,不会就查官方文档或官方教程
2024年5月18日 通过透明度调整解决了信息框与输入框显示的问题
2024年5月20日 03点31分 发现view框无法对齐 解决方案 找到self-stretch方法解决
03点49分 关于没办法view框没办法置底的问题 解决方案 直接暴力把整个view移除到page那个view以外,根本上解决问题 并且通过粗暴调整如下样式
.section_12 {
position: absolute;
bottom: 0;
padding: 39.52rpx 30rpx 39.52rpx 30rpx;
background-color: #ffffff;
border-radius: 25rpx;
box-shadow: 0rpx -4.17rpx 8.33rpx #00000040;
/* margin-left: 40rpx; */
/* margin-right: 40rpx; */
}
2024 年 5 月 9 日毫米波问题总结:
- 在测试静息态和压力态(心算范式)时的 HRV 值差别不大,难以区分
- 串口数据和实际心率图相差较大,导致 RR 间隔抖动大,基于此计算出来的 HRV 值误差也非常大
解决方案 仅实现功能,忽略精度。
2024 年 5 月 10 日 数据库表结构开发有点异常 解决方案 补充基础知识,详细了解工作原理
2024 年 5 月 14 日 02 点 23 分 实现用户注册密码加密存储的时候始终存储不上,为空字符
解决方案 经过排查发现是 this.hashPassword 变量收不到值,最终排查出错误之后结合 GPT 问答发现是异步调用问题
注意:
- 异步调用要么在 Promise 对象返回后.then()里面调用后面的代码
- 要么就 async 对应的代码之后老老实实 await
16 点 11 分 校验邮箱唯一性的时候出现问题,始终无法正常搜索数据库,代码如下:
// 用于检测是否字段是否在数据库中唯一
"use strict";
const db = uniCloud.database();
exports.main = async (event, context) => {
let { key, value } = event;
return await db
.collection("SmartLearn_user")
.where({
key: value,
})
.get();
};
解决方案:
不能再对象{}内字面使用key:value
,这样会key
被视为字符串字面量而不是变量,此时实际上在查询"key"
而不是key
变量的值
修改后代码:
// 用于检测是否字段是否在数据库中唯一
"use strict";
const db = uniCloud.database();
exports.main = async (event, context) => {
let { key, value } = event;
let key_value = {};
key_value[key] = value; // 直接写key:value
return await db.collection("SmartLearn_user").where(key_value).get();
};
2024年5月31日
14点07分 本地的云函数相关依赖上云出现问题,使用本地调试能够跑通,但是使用云函数就不行了 02点53分
- 密码验证的,通过把node_modules放在云函数文件夹里并且调整好package.json的依赖直接解决
- 调用KimiAPI的一顿调试并问GPT和kimi都指向云函数支持的node.js的版本问题,最终在饭后找到对应的CSDN文章发现可以在package.json中规定所支持的Node.js的版本,注意好及时部署后问题迎刃而解
2024年6月3日 02点48分 出现回旋镖,发现知识地图和问题生成都有问题 解决方案:
- 使用npm管理相关的包,不要随便乱复制!
(未打勾表示未实现)
-
登录页面添加微信登录页面入口
-
微信一键登录页面
-
邮箱登录输入密码的文本输入框加一个小眼睛(显示密码的)(主要是需要这个图标)
-
5 月 7 日提出的若干问题
-
注册成功的地方添加一个绑定微信的按钮,引入绑定微信的页面
-
绑定微信的页面
-
绑定微信成功页面(跟注册成功相似但做一丢丢区分)
-
添加一个能够让用户更改用户名的地方(新页面 or 图标),后端默认用邮箱注册,用户名随机生成
-
考虑在用户注册的部分添加邮箱验证功能(多一个输入框填写验证码)
用于对协同开发过程中的留言,每次开发前都应该查看!!避免重复开发