# edev-java-trade **Repository Path**: mooodo/edev-java-trade ## Basic Information - **Project Name**: edev-java-trade - **Description**: 演示用DDD的开发规则指导AI进行软件开发的整个过程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DDD规范的AI编程示例 本项目演示了如何使用DDD(领域驱动设计)规范进行AI编程的示例。 如今,随着AI技术的发展,AI编程成为了一种热门的编程方式。然而,如果让AI不受约束地进行编程,可能会在面对越来越复杂、规模越来越庞大的项目中,在不断变更的过程中,导致代码质量下降,增加维护成本。因此,我们需要通过驾驭工程(Harness Engineering),通过一系列的规范(如rules, skills)来指导AI,确保AI编程的代码质量和可维护性。 除此之外,我们还需要站在更高层面,按照某种软件工程来指导AI,更加高质量地一步一步完成项目开发。这时我们发现,基于DDD的软件工程开发规范,特别适合AI编程,能够更好地指导AI在大规模的复杂系统中,进行高质量、易于理解、易于维护的软件设计与开发。 ## DDD规范的AI研发过程 DDD领域驱动设计实际上是一套严谨的,从业务需求开始,到设计编码,甚至到测试验收的软件研发规范。本项目演示的基于DDD规范的AI研发过程,包括以下几个阶段: ### 第一阶段:定义业务需求 - 编写业务架构:使用“编写业务架构”skill,让AI根据业务需求,编写业务架构文档,规划业务模块与相关功能。通过该步骤会形成业务架构文档`business-architecture.md`,进行反复地人机交互,形成最终的业务架构。 - 编写用例模型:使用“编写用例模型”skill,让AI根据业务架构,编写用例模型文档,落实业务架构中定义的每个业务功能及其用户交互、业务流程。通过该步骤会形成用例模型文档`use-case-model.md`,进行反复地人机交互,形成最终的用例模型。 - 编写领域模型:使用“编写领域模型”skill,让AI根据用例模型,编写领域模型文档,定义业务领域中的领域对象及其相互的关系。通过该步骤会形成领域模型文档`domain-model.md`,进行反复地人机交互,形成最终的领域模型。 ### 第二阶段:基于DDD的设计编码 - 搭建后端项目:使用“搭建后端项目”skill,让AI根据规范搭建一个Java的后端项目。特别是,在该步骤中会引入一个支持DDD的底层框架`edev-ddd-support`,用于支持DDD的架构设计与实现。 - 编写领域对象:使用“编写领域对象”skill,让AI根据领域模型,按照一定的规范编写领域对象、DSL,并且生成数据库脚本。 - 编写领域服务:使用“编写领域服务”skill,让AI根据领域模型,编写领域服务接口,并且以注释的形式描述每个方法的执行步骤,对每个方法进行详细设计。设计完成以后,需要通过人机交互,确认最终的设计方案。 - 实现领域服务:使用“实现领域服务”skill,让AI根据以上对每个领域服务接口的注释,按照DDD的规范,具体实现领域服务中的每个方法。在该过程中,会引导AI使用`edev-ddd-support`框架来设计与实现每个功能,以符合DDD的设计规范。 - 实现领域查询:使用“实现领域查询”skill,让AI根据领域模型,具体实现对领域对象的查询过滤。在该过程中,我们遵循了CQRS模式,将查询操作与命令操作分离,以提高系统的可扩展性和可维护性。 ### 第三阶段:测试业务功能 - 编写测试用例:使用“编写测试用例”skill,让AI根据业务需求,对所有的领域服务编写测试用例,以覆盖领域服务的所有场景,并让AI完成运行调试,让AI完成单元测试的闭环:设计->实现->测试。 - 编写控制器:使用“编写控制器”skill,让AI根据业务需求与领域服务接口,编写控制器,实现符合RESTful API规范的后端接口。 - 实现其它功能:通过以上的步骤可以通过AI实现大部分的后端开发,但仍有部分功能需要更加频繁的人机互动,在人的指导下完成: - 业务复杂的功能:在本示例中,创建订单的过程是一个非常复杂的业务流程,不仅需要调用多个领域服务,还要基于策略模式实现不同折扣的计算,基于适配器模式实现不同支付方式的调用。在这些过程中,需要与AI进行反复地人机交互来完成最终的设计。 - 聚合服务的设计:在本示例中,用户下单的过程涉及到对`OrderService`, `PaymentService`, `InventoryService`等多个领域服务的调用。因此,在这里领域服务之上设计了一个`OrderAggService`的聚合服务,需要与AI进行反复地人机交互来完成最终的设计。 - 其它功能的编码:在本示例中,除了领域对象、领域服务、领域查询、控制器以外的其它功能,如权限、认证、安全等,都需要与AI进行反复地人机交互来完成最终的设计。 ### 第四阶段:前端UI的开发 - 搭建前端项目:使用“搭建前端项目”skill,让AI根据规范搭建一个Vue的前端项目。 - 生成API文档:使用“生成API文档”skill,让AI根据后端项目的接口,生成API文档,包括请求参数、响应参数、错误码等。 - 编写UI设计:使用“编写UI设计”skill,让AI根据业务架构、用例模型、领域模型,编写UI设计文档`ui-design.md`,规划前端项目的页面布局、组件设计、交互流程等。由于UI设计文档是对前面业务需求的进一步细化,因此文档内容会比较多。本案例按照平台端、供应商端和用户端,拆分成了多个文档,方便AI的读取和编写。 - 实现UI设计:使用“实现UI设计”skill,让AI根据UI设计文档,实现前端项目的页面布局、组件设计、交互流程等。 - 功能验证:让AI根据UI设计文档,先生成检查列表`check-list.md`,再根据该文档一项一项验证前端项目的功能是否符合业务需求,完成第二个闭环:后端开发->前端开发->功能验证。 ## 支持DDD的低代码平台 本项目不是让AI从零开始编写代码,而是使用支持DDD领域驱动设计的低代码平台`edev-ddd-support`,使AI在编程中能够更加聚焦业务的实现,而不是关注技术细节。这样,一方面使得AI编码更少,易于日后的维护与变更,另一方面也使得项目通过分层架构,将业务与技术分离,从而实践整洁架构(The Clean Architecture)。关于该DDD的低代码平台及其设计思路,详见我的另一个相关的仓库: ```text edev-ddd-monolith 采用低代码平台编写的单体应用 * edev-ddd-support 支持DDD领域驱动设计的低代码平台 * edev-ddd-trade 采用低代码平台编写的业务操作系统 ``` 因此,要部署本项目,需要先使用maven打包edev-ddd-support项目: ```bash cd edev-ddd-support mvn clean install ``` 并且创建mysql数据库`edevTrade`,执行`/backend/src/main/resources/db`目录下的所有脚本,创建数据库表结构。