一、本阶段任务综述

本阶段项目进入核心功能开发的阶段,团队采取并行开发策略,重点推进后端基础架构搭建与AI音频分析模块的落地。

  1. 后端负责人完成了用户认证体系及个人中心模块的开发,打通了从前端请求到数据库落地的完整链路;
  2. AI模块负责人完成了代码仓库的标准化建设并成功封装了基于Librosa的音频特征提取工具类与基于通义千问大模型的情绪分析工具类,实现了“音频输入→特征提取→大模型分析→情绪输出”的AI核心流程。
  3. 两项工作互为支撑,为后续接口整合与前后端联调奠定了坚实基础。

二、后端核心模块开发

用户认证体系搭建
注册功能实现:设计并实现了基于手机号的注册接口,通过正则表达式校验手机号格式、数据库唯一性检查防止重复注册,采用Werkzeug的密码哈希算法保障用户密码安全,结合事务回滚机制确保数据库操作的原子性。测试验证显示,注册接口可正确处理正常请求与异常情况,新用户数据能准确写入腾讯云MySQL数据库。
登录功能实现:开发登录接口,通过手机号查询用户、密码哈希比对验证身份,返回用户基础信息(用户ID、昵称、手机号)供前端使用。测试表明,登录接口可准确识别用户身份,对密码错误、用户不存在等异常场景返回对应状态码(401/404),满足基础认证需求。
在这里插入图片描述

个人中心模块开发
资料修改接口:实现了支持混合数据(JSON文本+文件流)的个人信息更新接口,可处理昵称修改、邮箱更新(含唯一性校验)、密码修改(需验证旧密码)及头像上传功能。针对头像上传,采用UUID生成唯一文件名防止覆盖,使用secure_filename处理文件名避免路径遍历攻击,自动创建存储目录保障文件保存稳定性。
数据一致性验证:通过Python脚本模拟前端请求,完成“登录获取凭证→携带凭证修改资料”的链式测试,验证了接口对中文昵称(如“买蛋糕”)的支持能力,Navicat直连数据库确认数据落地准确,证明了后端CRUD逻辑的可靠性。
在这里插入图片描述
在这里插入图片描述

三、AI音频分析模块开发

团队协作环境建设
代码仓库搭建:在Gitee创建项目主仓库,制定“主分支+开发分支”的分支管理规范,编写README.md明确项目说明与运行步骤,配置.gitignore过滤无关文件,添加团队成员并配置读写权限,实现多人协作开发的规范化管理。
后端框架对接:拉取后端负责人提交的Flask基础框架代码,验证目录结构、路由配置及接口可用性,确保本地开发环境与后端框架兼容,为后续AI模块与后端整合做好准备。
云数据库连接:通过MySQL Workbench完成本地环境与腾讯云MySQL数据库的连接配置,验证数据表结构及表间关系,实现开发环境对云数据库的读写操作,为音频信息、情绪分析结果的存储提供数据层支持。
AI核心工具类封装
音频特征提取工具类:封装AudioFeatureExtractor类,统一音频处理逻辑(固定16000Hz采样率、限制10秒时长),提取MFCC(梅尔频率倒谱系数)、能量均值、过零率均值、频谱质心均值四大核心声学特征,兼容MP3/WAV格式,添加异常捕获避免因文件损坏导致程序崩溃。测试表明,工具类可稳定输出结构化特征文本,为大模型分析提供标准化输入。
大模型情绪分析工具类:封装PetEmotionAnalyzer类,基于通义千问qwen-turbo模型,设计专用Prompt模板限定输出为标准JSON格式(包含情绪类型、置信度、分析依据),实现API调用、异常处理、JSON解析容错功能。本地测试验证,工具类可准确解析大模型返回结果,输出符合项目需求的情绪分析数据(如“兴奋”“焦虑”等),置信度与分析依据完整有效。

四、技术理解与架构思考

  1. 后端架构设计:分层解耦与安全优先
  2. 模块化路由设计:采用Flask蓝图(Blueprint)机制,将认证模块(auth_bp)与个人中心模块(profile_bp)分离,避免路由命名冲突,提升代码可维护性。例如,认证相关接口统一注册在/api/auth前缀下,个人中心接口注册在/api/profile下,符合RESTful API的资源划分原则。
  3. 密码安全存储:摒弃明文存储,采用Werkzeug的generate_password_hash和check_password_hash方法,基于PBKDF2-SHA256算法对密码进行哈希处理。该算法通过加盐(salt)和多次迭代,有效抵御彩虹表攻击,即使数据库泄露,攻击者也难以反推原始密码。
  4. 事务一致性保障:在注册、资料修改等涉及数据库写操作的接口中,通过try-except块包裹db.session.commit(),一旦发生异常(如唯一性冲突、文件保存失败),立即执行db.session.rollback(),确保数据库状态的一致性,避免脏数据产生。
  5. 字符集适配实践:针对中文昵称存储乱码问题,将MySQL表字符集从utf8(仅支持3字节)升级为utf8mb4(支持4字节,兼容Emoji),并在Python连接参数中显式指定charset=‘utf8mb4’,解决了“数据库存储层-连接层-应用层”的字符集一致性问题,验证了“数据库字符集配置需全链路统一”的设计原则。
  6. AI模块设计:标准化封装与容错处理
    特征提取的标准化:音频特征提取工具类通过固定采样率(16000Hz)、限制时长(10秒),确保不同来源的音频文件(如不同设备录制的MP3/WAV)输入到大模型的特征格式统一。例如,MFCC特征提取时固定n_mfcc=20,能量、过零率等特征均计算均值,避免因音频时长差异导致特征维度不一致,为大模型提供稳定的输入。
  7. 大模型调用的容错设计:情绪分析工具类在Prompt中严格限定输出为标准JSON格式,并通过json.loads()解析后进行字段校验(检查emotion、confidence、analysis是否存在),避免因大模型返回格式异常(如包含额外文本)导致程序崩溃。同时,添加API调用超时处理(timeout=10)和网络异常捕获,确保在模型服务不稳定时能返回明确错误信息,而非直接抛出未处理异常。

五、技术难点与解决方案

  1. 后端数据字符集适配
    问题:初期数据库存储中文昵称时出现乱码(显示为“???”),影响数据一致性。
    解决:排查发现MySQL默认utf8字符集为“残血版”(仅支持3字节),升级为utf8mb4(支持4字节),并修改Python连接参数指定charset=‘utf8mb4’,彻底解决中文及Emoji存储问题。
  2. AI模块混合数据处理
    问题:音频上传接口需同时处理文本参数(如用户标识)与文件流(音频文件),传统JSON解析方式无法满足需求。
    解决:采用request.get_json(silent=True)解析文本参数,request.files.get(‘avatar’)获取文件流,实现双模数据接收,结合UUID重命名文件防止覆盖,保障文件存储与文本更新的原子性。

六、下阶段工作计划

接口整合与联调:后端负责人完善宠物信息的功能
前后端联调:AI模块负责人配合前端团队,完成前后端联调,解决跨域问题,验证接口返回格式与前端渲染逻辑的兼容性。
前端:基于目前功能,进行分前端开发

七、本阶段总结

本阶段团队高效完成分工协作,后端负责人聚焦用户认证与数据管理,实现了安全可靠的账户体系与个人信息管理功能;AI模块负责人推进团队协作环境建设与AI核心能力落地,完成了从音频特征提取到大模型情绪分析的全流程开发。两项工作分别解决了“用户身份管理”与“AI情绪识别”两大核心问题,技术实现规范、测试验证充分,为项目后续功能扩展与Demo演示奠定了坚实基础。整体进度符合计划,代码质量与模块设计达到预期,团队协作效率显著提升

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐