Inspiration
近些年来,世界变化莫测。在最近的两年里,各种各样的变化也对人们的身心健康提出了更加严峻的考验。大到影响世界的新冠疫情,暴雨,森林火灾,到性侵,诽谤等等难以对社会整体造成很大影响但深刻影响着个体的事情。
而并不广为人知的是,在遭遇过这些创伤性事件后,很多人们出现了各种情况的心理问题。
根据 Mental health today 的文章 Communication is a key ingredient in mental health recovery 表示,
Effective communication is essential in building rapport and developing therapeutic relationships.
而由于社会鲜有人关注这方面的问题,很多人没有合适的交流或者宣泄途径,进而导致短期的心理创伤演变为心理疾病。
PsyChonnect的建立旨在为经历过心理创伤群体提供一个互相倾诉和帮助,以及获取外界关注和援助的平台。并有专业的心理咨询人员入驻,对受助者的心理状况进行干预。
What it does
心理互助平台主要由以下部分组成:
- 登陆界面
- 注册界面
- 匹配界面
- 聊天界面
How to use
- 首先进入注册界面,输入姓名,年龄,所经历过的对心理健康产生影响的时间,以及自我认知的心理健康方面的问题。
- 根据您输入的信息,系统会运行匹配算法,并在屏幕上根据匹配程度从高到低展示出适合沟通的人选(demo中默认为契合度最高的五个人)。
- 浏览他们的经历并选择想要沟通的人选,在聊天框输入你想对ta说的话,开始愉快的聊天吧!
- 在左侧的sidebar可以切换聊天的对象。
- 与之前对象的记录会保存,在每次重新进入和ta的会话时聊天历史会全部加载。
How we built it
ThinkPHP
- 采用MVC设计模式
- Controllers有如下:
- Controller: ThinkPHP框架自带的基础Controller
- Base: 在Controller基础上新增name属性及cookie验证
- Login: 注册及登录相关操作
- App: 主应用,聊天、修改档案相关操作
- Models有如下:
- Model: ThinkPHP框架自带的基础Model
- BaseModel: 在Model基础上新增数据库配置
- LoginModel: 注册及登录相关操作
- App: 主应用,聊天、修改档案相关操作
- Views
- Public: header.html, footer.html, 事实上project中并没有真正用到header和footer, 这两个文件仅用来引入公用css和js
- Login: register.html, login.html
- App: findChat.html, chat.html, settings.html, index.html原作为入口文件但项目放弃入口,test.html为debug文件
MySQL:数据都比较有结构,所以采用关系型数据库
user存储用户信息,name:用户姓名create_time:账号创建日期password:密码disorders:心理异常症状events:创伤经历avator_url:用户头像urlrole:身份为受助者or咨询师
message存储用户间的通信消息,sender:消息发送人receiver:消息接受人time:发送时间text:消息内容
What we learned
- Teaaaaaammmmwork!
- 登录界面的设计,如何存储登录数据(cookie)
- "伪聊天"系统的数据库设计
- ajax和form action和window.location.href三种跳转及传输数据到后端的区别
- ThinkPHP框架中fetch与ajax联用会把html自动变成字符串,这个框架的"bug"无法修正,可能作者觉得这样不make sense,最终直接改为其他方式
- 不应该根据名字去查数据,否则就会出现比如修改名字后聊天记录丢失的bug(现在就有)
What to expect
- 登录cookie修复,用id匹配而不是名字(数据表已有primary key id列,但后端没有实现)
- 头像支持上传而不是url
- 用户表新增别的列,用于更好地匹配,目前匹配算法仅为1.5 * 相同经历数 + 1 * 相同创伤数
- 引入advirsor模块,advisor会填写自己擅长的领域,系统会据此与受助者进行匹配,为他们提供更专业细致的帮助。
- 引入moments模块(类似朋友圈),允许匿名或实名发布动态,分享自己的心理创伤经历,以及采取何种方法来逐渐克服的。
- 新增推送功能,邀请advisor根据不同心理疾病总结的应对措施,并根据用户画像进行推送。
Log in or sign up for Devpost to join the conversation.