# 《东软环保公众监督平台》项目实践目的 ### 一、项目概述与本人工作 本项目旨在开发一个高效、透明的环保公众监督平台,作为《东软环保应急》系统的重要子模块。系统的核心业务流程覆盖了从公众反馈、智能初审、任务转化、智能分配到最终处理的全生命周期管理,旨在拓宽环保监督渠道,增加工作透明度,为环保决策提供数据支持。 在本次实践中,**本人担任核心的系统设计与开发角色**,是项目的主要贡献者。具体工作内容涵盖了整个软件生命周期,包括但不限于: * **需求分析与建模**:深入分析项目需求,将模糊的业务概念转化为精确的功能规格,并运用UML类图对系统核心实体进行建模。 * **系统架构设计**:主导了项目技术选型,确定了采用`Spring Boot` + `Vue.js`前后端分离的现代Web架构,并设计了后端的三层(Controller, Service, Repository)分层结构。 * **数据持久化方案设计**:针对"数据存储于文件"的核心约束,独立设计并实现了一套基于JSON文件的泛型仓储层(Repository Pattern),巧妙地解决了数据持久化问题,保证了代码的可维护性。 * **核心模块编码实现**:独立完成了用户认证(JWT)、反馈管理、任务全生命周期管理、智能任务分配算法等多个核心业务模块的后端代码编写工作。 * **API接口定义**:负责设计并编写了项目整体的RESTful API接口,并利用Swagger工具生成了清晰、规范的API文档,为前后端高效协作提供了保障。 * **技术文档撰写**:作为主要作者,撰写了《系统设计方案》等核心技术文档,系统性地阐述了项目的技术实现细节。 ### 二、能力培养达成情况 通过本次毕业设计实践,本人在指导老师的帮助下,系统性地将软件工程理论知识与项目实践相结合,在以下方面取得了显著的进步,达成了毕业设计所要求的各项能力培养目标: #### 1. 设计/开发解决方案的能力 * **(1)掌握软件生命周期要素,熟悉软件工程方法与技术:** * **全周期理解与实践**:深刻理解并实践了从需求分析、系统设计、编码实现到测试维护的软件全生命周期。 * **面向对象设计**:在项目设计阶段,始终贯彻面向对象的思想,对系统的核心业务(如用户账户`UserAccount`、环境反馈`Feedback`、处理任务`Task`)进行高度抽象,设计出了高内聚、低耦合的类结构。 * **UML系统建模**:能够熟练运用PlantUML工具,通过绘制UML类图,对系统中的十余个核心实体及其关联的枚举类型进行整体建模,清晰地表达了类之间的关联、聚合与依赖关系,为后续开发提供了清晰、规范的蓝图。 * **数据持久化设计**:根据"所有数据以文件格式保存"的核心要求,设计并实现了一套基于JSON文件的数据持久化方案。通过为不同实体创建独立的JSON文件,并设计相应的读写服务,确保了数据的合理组织与一致性。 * **界面设计**:在前后端分离的架构下,与前端开发紧密配合,确保了API接口设计能够满足前端对美观、实用、符合用户习惯的界面的数据需求。 * **(2)设计满足特定需求的解决方案并体现创新意识:** * **任务分配算法设计**:为满足高效调度的需求,不止于简单的手动任务指派,而是进一步设计了一套基于"地理邻近度"和"当前工作负载"的加权评分模型,提出了具体的智能任务分配算法解决方案,体现了解决特定业务需求时的创新性。 * **仓储层模式创新**:为解决直接操作JSON文件导致业务逻辑混乱的问题,创新性地设计并实现了一套模拟`Spring Data JPA`接口的泛型仓储层(Repository Pattern)。该方案通过引入泛型和反射机制,极大地提升了数据访问层的代码整洁性与可维护性,是本次实践中的一个重要技术创新点。 #### 2. 研究能力 * **(3)理解系统设计原理,掌握科学方法解决问题:** * **深入理解架构原理**:通过实践,不仅熟练掌握了Spring Boot框架的应用,更深入理解了其背后的分层架构(Controller-Service-Repository)、依赖注入(DI)、面向切面编程(AOP)等核心设计思想。 * **掌握事件驱动模型**:在设计AI对反馈进行初审的功能时,引入了Spring的事件发布/监听机制,将耗时的AI分析流程解耦为异步处理,既提升了API的响应速度,也增强了系统的健壮性和可扩展性。 * **科学方法应用**:在设计"网格员任务路径规划"功能时,主动研究并集成了经典的A*寻路算法,能够运用科学的、经过验证的算法来解决工程中的最短路径问题,展现了将理论算法应用于工程实践的能力。 #### 3. 使用现代工具的能力 * **(4)能够选择并熟练使用现代工程工具:** * 在整个开发过程中,能够根据项目需要,熟练选择和运用一整套现代工程工具对复杂的软件工程问题进行分析与设计: * **后端技术栈**: Java, Spring Boot, Spring Security (for JWT) * **项目管理与构建**: Maven * **版本控制**: Git, GitHub * **设计与文档工具**: PlantUML, Mermaid.js, Markdown * **集成开发环境 (IDE)**: IntelliJ IDEA, VS Code #### 4. 沟通能力 * **(5)具备通过多种方式进行技术沟通的能力:** * **文稿沟通**:能够通过撰写《系统设计方案》、《实践目的》等多种技术文档,系统性、结构化地阐述项目背景、设计思路和技术方案,文字表达清晰、逻辑严密。 * **图表沟通**:在技术文档中,能够熟练运用UML类图、时序图等多种图表,将复杂的系统静态结构、对象交互时序等信息进行高度可视化、标准化的表达,极大地提升了与业界同行进行技术交流的效率和准确性。 * **口头沟通**:在项目讨论中,能够清晰地向指导老师和项目组成员阐述自己的技术见解和设计方案,展现了良好的口头表达与技术沟通能力。