You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.1 KiB
7.1 KiB
Jointo Tech Stack Skill 架构规范更新
日期: 2026-02-04
类型: Skill 更新
影响范围: 后端开发规范
概述
将 ADR 010 和后端架构规范指南的内容整合到 jointo-tech-stack skill 中,确保开发人员在编写代码时能够遵循正确的架构模式。
变更内容
1. 更新 backend.md
1.1 补充分层架构概览
在"仓储模式"章节开头添加了三层架构概览:
┌─────────────────────────────────────┐
│ API Layer (FastAPI) │ ← 接口层:请求验证、响应格式化
├─────────────────────────────────────┤
│ Service Layer (Business) │ ← 业务层:事务管理、业务逻辑
├─────────────────────────────────────┤
│ Repository Layer (Data Access) │ ← 数据层:数据访问、查询构建
└─────────────────────────────────────┘
核心原则(参考 ADR 010):
- Repository 层:只负责数据访问,使用
flush(),不调用commit() - Service 层:负责事务管理,调用
commit()和rollback() - API 层:负责请求验证、依赖注入、响应格式化
1.2 重写 Repository 层规范
新增内容:
- Repository 层职责清单(应该做什么 ✅ / 不应该做什么 ❌)
- 完整的 Repository 标准模板(包含 CRUD 和查询方法)
- 常见错误示例(调用 commit、包含业务逻辑、调用其他 Repository)
关键规范:
async def create(self, project: Project) -> Project:
"""创建项目"""
self.session.add(project)
await self.session.flush() # ✅ 仅 flush,不 commit
return project
1.3 重写 Service 层规范
新增内容:
- Service 层职责清单(应该做什么 ✅ / 不应该做什么 ❌)
- 完整的 Service 标准模板(包含事务管理、业务逻辑编排)
- 常见错误示例(不管理事务、直接构建 SQL、处理 HTTP 响应)
关键规范:
async def create_project(self, data: ProjectCreate, user_id: str) -> Project:
"""创建项目"""
try:
# 1. 业务验证
# 2. 创建数据
# 3. 记录日志
# 4. ✅ 提交事务
await self.session.commit()
return created
except Exception as e:
await self.session.rollback()
raise
1.4 补充 API 层规范
新增内容:
- API 层职责清单(应该做什么 ✅ / 不应该做什么 ❌)
- 完整的 API 标准模板(包含依赖注入、异常处理)
- 常见错误示例(直接调用 Repository、包含业务逻辑、不使用依赖注入)
关键规范:
@router.post("", response_model=ProjectResponse)
async def create_project(
data: ProjectCreate, # ✅ Pydantic 自动验证
current_user: User = Depends(get_current_user),
service: ProjectService = Depends(get_project_service)
):
"""创建项目"""
try:
project = await service.create_project(data, str(current_user.id))
return project
except DuplicateError as e:
raise HTTPException(status_code=400, detail=str(e))
1.5 新增测试规范章节
新增内容:
- 测试策略(测试金字塔)
- Repository 单元测试规范和示例
- Service 单元测试规范和示例
- API 集成测试规范和示例
- 测试配置(conftest.py)
- 运行测试命令
- 测试最佳实践
- Code Review Checklist
关键规范:
@pytest.mark.asyncio
class TestProjectRepository:
async def test_create_project(self, db_session):
"""测试创建项目"""
repo = ProjectRepository(db_session)
# ✅ 在测试方法内创建数据
project = Project(...)
created = await repo.create(project)
assert created.id is not None
# ✅ 不需要手动 commit,conftest 会自动回滚
2. 更新 SKILL.md
在 backend.md 的描述中添加了对新增内容的引用:
### [backend.md](references/backend.md)
后端完整规范,包括:
- 项目结构和分层架构(Repository/Service/API 三层职责划分)
- 异步编程规范
- 依赖注入模式
- 错误处理规范
- 日志和监控
- **事务管理规范**(Repository 使用 flush,Service 使用 commit)
- **测试规范**(Repository/Service/API 单元测试和集成测试)
3. 同步更新多个 skill 目录
项目中存在多个 skill 目录,已同步更新:
- ✅
.claude/skills/jointo-tech-stack/- Claude Desktop 使用 - ✅
.trae/skills/jointo-tech-stack/- Trae AI 使用
确保所有 AI 助手都能获取到最新的架构规范。
变更原因
问题背景
在实施 Project Repository 单元测试时,发现了严重的架构设计问题:
- Repository 层错误地管理事务:调用
commit()违反单一职责原则 - 测试事务冲突:fixture 中创建数据导致与 conftest 的事务管理冲突
- 职责不清晰:Repository、Service、API 层的事务管理职责不明确
解决方案
创建了 ADR 010 和后端架构规范指南,明确了三层架构的职责划分。为了确保开发人员在编写代码时能够遵循正确的模式,需要将这些规范整合到 jointo-tech-stack skill 中。
影响范围
开发人员
- ✅ 在编写 Repository 代码时,会看到明确的职责清单和标准模板
- ✅ 在编写 Service 代码时,会看到完整的事务管理示例
- ✅ 在编写测试代码时,会看到正确的测试模式
- ✅ 在 Code Review 时,可以参考 Checklist 检查代码质量
现有代码
- ⚠️ 需要检查现有的 Repository 代码,确保没有调用
commit() - ⚠️ 需要检查现有的 Service 代码,确保正确管理事务
- ⚠️ 需要更新现有的测试代码,遵循新的测试规范
后续工作
代码审查
- 检查所有 Repository 类,确保没有调用
commit() - 检查所有 Service 类,确保正确管理事务
- 更新所有测试文件,遵循新的测试规范
文档更新
- 创建 ADR 010(已完成)
- 创建后端架构规范指南(已完成)
- 更新 jointo-tech-stack skill(已完成)
- 更新团队开发文档
团队培训
- 团队分享会:讲解三层架构职责划分
- Code Review 培训:使用 Checklist 检查代码
- 测试培训:讲解正确的测试模式
参考文档
变更历史
- 2026-02-04: 初始版本,整合 ADR 010 和架构规范指南到 skill