一键导入
yweb-ddd-architecture
YWeb DDD 分层架构与 API 设计规范。在创建或修改 API 路由、Service 层、领域模型、DTO 时使用。涵盖瘦 API 原则、服务层拆分、Model 设计、DTO 转换、响应格式等。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
YWeb DDD 分层架构与 API 设计规范。在创建或修改 API 路由、Service 层、领域模型、DTO 时使用。涵盖瘦 API 原则、服务层拆分、Model 设计、DTO 转换、响应格式等。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Enforce form validation before submit. Validate first, return early on failure, and only then run the async submit logic inside try/catch so validation errors aren’t swallowed and misreported.
强制遵循Element Plus开发规范:使用CSS变量而非硬编码值、不修改组件自带样式、不使用内联样式、使用标准CSS类和scoped样式。在涉及Element Plus样式修改时必须调用此技能。
一站式 UI/UX 优化专家,自动执行完整的设计优化流程。Invoke when user wants comprehensive UI/UX improvements, full page optimization, or 'make this look professional'.
Set up and run end-to-end (E2E) tests for web applications using Playwright. Invoke when user wants to create E2E tests, set up testing framework, or run automated browser tests.
强制遵循Y-SSO前端开发规范:Vue组件规范、CSS变量使用、BEM命名、导入顺序、文件结构等。仅在修改 frontend/src/ 目录下文件时调用。
YWeb ORM 使用规范。在编写数据库模型定义、CRUD 操作、查询过滤、分页、软删除、事务管理、批量操作、关系定义等数据层代码时使用。基于 SQLAlchemy 的 Active Record 模式。
| name | yweb-ddd-architecture |
| description | YWeb DDD 分层架构与 API 设计规范。在创建或修改 API 路由、Service 层、领域模型、DTO 时使用。涵盖瘦 API 原则、服务层拆分、Model 设计、DTO 转换、响应格式等。 |
YWeb 采用 Active Record + DDD 分层思想,三层架构:
API 层 (路由) → Service 层 (业务编排) → Domain 层 (领域模型)
关键原则:
validate_xxx() 方法中| 层 | 职责 | 禁止 |
|---|---|---|
| API 层 | 参数验证、DTO 转换、异常→HTTP 响应、调用 Service | 业务逻辑、事务管理、数据库操作 |
| Service 层 | 跨聚合协调、事务管理、权限检查 | HTTP 感知、直接返回 Response |
| Domain 层 | 单聚合业务规则、数据验证、状态变更 | 调用其他聚合、HTTP 感知 |
DTO(来自 yweb),使用 from_entity() / from_page() 转换BaseModel@dataclass 装饰器_field_mapping 进行字段映射,使用 _value_processors 进行值处理(字段类型应与处理器转换后的类型一致)Resp.OK() / Resp.Fail() / Resp.NotFound() 等PageResponseValueError,转为 Resp.Fail()ORM 是同步的,路由声明方式直接影响并发性能:
def(推荐),FastAPI 自动放线程池async def,DB 调用用 await run_db(...) 包装async def 中直接调用 Model.query / Model.get() 等同步 ORM,会触发 SynchronousOnlyOperation# ✅ def 路由
@router.get("/users")
def get_users():
return User.query.all()
# ✅ async def + run_db
@router.get("/users")
async def get_users():
users = await run_db(User.get_all)
extra = await some_async_call()
return {"users": users, "extra": extra}
编码前必须阅读对应文档以获取完整规范和示例:
| 主题 | 文档路径 |
|---|---|
| DDD 分层架构全貌 | yweb-core/docs/webapi_development_standards/ddd-layered-architecture-guide.md |
| API 层设计规范(瘦 API 原则) | yweb-core/docs/webapi_development_standards/api_layer_design_guide.md |
| Model 与 Service 层设计规范 | yweb-core/docs/webapi_development_standards/model_and_service_design_guide.md |
| DTO 与响应处理规范 | yweb-core/docs/webapi_development_standards/dto_response_guide.md |
| API 与 Service 开发综合规范 | yweb-core/docs/webapi_development_standards/development_guide.md |
ddd-layered-architecture-guide.md 确定分层api_layer_design_guide.mdmodel_and_service_design_guide.mddto_response_guide.mddevelopment_guide.md 中的完整示例