哈基米队——CodeArts团队实战总结

哈基米队 2025-11-12 23:30:08
这个作业属于哪个课程2501_CS_SE_FZU
这个作业要求在哪里软工实践——CodeArts团队实战总结
团队名称哈基米队
这个作业的目标结合之前的大模型评测作业,进一步完成相关功能,最终做出一个基于大语言模型的购车意向咨询软件
其他参考文献《构建之法》

目录

  • 一、项目地址
  • 仓库地址
  • 二、CodeArt的提交日志截图和前后端commit次数
  • 1、部分CodeArt提交日志截图
  • 2、commit次数
  • 三、程序运行环境
  • 四、功能实现思路
  • 1、模块分工与技术选型
  • a、模块拆分
  • b、技术选型
  • 2、各模块功能实现思路
  • a、用户模块
  • b、购车咨询模块
  • c、附加功能模块
  • d、GUI界面实现
  • 五、功能需求建模分析
  • 1、用例分析
  • 2、类图分析
  • 六、程序截图
  • 七、评估每位组员的贡献比例
  • 八、PSP和遇到的困难及解决方式

一、项目地址

仓库地址

仓库地址

二、CodeArt的提交日志截图和前后端commit次数

1、部分CodeArt提交日志截图

img

img

img

img

img

img

2、commit次数

成员commit
102300416郑哲傲7
102300417胡致兴6
102300418陈周发7
102300419黄贵7
102300420林少杰8
102300421郑栋文7
102300422吴坚铭7
102300423骆泽权8
102300429林哲兴8

三、程序运行环境

四、功能实现思路

1、模块分工与技术选型

a、模块拆分

  1. 用户模块
    负责用户全生命周期的身份与信息管理,支撑个性化服务基础:
    核心功能:用户注册(用户名 / 密码校验)、账号登录(凭证验证)、密码找回 / 重置
    信息管理:姓名、手机号等基础信息维护,购车预算、偏好车型(轿车 / SUV / 新能源等)、品牌倾向等个性化标签管理
    权限控制:区分普通用户与管理员账号身份,限制功能访问范围
  2. 购车咨询模块
    系统核心业务模块,衔接用户需求与 AI 智能服务:
    咨询请求管理:接收用户咨询参数(预算范围、车型偏好、使用场景、燃料类型、配置需求等),进行参数合法性校验与格式化
    智能咨询生成:将用户需求结构化转换为 LLM 提示词,调用大语言模型服务(Qwen/ChatGLM),获取专业购车建议(车型推荐、优缺点分析、选购要点)
    咨询记录管理:保存用户咨询原始需求、LLM 生成结果、咨询时间戳等数据,支持用户查看历史咨询记录、管理员追溯咨询内容
  3. 附加功能模块
    (1)积分系统子模块
    激励用户活跃,提升系统粘性:
    积分获取:用户完成咨询、提交咨询反馈、邀请新用户注册等行为可获得对应积分
    积分管理:积分累计统计、积分明细查询,支持积分有效期设置
    积分兑换:提供汽车周边礼品(车膜、车载充电器、座椅垫等)兑换功能,包含兑换规则展示、兑换记录查询、礼品库存管理
    (2)管理子模块
    支撑系统运营与数据监控,仅对管理员开放:
    数据统计分析:用户注册量、咨询总量、日均咨询频次等核心数据统计,热门咨询话题(如 "15 万级新能源 SUV 推荐")、高频车型偏好等趋势分析
    账号与内容管理:用户账号审核、禁用 / 启用操作,咨询记录筛选(按时间 / 用户 / 关键词)、违规咨询内容删除
    运营支持:导出统计报表、热门咨询话题人工标注与优化建议录入
    (3)压力测试子模块
    保障系统高并发场景下的稳定性:
    并发模拟:生成百万级虚拟用户咨询请求,模拟不同地区、不同需求类型的并发访问场景
    性能监控:实时统计系统响应时间、请求成功率、LLM 接口调用延迟
    稳定性测试:长时间高负载运行测试,验证数据库连接池、LLM 接口重试机制、服务器资源占用情况(CPU / 内存 / 网络)
  4. GUI 界面模块
    负责全平台可视化交互,衔接用户操作与后端逻辑:
    基础交互组件:登录 / 注册窗口、表单输入框(带校验提示)、功能按钮、弹窗提示(成功 / 错误 / 确认)
    功能界面展示:用户中心(信息编辑 / 积分查询)、咨询界面(需求输入表单 / LLM 结果展示)、历史记录界面(列表 + 详情)、管理员后台(数据统计图表 / 管理表格)
    交互逻辑处理:界面跳转控制、表单数据提交校验、异步请求状态反馈(如咨询加载中动画)、数据展示格式化(咨询记录分页、积分明细排序)

b、技术选型

  1. 整体技术栈选型
    核心技术栈:Python + Tkinter + Flask选型说明:Python 生态丰富、开发效率高,适配 LLM 接口调用、数据处理等场景;Tkinter 作为 Python 内置 GUI 库,轻量化且无需额外复杂配置,满足桌面端界面快速开发需求;Flask 框架轻量灵活,适合构建后端 API 服务,支撑前后端数据交互。
  2. 各层级技术选型
    (1)界面层(GUI 界面模块)
    核心技术:Tkinter + ttk(Tkinter 扩展组件库)
    辅助工具:Pillow(图片处理,支持界面图标、背景图展示)、tkinter.messagebox(弹窗提示)
    功能支撑:
    基础组件:窗口、表单输入框、按钮、标签、下拉菜单等核心交互组件
    数据展示:Treeview(表格展示用户列表、咨询记录)、Text(富文本展示 LLM 咨询结果)
    交互优化:threading(多线程处理异步请求,避免界面卡顿)、tkinter.scrolledtext(带滚动条的文本框)
    (2)后端服务层(用户模块、购车咨询模块、附加功能模块)
    核心框架:Flask(构建 RESTful API,处理前端请求、业务逻辑封装)
    辅助技术:
    数据校验:marshmallow(请求参数格式校验,确保数据合法性)
    并发处理:gunicorn(WSGI 服务器,支持多进程并发,提升请求处理能力)
    日志记录:logging(系统运行日志、错误日志记录,便于问题排查)
    (3)数据层(全模块数据存储)
    数据库选型:MySQL 8.0
    选型说明:相比 SQLite,MySQL 支持更高并发访问、数据持久化稳定性更强,适配用户量增长后的存储需求,支持复杂查询(如热门咨询话题统计、用户行为分析)
    数据访问:SQLAlchemy(ORM 框架,简化数据库操作,避免原生 SQL 冗余)
    缓存优化:Redis(可选,缓存高频访问数据如热门咨询结果、用户登录状态,提升响应速度)
    (4)LLM 接口层(购车咨询模块核心依赖)
    集成模型:阿里百炼(Qwen)API + 智谱 AI(ChatGLM)API
    辅助技术:
    请求处理:requests(HTTP 协议调用 LLM API)
    稳定性保障:tenacity(重试机制,处理 API 超时、临时故障)
    提示词工程:自定义格式化模板,规范用户需求转译,确保 LLM 输出结构化结果
    (5)附加功能支撑技术
    积分系统子模块:Redis(积分实时计算与缓存)、MySQL(积分明细、兑换记录持久化)
    管理子模块:pandas(数据统计分析)、matplotlib/seaborn(生成统计图表,如热门咨询话题折线图、用户增长柱状图)
    压力测试子模块:locust(Python 开源压测工具,模拟百万级并发请求,支持分布式压测)
    (6)团队协作与版本控制
    版本控制:Git(代码版本管理,支持分支开发、合并)
    代码仓库:Gitee/CodeArts(团队代码托管,支持权限管理、提交记录追溯)
    协作工具:Jira(任务分配、进度跟踪)、Wiki(技术文档、接口说明维护)
    (7)部署与运维(可选)
    部署环境:Windows Server/Linux(后端服务部署)、桌面端打包(PyInstaller,将 GUI 程序打包为 exe 可执行文件,方便用户安装)
    监控工具:Prometheus + Grafana(系统性能监控,如接口响应时间、数据库连接数)

2、各模块功能实现思路

a、用户模块

  1. 注册功能
    界面设计:通过 register_window.py 构建可视化注册表单,包含用户名输入框、密码输入框(带隐藏显示切换)、姓名输入框、手机号输入框、购车预算输入框(支持区间输入)、偏好车型下拉选择框(轿车 / SUV / 新能源 / MPV 等选项),搭配注册确认按钮和表单校验提示组件。
    数据校验:前端通过输入长度限制、格式提示做基础校验;后端在 app.py 中通过正则表达式校验手机号格式(如 /^1[3-9]\d{9}$/),通过 database.py 调用数据库查询接口,校验用户名 / 手机号是否已存在,确保信息唯一性。
    数据存储:校验通过后,密码经 MD5 加密处理(hashlib.md5),通过 db_manager.create_user 方法将用户名、加密密码、姓名、手机号、购车预算、偏好车型等信息存入 models.py 定义的 User 数据表,返回注册成功结果及用户 ID。
  2. 登录功能
    界面设计:通过 login_window.py 搭建登录界面,包含用户名输入框、密码输入框、登录按钮、注册跳转按钮,支持 “记住密码” 可选功能。
    身份校验:前端收集用户输入的用户名和密码,后端 app.py 接收请求后,将密码加密处理,通过 db_manager.get_user_by_credentials 方法查询数据库,比对用户名与加密后的密码是否匹配。
    权限跳转:校验通过后,返回用户基础信息(含用户 ID、身份标识),前端 main.py 接收结果后关闭登录窗口,根据用户身份(普通用户 / 管理员)打开对应主窗口,同时缓存用户登录状态。
  3. 用户基本信息管理
    界面设计:在主窗口侧边栏添加 “个人中心” 入口,点击后展示信息管理界面,包含个人信息展示区(姓名、手机号、购车预算等)和编辑按钮,编辑时切换为可输入 / 选择组件。
    信息修改:用户修改信息后提交请求,后端 app.py 接收修改数据,再次校验手机号等关键字段格式,通过 db_manager.update_user_info 方法更新数据库中对应用户的记录。
    数据同步:修改成功后,前端实时刷新信息展示区,同时更新本地缓存的用户信息,确保后续操作(如咨询服务)使用最新的个性化标签。

    b、购车咨询模块

  4. 咨询请求管理
    界面设计:通过 consultation_window.py 构建咨询表单界面,包含预算范围输入框(支持固定金额或区间输入)、车型偏好下拉框、使用场景多选框(通勤 / 家庭 / 商务 / 越野等)、燃料类型选择框(燃油 / 电动 / 混动)、品牌偏好输入框(支持自由输入或多选),搭配提交咨询按钮和加载状态提示组件。
    请求处理:用户提交后,前端通过多线程(threading)发起请求,避免界面卡顿;后端 app.py 接收请求数据,通过参数合法性校验(如预算为正数、必填项非空),将合法请求暂存至内存队列,等待 LLM 服务处理。
    异常处理:若参数校验失败,前端弹窗提示具体错误(如 “预算范围格式错误”);若网络异常,提供重试按钮,确保用户操作流畅。
  5. 咨询记录保存与查看
    记录存储:咨询请求提交后,后端在调用 LLM 服务前,通过 db_manager.create_consultation 方法,将用户 ID、预算范围、车型偏好、使用场景等原始需求存入 models.py 定义的 Consultation 数据表,生成唯一咨询记录 ID,待 LLM 返回结果后,更新该记录的 llm_response 字段。
    查看界面:在主窗口侧边栏添加 “我的咨询” 入口,点击后通过表格组件(ttk.Treeview)展示历史咨询记录,包含咨询时间、核心需求摘要、查看详情按钮,支持按时间倒序排序。
    详情展示:用户点击查看详情后,前端通过咨询记录 ID 调用 app.py 的 /api/consultation/int:consultation_id 接口,后端从数据库查询该记录的完整信息(原始需求 + LLM 响应结果),前端以富文本形式展示,支持复制、导出功能。
  6. 基于 LLM 的咨询结果生成
    Prompt 构建:后端 app.py 接收合法咨询请求后,按照预设模板将用户需求结构化组装为 Prompt(如明确要求推荐 3-5 款车型、包含优缺点分析和选购建议),确保 LLM 理解需求边界。
    模型调用:通过 llm_service.py 封装的统一接口,同时支持调用阿里百炼(Qwen)和智谱 AI(ChatGLM)API,调用过程中实现重试机制(tenacity),处理 API 超时、临时故障等问题,确保服务稳定性。
    结果处理:接收 LLM 返回的响应后,无需额外格式化(因 Prompt 已约定输出结构),直接存储至数据库,并同步返回给前端,前端在 consultation_window.py 中以清晰的富文本格式展示,突出车型推荐、核心亮点等关键信息。

    c、附加功能模块

  7. 积分系统子模块
    积分规则设计:在数据库中新增积分相关数据表(用户积分表、积分明细记录表、礼品表),定义积分获取规则(单次咨询获 10 积分、提交咨询反馈获 5 积分、邀请新用户注册获 20 积分),积分有效期设为 12 个月。
    积分增减逻辑:用户完成咨询后,后端在 app.py 的 /api/consult 接口中,同步调用积分增加方法,通过 db_manager.add_points 记录积分变动(用户 ID、变动类型、积分数量、时间戳);用户兑换礼品后,扣减对应积分,更新积分明细和礼品库存。
  8. 管理子模块
    管理员权限控制:在 models.py 的 User 表中添加 is_admin 字段(布尔值),管理员通过 admin_window.py 专用登录入口登录,后端校验 is_admin=True 后,跳转至管理后台界面。
    数据统计与分析:
    基础统计:通过 pandas 读取数据库数据,统计总用户数、总咨询量、日均咨询频次,以数字卡片形式展示;
    用户行为分析:通过 matplotlib 生成偏好车型分布饼图、咨询时间趋势折线图;
    热门话题分析:统计高频咨询关键词(如 “15 万新能源 SUV”“家用轿车推荐”),生成 Top5 排行榜,以柱状图展示。
    管理操作功能:
    用户管理:表格展示所有用户信息,支持按用户名 / 手机号搜索,提供账号禁用 / 启用、信息编辑、删除按钮;
    咨询内容管理:表格展示所有咨询记录,支持按用户、时间、关键词筛选,提供咨询内容查看、违规内容删除按钮,删除后同步更新前端展示。

    d、GUI界面实现

    采用 “多窗口联动 + 模块化布局” 设计,基于 Tkinter + ttk 组件库开发,确保界面简洁易用、逻辑清晰:
  9. 核心窗口设计
    登录窗口(login_window.py):采用垂直布局,依次排列用户名标签 + 输入框、密码标签 + 输入框(带隐藏图标)、“记住密码” 复选框、登录按钮(居中高亮)、注册跳转链接,底部展示错误提示文本。
    注册窗口(register_window.py):采用网格布局(grid),按 “标签 + 输入组件” 成对排列,预算输入框旁添加 “万元” 单位提示,偏好车型使用下拉框(ttk.Combobox),底部设置注册按钮和取消按钮,实时校验表单并展示校验结果。
    主窗口(main.py):采用 “侧边栏 + 主内容区” 的左右布局,侧边栏为功能导航(购车咨询、我的咨询、积分商城、个人中心),主内容区为卡片式布局,根据选中的导航项动态加载对应界面,支持窗口最大化、最小化、关闭操作。
  10. 功能界面设计
    购车咨询界面(consultation_window.py):采用分组布局,将咨询参数按 “基础需求”“偏好设置”“补充信息” 分组展示,预算范围用两个输入框(最低 / 最高),使用场景、燃料类型用复选框组,提交按钮设置为悬浮高亮样式,点击后显示加载动画,直至 LLM 结果返回。
    咨询结果界面:嵌入 tkinter.scrolledtext.ScrolledText 组件(带滚动条),以富文本形式展示 LLM 生成的购车建议,支持字体放大缩小、复制文本功能,底部添加 “返回”“导出结果” 按钮(导出为 TXT 文件)。
    我的咨询界面:使用 ttk.Treeview 表格组件,列名包括 “咨询时间”“核心需求”“咨询状态”“操作”,操作列提供 “查看详情” 按钮,表格支持点击列名排序,顶部添加时间筛选器(今日 / 本周 / 本月 / 全部)。
    积分商城界面:采用网格卡片布局,每个礼品卡片包含图片展示区、名称标签、所需积分标签、库存标签、兑换按钮,卡片 hover 时添加阴影效果,兑换按钮点击后弹窗确认,积分不足时按钮置灰并提示。
    管理后台界面(admin_window.py):顶部为功能导航栏(用户管理、咨询管理、数据统计),主内容区根据导航切换:用户管理 / 咨询管理采用表格 + 搜索框 + 操作按钮的组合;数据统计采用多图表布局(左侧饼图 / 柱状图,右侧数字卡片),支持图表导出为图片。
  11. 界面交互优化
    状态反馈:按钮点击后有加载状态提示,操作成功 / 失败弹出对应弹窗(tkinter.messagebox),表单输入错误时实时标注错误字段;
    响应性优化:所有耗时操作(咨询提交、数据统计)均通过多线程(threading)处理,避免界面冻结;
    适配性设计:窗口支持自适应缩放,组件布局采用 pack+grid 混合布局,确保在不同屏幕分辨率下正常显示。

五、功能需求建模分析

1、用例分析

一、用户认证与授权

  1. 普通用户登录 / 注销
    用例描述:用户通过用户名和密码登录系统,获取操作权限;登录后可主动退出,释放权限并返回欢迎界面。
    依赖代码:
    登录:login_window.py(登录窗口界面)、app.py 的 /api/login 接口(后端校验)、database.py 的 get_user_by_credentials 方法(数据库凭证校验)。
    注销:main.py 的 logout 方法(清空当前用户状态,返回欢迎界面)、各功能窗口(consultation_window.py、admin_window.py)的退出按钮绑定该方法。
    核心逻辑:登录时密码经 MD5 加密校验,通过后缓存用户信息;注销时清空缓存,销毁当前功能界面。
  2. 管理员登录 / 注销
    用例描述:管理员通过专属登录入口,输入管理员账号密码登录,获取后台管理权限;支持主动退出。
    依赖代码:
    登录:login_window.py(支持 login_type="admin" 传入,渲染管理员登录窗口)、app.py 的 /api/admin/login 接口、database.py 的 get_admin_by_credentials 方法(校验管理员账号)。
    注销:同普通用户注销逻辑,返回系统欢迎界面。
    核心逻辑:单独的管理员账号表存储凭证,登录后跳转至管理员专属后台(admin_window.py)。
  3. 权限验证
    用例描述:系统根据用户身份(普通用户 / 管理员)限制功能访问权限,避免越权操作。
    依赖代码:main.py 的 user_login_success(普通用户跳转咨询窗口)和 admin_login_success(管理员跳转管理窗口)方法,通过身份标识控制界面跳转。
    核心逻辑:登录成功后返回用户身份标识,前端根据标识加载对应功能界面,普通用户无法直接访问管理员后台,反之亦然。
    二、用户信息管理
  4. 用户注册
    用例描述:新用户填写注册表单(用户名、密码、姓名、手机号等),完成账号创建并初始化基础信息。
    依赖代码:register_window.py(注册表单界面)、app.py 的 /api/register 接口(数据接收与校验)、database.py 的 create_user 方法(用户信息存入数据库,初始化积分)。
    核心逻辑:校验用户名唯一性、手机号格式合法性,密码加密存储,注册成功后赠送初始积分(100 积分)。
  5. 用户信息编辑
    用例描述:已登录用户修改个人基础信息(姓名、手机号、购车预算、偏好车型等),修改后同步更新数据库。
    依赖代码:admin_window.py 的 edit_selected_user 方法(管理员编辑用户)、app.py 的 /api/admin/user/int:user_id 接口(PUT 请求处理)、database.py 的 update_user 方法(更新数据库记录)。
    核心逻辑:支持管理员编辑用户信息,普通用户可扩展个人中心编辑功能(代码预留扩展接口),修改后实时同步数据。
    三、购车咨询管理
  6. 发起购车咨询
    用例描述:用户填写购车需求(预算范围、车型偏好、使用场景等),提交后系统调用 LLM 生成个性化建议。
    依赖代码:consultation_window.py(咨询表单界面、多线程提交)、app.py 的 /api/consult 接口(接收请求)、llm_service.py 的 car_consultation 方法(调用 LLM 模型)、database.py 的 create_consultation 方法(保存咨询记录)。
    核心逻辑:前端多线程避免界面卡顿,后端组装 Prompt 调用 Qwen/ChatGLM 接口,生成结果后存储并返回前端。
  7. 查看咨询历史
    用例描述:用户查看过往所有咨询记录,支持查看单条记录的详细内容(需求 + LLM 建议)。
    依赖代码:
    普通用户:consultation_window.py 的 load_consultation_history 方法(加载个人咨询记录)、app.py 的 /api/consultations/int:user_id 接口(获取用户专属记录)。
    管理员:admin_window.py 的 load_all_consultations 方法(加载所有用户咨询记录)、app.py 的 /api/admin/consultations 接口(获取全量记录)。
    核心逻辑:按用户身份返回对应范围的记录,以表格展示摘要,双击 / 点击详情按钮查看完整内容。
  8. 咨询记录管理(管理员)
    用例描述:管理员查看所有用户的咨询记录,支持搜索、删除违规记录。
    依赖代码:admin_window.py 的 search_consultations(搜索过滤)、delete_selected_consultation(删除记录)方法、app.py 的 /api/admin/consultation/int:consultation_id 接口(DELETE 请求)。
    核心逻辑:支持按用户名、手机号等关键词搜索,删除记录时同步删除数据库对应条目。
    四、积分系统管理
  9. 积分获取
    用例描述:用户完成指定操作(注册、提交咨询)后,系统自动增加对应积分。
    依赖代码:database.py 的 create_user(注册赠送 100 积分)、create_consultation(咨询赠送 10 积分)方法,通过 point_records 表记录积分变动。
    核心逻辑:触发指定行为后,后端自动执行积分增加 SQL,同步更新积分记录表和用户积分总数。
  10. 积分查看
    用例描述:用户查看个人当前积分总额及积分变动记录(获取渠道、时间)。
    依赖代码:consultation_window.py 的 load_user_points 方法(加载当前积分)、app.py 的 /api/user/points/int:user_id 接口(获取积分总额)、database.py 的 get_point_records 方法(获取积分变动历史)。
    核心逻辑:前端展示积分总额,支持展开查看积分获取明细(如 “注册奖励”“咨询奖励”)。
    五、管理员数据统计与管理
  11. 用户统计分析
    用例描述:管理员查看系统整体用户数据(总用户数、今日新增、活跃用户数)及用户行为分布。
    依赖代码:admin_window.py 的 load_statistics 方法(加载统计数据)、app.py 的 /api/admin/user_stats 接口(获取统计数据)、database.py 的 get_user_stats 方法(计算用户统计指标)。
    核心逻辑:后端统计总用户数、今日新增用户、活跃用户(有咨询记录的用户),前端以卡片和表格展示。
  12. 热门车型分析
    用例描述:管理员查看系统内用户咨询量最高的车型排行,辅助运营决策。
    依赖代码:admin_window.py 的 load_statistics 方法(渲染热门车型表格)、database.py 的 get_user_stats 方法(统计各车型咨询次数)。
    核心逻辑:按咨询记录中的 preferred_type 分组统计次数,返回 Top 排行,前端以表格展示车型及咨询次数。
  13. 用户管理(管理员)
    用例描述:管理员查看所有注册用户信息,支持搜索、编辑、删除用户账号。
    依赖代码:admin_window.py 的 load_all_users(加载用户列表)、search_users(搜索用户)、edit_selected_user(编辑用户)、delete_selected_user(删除用户)方法,对应 app.py 的 /api/admin/users(获取用户列表)、/api/admin/user/int:user_id(PUT/DELETE 请求)。
    核心逻辑:全量展示用户信息,支持多条件搜索,编辑 / 删除操作同步更新数据库,删除用户时级联删除其咨询记录和积分数据。

2、类图分析

img

六、程序截图

登陆成功提示窗口

img

管理员编辑用户信息窗口

img

管理员成功删除用户

img

管理员登入窗口

img

管理员功能切换版

img

管理员删除用户确认提示窗口

img

管理员删除咨询记录成功的提示窗口

img

管理员删除咨询记录的确认提示

img

管理员搜索相关偏好车型的咨询记录

img

管理员搜索用户

img

管理员页面——数据统计

img

管理员页面——用户管理

img

管理员页面——咨询记录

img

首页

img

用户登入窗口

img

用户个人咨询记录界面

img


咨询成功结果展示

img

七、评估每位组员的贡献比例

学号姓名分工贡献度
1023000416郑哲傲LLMhttps://i-blog.csdnimg.cn/communtity/d58d14ed0e1e4cc693e720844036f284.png "#left")
服务层开发11.1%
1023000417胡致兴数据层开发11.1%
1023000418陈周发前端 - 基础框架开发11.1%
1023000419黄贵前端 - 用户认证界面开发11.1%
1023000420林少杰后端 - 咨询模块 API 开发11.1%
1023000421郑栋文前端 - 管理员界面开发11.1%
1023000422吴坚铭数据模型与工具开发11.1%
1023000423骆泽权前端 - 用户咨询界面开发11.1%
1023000429林哲兴后端 - 用户与管理模块 API 开发11.1%

八、PSP和遇到的困难及解决方式

  • 陈周发:前端 - 基础框架开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析 梳理系统 GUI 整体架构,明确窗口联动逻辑与全局状态管理需求4020
    方案设计 设计主框架布局(欢迎界面 + 功能窗口跳转),定义全局状态存储方案5038
    编码开发 编写main.py核心代码,实现主窗口初始化、状态管理、注销重置逻辑12086
    测试优化 测试窗口跳转流畅性、状态同步准确性,修复界面卡顿与布局错乱问题6028

遇到的困难和解决方法
困难:多窗口联动时状态同步混乱(如用户登录后全局用户信息未及时更新)
解决方法:封装全局状态管理类,通过回调函数实现各窗口状态实时同步,确保登录、注销操作后所有界面及时刷新。
困难:窗口切换时组件残留导致界面错乱
解决方法:在切换窗口前统一调用 “清空组件” 方法(widget.destroy()),确保每次加载新界面时主窗口处于干净状态。

  • 黄贵:前端 - 用户认证界面开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析明确用户 / 管理员登录、注册的功能点与校验规则3012
    方案设计设计登录 / 注册表单布局,规划数据校验逻辑与 API 对接流程4029
    编码开发编写login_window.py和register_window.py,实现表单渲染、校验、API 调用11098
    测试优化测试不同输入场景(合法 / 非法数据),优化校验提示与交互体验5026

遇到的困难和解决方法
困难:管理员与普通用户登录界面复用逻辑混乱
解决方法:通过login_type参数动态渲染界面标题与校验逻辑,复用基础表单组件,减少冗余代码。
困难:API 请求失败时无友好反馈(如网络中断、账号错误)
解决方法:添加异常捕获机制,针对不同错误类型(网络错误、业务错误)弹出对应提示框,引导用户重试或修正输入。

  • 骆泽权:前端 - 用户咨询界面开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析梳理用户咨询流程(填写需求→提交→展示结果→查看历史),明确交互细节4019
    方案设计设计咨询表单分组布局、结果展示区(富文本)、历史记录区(表格),规划多线程处理方案6034
    编码开发编写consultation_window.py,实现表单提交、多线程调用、历史记录加载与详情展示150120
    测试优化测试咨询提交响应速度、历史记录查询准确性,优化界面加载状态提示7040

遇到的困难和解决方法
困难:LLM 响应耗时较长,导致界面冻结
解决方法:使用threading模块开启后台线程处理咨询请求,主线程仅更新加载状态与结果,确保界面可交互。
困难:历史记录过多时表格加载卡顿
解决方法:实现表格数据分页加载逻辑(前端暂存全量数据,分页渲染),减少一次性 DOM 渲染压力。

  • 郑栋文:前端 - 管理员界面开发
    PSP阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析明确管理员核心功能(数据统计、用户管理、咨询管理),梳理操作流程4018
    方案设计设计管理后台布局(顶部导航 + 主内容区),规划统计卡片、表格组件、搜索筛选逻辑5043
    编码开发编写admin_window.py,实现面板切换、数据渲染、搜索 / 编辑 / 删除等交互功能140121
    测试优化测试大量数据展示性能、操作权限控制,优化表格筛选与编辑流程6035

遇到的困难和解决方法
困难:多个面板(统计、用户、咨询)切换时布局错乱
解决方法:采用 “隐藏 - 显示” 模式管理面板,切换时先隐藏所有面板,再显示目标面板,确保布局独立不冲突。
困难:表格搜索筛选逻辑复杂(多字段匹配)
解决方法:封装通用搜索函数,遍历表格数据并匹配所有关键字段,支持模糊查询,提升筛选效率。

  • 林哲兴:后端 - 用户与管理模块 API 开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析梳理用户模块(注册、登录、信息 / 积分查询)与管理员模块(登录、数据统计)核心接口,明确参数与响应格式4016
    方案设计设计两类接口路由,规划密码加密、权限校验、数据库交互逻辑6029
    编码开发编写app.py中用户与管理员模块接口,实现请求校验、业务逻辑处理、数据库对接150145
    测试优化测试接口合法性、权限控制准确性,优化响应速度与数据安全性6039

遇到的困难和解决方法
困难:用户密码明文存储存在安全风险
解决方法:使用hashlib.md5对密码进行加密存储,登录时校验加密后的密码,避免明文传输与存储。
困难:管理员与普通用户权限混淆,存在越权风险
解决方法:在接口层添加权限校验中间件,基于用户身份(is_admin字段)过滤请求,拒绝普通用户访问管理员接口。

  • 林少杰:后端 - 咨询模块 API 开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析梳理咨询模块接口(提交咨询、查询历史、查看详情),明确参数与业务逻辑3019
    方案设计设计 API 路由,规划 LLM 调用流程、咨询记录存储、异常处理方案6038
    编码开发编写app.py中咨询模块接口,实现请求接收、LLM 调用、数据库存储与响应返回140128
    测试优化测试接口并发能力、LLM 调用稳定性,优化异常捕获与重试机制6036

遇到的困难和解决方法
困难:LLM API 调用超时导致接口响应失败
解决方法:在llm_service.py中添加超时重试机制(最多 3 次重试,每次间隔 2 秒),提升接口可用性。
困难:咨询记录数据量大时查询缓慢
解决方法:为consultations表的user_id和created_at字段添加索引,优化查询 SQL 语句。

  • 胡致兴:数据层开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析梳理系统数据实体(用户、咨询、积分、管理员),明确实体关系与存储需求4018
    方案设计设计数据库表结构,规划 CRUD 操作方法、事务管理、复杂查询(统计、热门车型)逻辑6054
    编码开发编写database.py,实现数据库连接、表初始化、数据操作封装,对接models.py130157
    测试优化测试数据库操作准确性、并发安全性,优化查询语句与事务处理5029

遇到的困难和解决方法
困难:多表关联查询(如咨询记录关联用户信息)逻辑复杂
解决方法:使用 SQLJOIN语句实现多表关联查询,封装通用关联查询方法,简化业务层调用。
困难:删除用户时未级联删除关联数据(咨询、积分)导致数据冗余
解决方法:在删除用户时开启事务,依次删除用户关联的积分记录、咨询记录,最后删除用户,确保数据一致性。

  • 郑哲傲:LLM 服务层开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析明确 LLM 服务核心需求(接收用户需求、生成结构化建议、处理调用异常)3033
    方案设计设计 LLM API 封装方案,规划 Prompt 模板、重试机制、多模型 fallback 逻辑4026
    编码开发编写llm_service.py,实现 Qwen/ChatGLM API 调用、Prompt 构建、响应处理100158
    测试优化测试 LLM 响应准确性、调用稳定性,优化 Prompt 模板与重试策略4024

遇到的困难和解决方法
困难:不同 LLM API 返回格式不一致,难以统一处理
解决方法:封装响应格式化函数,将不同模型的返回结果转换为统一结构(如推荐车型列表、优缺点分析),便于业务层使用。
困难:Prompt 设计不合理导致 LLM 响应偏离需求
解决方法:优化 Prompt 模板,明确输出结构(分点、字段约束),添加示例回复,引导 LLM 生成符合预期的结果。

  • 吴坚铭:数据模型与工具开发
    PSP 阶段描述预计时间 (分钟)实际时间 (分钟)
    需求分析梳理系统数据实体属性与关系,明确数据模型设计要求与工具开发(迁移、测试)需求3027
    方案设计设计数据模型类结构,规划序列化方法、数据库迁移逻辑、测试脚本方案4035
    编码开发编写models.py定义数据模型,编写migrate_database.py实现数据库迁移,开发测试脚本9063
    测试优化测试数据模型兼容性、迁移工具稳定性,完善测试脚本覆盖率3023

遇到的困难和解决方法
困难:数据模型字段变更后,旧数据库数据不兼容
解决方法:开发数据库迁移工具(migrate_database.py),支持旧表数据备份、新表创建、数据恢复,确保平滑升级。
困难:数据模型序列化(转换为 JSON)时字段冗余
解决方法:在models.py中为每个模型封装to_dict()方法,仅返回业务所需字段,减少数据传输量。

img

...全文
20 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

103

社区成员

发帖
与我相关
我的任务
社区描述
2501_CS_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_LQF
  • 木村修
  • 心态773
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧