1. 项目背景与核心价值
双相情感障碍作为一种常见的精神健康问题,影响着全球数百万人的日常生活。这类患者往往面临着情绪剧烈波动、社交困难等挑战,而传统的线下支持渠道又存在地域限制和隐私顾虑。这正是我们开发这个线上交流平台的初衷——通过技术手段为特定人群构建一个安全、便捷的互助社区。
选择Flask+Vue的技术组合并非偶然。Flask作为Python生态中最轻量级的Web框架之一,以其灵活性和扩展性著称,特别适合快速构建RESTful API服务。而Vue.js渐进式的特性,则让我们能够从简单功能开始逐步迭代,最终实现丰富的交互体验。这种前后端分离的架构,既保证了开发效率,又为后续功能扩展留足了空间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 技术栈选型考量
后端选择Flask主要基于三个关键因素:首先,Python在自然语言处理(NLP)方面的丰富生态,为后续引入情绪分析功能埋下伏笔;其次,Flask-SQLAlchemy提供的ORM支持,让我们能用最简洁的代码实现复杂的数据库操作;最后,Flask-JWT-Extended等扩展包为认证系统提供了开箱即用的解决方案。
前端采用Vue 3的组合式API写法,显著提升了代码组织效率。特别是配合Pinia状态管理,使得跨组件共享用户登录状态、消息通知等数据变得异常简单。实测表明,这种架构在中等规模应用中,比传统Vuex方案减少约30%的样板代码。
2.2 核心数据模型设计
用户系统的设计特别注意了隐私保护需求:
python复制class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True)
_password_hash = db.Column('password', db.String(128)) # 实际存储加盐哈希值
email = db.Column(db.String(120), unique=True)
registration_ip = db.Column(db.String(45)) # 支持IPv6地址
last_login = db.Column(db.DateTime)
is_active = db.Column(db.Boolean, default=True)
posts = db.relationship('Post', backref='author', lazy='dynamic')
# 密码加密处理
@property
def password(self):
raise AttributeError('password is not a readable attribute')
@password.setter
def password(self, password):
self._password_hash = generate_password_hash(password)
帖子系统采用多级分类设计,支持用户按情绪状态筛选内容:
python复制class Post(db.Model):
__tablename__ = 'posts'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(140))
body
