ddl战士——CodeArts团队实战总结

ddl战士 2025-11-12 22:19:03
这个作业属于哪个课程2501_CS_SE_FZU
这个作业要求在哪里软工实践——CodeArts团队实战总结
这个作业的目标结合之前的大模型评测作业,做出一个基于大语言模型的购车意向咨询软件
其他参考文献《构建之法》、Google Style Guides

目录

  • 一、项目地址
  • 二、CodeArt 的提交日志截图及commit次数
  • 1.CodeArt 的提交日志截图
  • 2.成员commit次数
  • 三、程序运行环境
  • 四、功能实现思路描述
  • 五、功能需求建模分析
  • 1.用例分析
  • 2.类图分析
  • 3.类图
  • 六、程序截图
  • 七、组员职责分工及贡献比例
  • 八、成员PSP表格及遇到的困难及解决方法
  • 1.102300215 陈志豪
  • PSP表格
  • 遇到的困难及解决方法
  • 2.102300216 胡定赟
  • PSP表格
  • 遇到的困难及解决方法
  • 3.052301144 汪涛
  • PSP表格
  • 遇到的困难及解决方法
  • 4.052301348 阮航宇
  • PSP表格
  • 遇到的困难及解决方法
  • 5.092300125 张天荣
  • PSP表格
  • 遇到的困难及解决方法
  • 6.222200327 莫馥玮
  • PSP表格
  • 遇到的困难及解决方法

一、项目地址

代码仓库地址:代码仓库地址
软件仓库地址:软件仓库地址

  • 使用说明: 点击制品仓库中的软件发布库,找到并下载Car Advisor Setup 0.1.0.exe安装包,直接安装即可使用。

  • 如何构建项目:

1.首先克隆整个代码
2.在代码根目录下用管理员权限打开cmd
3.运行npm install和npm run build即可构建出.exe安装包,安装包位置将位于.\release下

二、CodeArt 的提交日志截图及commit次数

1.CodeArt 的提交日志截图

img

img

img

img

img

img

2.成员commit次数

学号姓名账号commit次数
102300215陈志豪zh c4
102300216胡定赟gossipcase7
052301144汪涛05230114422
052301348阮航宇startway1237
092300125张天荣hid_04dy_4818s18s9614
222200327莫馥玮Ozydias7

三、程序运行环境

必要工具
Node.js 16+(与本项目依赖兼容),npm(或 pnpm/yarn)
Electron(由 electron-builder 下载并在打包时使用,开发运行时通过项目脚本启动)
Vite(renderer dev & build)
TypeScript(main 进程通过 tsc 编译)
Windows 开发注意:本地打包时 electron-builder 可能需要管理员权限或启用“开发者模式”以允许创建符号链接(%LOCALAPPDATA%\electron-builder\Cache 目录)
关键环境变量(在 .env / .env.production 中配置)
VITE_TELEMETRY_ENABLED=true|false(启用前端埋点上传)
VITE_ENABLE_ZHIPU=true|false、VITE_ZHIPU_API_KEY=...(智谱相关,注意区分开发/生产 .env)
其他大模型供应商开关/密钥(如阿里/百炼)同样放到 VITE_* 或运行时注入配置
常用命令(Windows CMD 示例)
打包注意
打包命令会执行:vite build && tsc -p tsconfig.main.json && electron-builder(见 package.json scripts)
若不希望本地触发 electron-builder 的自动 winCodeSign 下载/解压,可临时在 build 配置中禁用签名(仅用于本地开发)
运行时调试
打包后的 Electron 应用可打开开发者工具(菜单 → 开发者工具)查看 renderer 控制台与 network 请求
在开发时可通过在浏览器/renderer 控制台打印 fetchProviders、overview、behavior 来确认运行时配置

四、功能实现思路描述

咨询创建与存储(Consultation)

触点:src/renderer/components/ConsultationForm.tsx(表单收集 ConsultationRequestPayload)
API:src/renderer/api/client.ts -> createConsultation 调用后端
后端:src/main/server.ts 接收并持久化 ConsultationRecord(包含 request.brandPreference 等字段)
说明:表单字段尽量入库并在后续聚合(topics/brand)使用
管理仪表盘(AdminDashboard)

组件:src/renderer/components/AdminDashboard.tsx
数据来源:调用 client 中的 fetchAdminOverview、fetchAdminTopics、fetchAdminBehavior、fetchConsultations、fetchCurrentUser 等
行为统计兜底:当 fetchAdminBehavior 返回空或不完整时,由前端用 consultations + users 合成 AdminBehaviorPlaceholder(recentEvents、topActions、totalActions、avgSessionMinutes、conversionRate)
显示:Overview、Topics(品牌热度 brandMentions)、Behavior、礼品与兑换等卡片均在该组件整合展示
品牌热度(Brand Mentions)

后端聚合:src/main/server.ts 中的 buildTopicStats 聚合 consultation.request.brandPreference 等,结果以 AdminTopicStats 返回
前端展示:AdminDashboard 使用 topics.brandMentions 渲染“品牌热度”列表
行为分析与 avgSession / 转化率 的估算

后端优先提供真实数据(AdminBehavior API);前端在缺失时用简易估算:
avgSessionMinutes:基于 result 文本词数按速率估算(如 150 词/分钟)或默认值(实现位于 AdminDashboard 的合成逻辑)
conversionRate:基于 status === 'archived' 或存在 result 文本作为“已转化”判断
建议:把合成逻辑封装为纯函数并编写单元测试(便于验证与替换策略)
大模型(LLM Providers)集成

现状:providers 列表由 client.ts 的 fetchProviders 或构建时 env 决定
问题与改进:避免把 provider 开关写死为 import.meta.env(构建时静态替换会导致打包后 provider 消失);推荐改为运行时获取(后端 / 主进程在 BrowserWindow 注入 window.APP_CONFIG 或提供 /config/providers 接口)
相关:src/shared/llm.ts 包含 Provider 与请求适配
埋点(Telemetry)

前端发送点:sendTelemetryEvent 在 client.ts 中实现(受 VITE_TELEMETRY_ENABLED 控制)
上报场景:AdminDashboard 加载、咨询归档/删除、用户角色变更等(已在 AdminDashboard 中调用)
实现要点:非阻塞、静默失败;event schema { type, payload, timestamp, userId } 建议统一
后端:/telemetry/events 端点需在数据管道准备好后接入处理
权限/用户管理与礼品兑换

用户管理与角色变更、礼品创建/更新/删除、兑换管理的 API 都在 src/renderer/api/client.ts(adminCreateGift、adminUpdateGift、adminDeleteGift、adminUpdateRedemptionStatus 等)
前端对应实现集中在 AdminDashboard 与相关模态窗口中
代码组织/类型约定

类型定义散见:src/renderer/types.ts、src/shared/llm.ts(ConsultationRequestPayload、ConsultationRecord、UserPayload、AdminTopicStats、AdminBehaviorPlaceholder、LLMProviderOption)
建议把公共类型集中(若需更好维护可在 shared/types.ts 合并)
调试与验证要点(与代码对应)

验证 brandMentions:在 AdminDashboard 打开并观察 topics.brandMentions(若为空,检查 ConsultationRecord.request.brandPreference 是否有值)
验证 provider 在生产可用:在打包后的应用中打开 devtools,检查 fetchProviders / runtime config 是否包含智谱(避免只在 .env.development 中启用)
验证埋点:设置 VITE_TELEMETRY_ENABLED=true 并在动作后在后端 /telemetry/events 或本地 mock 接收项里观察事件到达

五、功能需求建模分析

1.用例分析

每个用例包含:参与者、触发、主流程、备选流程、验收条件、相关文件。

UC01 创建咨询
参与者:终端用户
触发:在 ConsultationForm 填写并提交
主流程:前端构造 ConsultationRequest -> createConsultation -> 后端持久化 -> 返回 ConsultationRecord -> 前端刷新列表
备选:网络或校验失败提示
验收:数据库新增记录且前端立即可见
相关文件:src/renderer/components/ConsultationForm.tsx、src/renderer/api/client.ts、src/main/server.ts

UC02 管理员查看仪表盘(Overview / Topics / Behavior / Brand)
参与者:管理员
触发:打开 AdminDashboard
主流程:并行请求 fetchAdminOverview、fetchAdminTopics、fetchAdminBehavior、fetchAdminConsultations、fetchAdminUsers -> 渲染卡片
备选:fetchAdminBehavior 为空 -> 前端用 consultations/users 合成行为统计(兜底)
验收:各卡片显示合理数据,后端空数据时前端仍有展示
相关文件:src/renderer/components/AdminDashboard.tsx、src/renderer/api/client.ts、src/renderer/types.ts

UC03 管理员操作咨询(归档/删除)
参与者:管理员
触发:点击归档/删除按钮
主流程:调用 updateConsultationStatus/deleteConsultationRecord -> 成功后刷新数据 -> sendTelemetryEvent 上报(静默失败)
备选:上报失败静默;操作失败回滚并提示
验收:数据一致且事件上报(若启用)
相关文件:src/renderer/components/AdminDashboard.tsx、src/renderer/api/client.ts

UC04 用户管理(查看/变更角色)
参与者:管理员
触发:在用户表格进行角色变更
主流程:调用 updateUserProfile -> 刷新用户列表 -> sendTelemetryEvent 上报
验收:用户角色更新并持久化
相关文件:src/renderer/components/AdminDashboard.tsx、src/renderer/api/client.ts

UC05 切换/使用 LLM Provider(阿里/智谱/百炼)
参与者:系统/管理员/用户(取决 UI)
触发:选择 provider 或运行时配置加载
主流程:fetchProviders 或运行时 config -> 在调用 LLM 时使用选中 provider 的密钥与接口
问题点:如果 provider 启用逻辑基于 import.meta.env,打包后可能缺失(需运行时注入)
相关文件:src/renderer/api/client.ts、src/shared/llm.ts

UC06 行为埋点(Telemetry)
参与者:前端(Admin 操作)、后端埋点接收端
触发:dashboard 加载、咨询操作、用户角色变更等
主流程:sendTelemetryEvent -> POST /telemetry/events(仅在 VITE_TELEMETRY_ENABLED=true 时发送)-> 后端管道消费
验收:启用后后端收到事件;前端在不可用时不影响主流程
相关文件:src/renderer/api/client.ts、src/renderer/components/AdminDashboard.tsx

2.类图分析

ConsultationRecord:保存单次咨询,包含 ConsultationRequestPayload 与可选 result
ConsultationRequestPayload:表单输入(preferredType、brandPreference、budget 等)
UserPayload:用户信息(role、preferredType 等)
AdminOverviewStats / AdminTopicStats / AdminBehaviorPlaceholder:用于仪表盘展示的聚合统计
LLMProviderOption:大模型提供者配置(id、name、enabled、config)
TelemetryEvent:前端上报的埋点事件结构

3.类图

img

六、程序截图

注册界面

img

登录界面

img

咨询界面

img

积分商城界面(兑换商品由管理员创建)

img

咨询内容

img

提交反馈

img

管理员界面

img

img

img

img

七、组员职责分工及贡献比例

学号姓名分工贡献度
102300215陈志豪前端功能实现18%
102300216胡定赟后端代码编写,博客撰写17%
052301144汪涛后端代码编写,整体框架构建20%
052301348阮航宇前端功能实现17%
092300125张天荣前端功能实现16%
222200327莫馥玮前端功能实现12%

八、成员PSP表格及遇到的困难及解决方法

1.102300215 陈志豪

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析用户模块和购车咨询模块的前端功能需求,明确界面交互逻辑和样式要求。0.51
前端界面设计设计系统前端页面的布局、配色、组件样式,绘制高保真原型图。1.51.5
组件开发(用户模块)开发用户注册、登录、个人信息管理等相关前端组件,实现交互逻辑。22.5
组件开发(咨询模块)开发购车咨询发起、记录查看等前端组件,对接后端接口展示咨询结果。23
测试与调试对前端功能进行兼容性测试、功能测试,修复界面bug和交互问题。1.51

遇到的困难及解决方法

  • 困难:前端与后端接口联调时,数据格式经常不匹配,导致请求失败。
  • 解决方法:与后端同学共同制定详细的接口文档,明确数据字段类型和格式,联调前先进行Mock测试,确保数据格式正确。

2.102300216 胡定赟

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析后端用户模块、咨询模块的功能需求,明确接口设计和数据处理逻辑。0.51
后端架构设计设计后端服务的分层架构,确定技术栈和开发框架,规划模块间的交互方式。22.5
接口开发(用户模块)开发用户注册、登录、信息管理等后端接口,实现数据校验和数据库操作。22.5
博客撰写整理项目开发过程、技术选型、功能实现等内容,撰写团队博客并优化排版。23

遇到的困难及解决方法

  • 困难:博客撰写时,对项目技术细节的描述不够清晰准确。
  • 解决方法:与团队成员充分沟通,查阅技术文档,将复杂的技术点拆解成通俗易懂的内容,确保博客内容的专业性和可读性。

3.052301144 汪涛

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析系统整体需求,明确各模块的功能边界和交互关系,为框架构建做准备。0.51
整体框架构建搭建后端服务的整体框架,配置开发环境,集成数据库、中间件等基础组件。23
后端核心模块开发开发系统的核心业务模块,如用户权限管理、咨询业务逻辑处理等关键功能。32.5
数据库设计与优化设计数据库表结构,建立索引,优化查询语句,确保数据存储和查询性能。23

遇到的困难及解决方法

  • 困难:数据库查询性能差,大量数据查询时响应缓慢。
  • 解决方法:对数据库表建立合适的索引,优化查询语句,采用分页查询和缓存技术,提升数据库的查询性能。

4.052301348 阮航宇

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析前端页面的功能需求和用户交互场景,明确页面布局和操作流程。0.50.5
前端页面开发开发系统各功能页面,实现页面的基础展示。22.5
交互逻辑实现为页面添加交互逻辑,实现表单提交、数据展示、页面跳转等功能。23
测试与优化对前端页面进行功能测试和用户体验测试,优化页面性能和交互效果。1.52

遇到的困难及解决方法

  • 困难:前端交互逻辑复杂,部分功能实现时逻辑混乱。
  • 解决方法:使用流程图梳理交互逻辑,将复杂功能拆分成多个小功能点,逐一实现并测试,确保逻辑清晰。

5.092300125 张天荣

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析前端组件的功能需求,明确组件的复用场景和交互逻辑。11.5
前端组件开发开发可复用的前端组件,如表单组件、列表组件、弹窗组件等,封装组件的属性和方法。2.53.5
页面整合将开发好的前端组件整合到系统页面中,实现页面的完整功能。1.53
代码优化优化前端组件的代码结构,提高组件的性能和可维护性。22

遇到的困难及解决方法

  • 困难:前端组件复用性差,相同功能的组件在不同页面重复开发。
  • 解决方法:提取公共组件,封装成可复用的模块,在不同页面中直接引用,提高开发效率和代码可维护性。

6.222200327 莫馥玮

PSP表格

阶段阶段具体描述计划时间(小时)实际时间(小时)
需求分析分析前端界面的视觉需求和交互效果需求,明确设计风格和动画效果。0.51
前端界面开发开发系统前端界面的视觉设计,实现页面的配色、排版和动态效果。22.5
交互效果实现为页面添加动画、过渡效果等交互元素,提升用户体验。2.53
测试与改进对前端界面的视觉效果和交互体验进行测试,根据反馈进行改进。1.52

遇到的困难及解决方法

  • 困难:前端交互效果实现复杂,部分动画效果难以达到预期。
  • 解决方法:学习前端动画相关的技术文档和案例,使用专业的动画库辅助开发,不断调整动画参数,直到达到满意的效果。
    ​
...全文
133 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
C盘管家 DiskButler是一款轻量化、高安全、零广告的Windows磁盘与内存智能维护工具,专为普通电脑用户打造,解决C盘爆满、磁盘空间不明、系统垃圾不敢乱删、开机卡顿、内存占用过高的痛点。市面上多数清理软件要么恐吓式扫描捆绑垃圾推广,要么专业工具全英文门槛极高,普通用户看不懂也不敢操作。本工具坚持透明化、安全化、人性化设计,所有清理项目都附带中文说明、占用解释与风险提示,让用户看得懂、敢清理、不踩坑,真正实现自主可控的电脑系统维护。软件全程本地离线运行,无任何网络上传、无数据收集、无后台偷跑行为,是干净纯粹的系统磁盘管理工具。 二、核心功能模块 软件集成磁盘透视分析、分层安全清理、系统深度精简、开机启动管理、内存实时体检五大核心功能。磁盘透视采用NTFS主文件表秒级扫描技术,快速全盘分析磁盘占用结构,用彩色可视化拼图展示文件分布,精准定位超大文件夹与冗余资源,搭配完善的中文资源知识库,自动识别微信、剪映、网盘、开发环境等各类软件缓存。分层一键清理将垃圾分为安全残留、性能缓存、个人数据三类,智能区分可放心删除文件与重要资料,杜绝误删。深度系统清理调用微软官方DISM工具,安全清理系统更新残留冗余文件。启动管理可视化管控开机自启项目,智能给出优化建议,内存体检实时排行进程占用,快速释放电脑运行资源。 三、场景化应用 日常办公用户可以定期扫描系统垃圾,安全清理更新缓存、软件残留、临时文件,,。自媒体、剪辑创作者能够精准识别媒体缓存、工程残留文件,清理冗余素材同时保留可用缓存,兼顾运行速度与使用体验。开发人员可安全清理开发环境缓存、日志文件,无需手动查找复杂目录,避免误删配置文件。普通家庭用户无需掌握专业电脑知识,依靠通俗化文字说明与分级清理机制,安全完成系统维护,优化开机速度与内存占用。同时软件适配Windows10、Windows1

103

社区成员

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

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