1. 项目概述新冠病毒密接者跟踪系统管理平台这个基于SpringBootVue的密接者跟踪系统本质上是一个结合公共卫生管理与现代IT技术的典型应用。我在2020年疫情初期就参与过类似系统的开发当时的需求紧迫性让很多功能都是边上线边优化。现在回头看这种系统确实非常适合作为毕业设计或课程设计的选题——它既包含了完整的前后端技术栈又具备真实的社会应用场景。系统核心功能模块包括人员信息登记含接触史记录密接关系图谱构建风险等级自动评估隔离状态追踪数据可视化看板技术栈选择上SpringBoot提供了快速构建RESTful API的能力Vue则擅长处理复杂的前端交互。这种前后端分离的架构正是当前企业级开发的主流模式。MySQL作为关系型数据库在处理结构化疫情数据时表现出色特别是当需要频繁进行多表关联查询时。提示做毕设时建议先完成核心追踪功能再逐步扩展统计分析等模块。我见过不少同学一开始就想做太复杂的可视化结果耽误了基础功能的实现。2. 技术架构解析2.1 后端SpringBoot设计要点后端采用经典的MVC分层架构但针对疫情追踪的特殊性做了优化// 典型控制器示例 RestController RequestMapping(/api/contact) public class ContactTraceController { Autowired private TraceService traceService; PostMapping(/risk-assessment) public ResponseEntityRiskAssessment assessRisk( RequestBody ContactHistory history) { // 基于接触时间、距离等参数计算风险值 return ResponseEntity.ok(traceService.assessRisk(history)); } }数据库设计特别注意了以下几点人员表(person)与接触记录表(contact_record)采用外键关联为高频查询字段如手机号、身份证号添加索引使用空间索引支持地理位置查询如GPS轨迹匹配2.2 前端Vue实现技巧Vue组件化开发是本项目的关键优势。通过以下方式优化性能使用Vuex管理全局状态如用户权限采用Element UI快速构建表单通过ECharts实现疫情数据可视化// 典型Vue组件 export default { data() { return { contactGraph: null } }, mounted() { this.loadContactNetwork() }, methods: { async loadContactNetwork() { // 使用D3.js渲染接触关系图谱 const res await getContactNetwork() this.renderGraph(res.data) } } }3. 核心功能实现细节3.1 密接关系图谱构建这是系统最具技术挑战的部分。我们采用图数据库的思想在MySQL中实现邻接表存储使用person_id和contact_person_id的双向关联广度优先搜索通过CTE递归查询实现n度密接查找权重计算结合接触时长、场所类型等参数-- 查找二级密接者示例 WITH RECURSIVE contact_tree AS ( SELECT * FROM contact_record WHERE person_id 123 UNION ALL SELECT c.* FROM contact_record c JOIN contact_tree ct ON c.person_id ct.contact_person_id ) SELECT DISTINCT person_id FROM contact_tree LIMIT 10;3.2 风险等级评估算法我们设计了多因素加权评估模型评估因素权重评分标准接触时长0.3每10分钟增加1分接触场所0.4室内3分室外1分防护措施0.2无防护3分口罩1分病例传染性0.1确诊3分疑似2分注意实际项目中应该允许管理员动态调整这些参数我们团队就遇到过政策变化导致算法需要紧急调整的情况。4. 开发环境搭建指南4.1 后端环境配置JDK 1.8推荐Amazon CorrettoMaven 3.6注意配置阿里云镜像MySQL 5.7需要开启innodb引擎# 初始化数据库示例 mysql CREATE DATABASE contact_tracing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;4.2 前端环境准备Node.js 14Vue CLI 4.5推荐VS Code插件VeturESLintVue VSCode Snippets# 安装依赖 npm install # 开发模式运行 npm run serve5. 典型问题排查实录5.1 跨域问题解决方案开发阶段常见跨域问题可通过以下方式解决SpringBoot配置CORS生产环境需谨慎Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(*); } }前端代理配置vue.config.jsdevServer: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } }5.2 性能优化经验数据库层面为contact_record表添加复合索引(person_id, contact_date)对大文本字段如备注使用垂直分表定期归档历史数据前端层面使用Virtual Scroll优化长列表渲染对ECharts图表进行懒加载启用Gzip压缩6. 项目扩展建议如果想提升项目竞争力可以考虑加入微信小程序端使用uni-app跨平台方案集成短信通知功能阿里云短信服务实现自动化部署JenkinsDocker添加基于GIS的轨迹重合度分析我在实际项目中遇到过的一个有趣需求是接触概率预测——通过机器学习分析人员移动模式预测未来可能的密接风险。这需要集成Python的scikit-learn通过REST API与Java后端交互。7. 毕设答辩技巧根据我指导学生答辩的经验需要特别注意技术亮点要讲透如何实现高效的关系图谱查询风险评估算法的设计思路前后端分离架构的优势演示准备准备两套测试数据正常流程和异常case对关键功能录制备用视频提前测试投影仪兼容性常见问题准备与传统Excel登记方式相比的优势系统如何保证数据隐私如果用户提供虚假信息怎么办最后分享一个数据库设计的教训最初我们没考虑国际手机号格式结果上线后无法处理86开头的号码不得不紧急修改表结构。建议在person表中将手机号字段设为varchar(20)并添加国家码字段。