원클릭으로
backend-development
MiniHES 后端开发规范。当用户进行 FastAPI 后端开发、API 设计、数据库操作、 DLMS 协议实现、数据采集任务开发时自动激活。 涵盖分层架构、编码原则、安全要求、数据库规范。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
MiniHES 后端开发规范。当用户进行 FastAPI 后端开发、API 设计、数据库操作、 DLMS 协议实现、数据采集任务开发时自动激活。 涵盖分层架构、编码原则、安全要求、数据库规范。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | backend-development |
| description | MiniHES 后端开发规范。当用户进行 FastAPI 后端开发、API 设计、数据库操作、 DLMS 协议实现、数据采集任务开发时自动激活。 涵盖分层架构、编码原则、安全要求、数据库规范。 |
严格遵循单向依赖,禁止跨层调用:
api/v1/endpoints/ → 路由层(HTTP 处理)
↓
schemas/ → 数据验证层(Pydantic)
↓
services/ → 业务逻辑层
↓
models/ → 数据访问层(SQLAlchemy ORM)
↓
core/ → 基础设施(config, database, security)
| 层 | 职责 | 禁止 |
|---|---|---|
| endpoints | 参数接收、调用 service、返回响应 | 直接操作 ORM、写业务逻辑 |
| schemas | 请求/响应模型、数据验证 | 访问数据库 |
| services | 业务逻辑、事务管理、跨模型协调 | 直接处理 HTTP 请求 |
| models | ORM 定义、表结构 | 包含业务逻辑 |
| core | 配置、数据库连接、安全工具 | 依赖业务层 |
禁止:未确认方案就直接改数据库或写代码。
| 类型 | 规范 | 示例 |
|---|---|---|
| 表名 | {模块前缀}_{名称} | dev_meter, col_task |
| 模型类 | PascalCase | MeterComm, TaskLog |
| 字段名 | snake_case | meter_id, created_at |
| API 路径 | kebab-case 复数 | /api/v1/meter-points |
| Service 方法 | 动词_名词 | get_meter, create_task |
| Schema 类 | {动作}{资源}{Request/Response} | CreateMeterRequest |
| 前缀 | 模块 | 示例 |
|---|---|---|
sys_ | 系统管理 | sys_user, sys_role, sys_audit_log |
dev_ | 设备管理 | dev_meter, dev_meter_comm |
col_ | 数据采集 | col_task, col_meter_reading |
lab_ | 实验室测试 | lab_test_task, lab_defect |
直接返回数据,使用标准 HTTP 状态码:
# 200 OK - 查询
@router.get("/meters")
async def list_meters(...):
return {"items": [...], "total": 100}
# 201 Created - 创建
@router.post("/meters", status_code=201)
async def create_meter(...):
return meter
HTTP 状态码 + 业务码:
{
"detail": "错误描述",
"error_code": 10001
}
| 范围 | 模块 | 示例 |
|---|---|---|
| 10001-10999 | 设备管理 | 10001=设备不存在 |
| 20001-20999 | 数据采集 | 20001=任务执行失败 |
| 30001-30999 | 系统管理 | 30001=认证失败 |
from app.core.database import Base, TimestampMixin
class Meter(Base, TimestampMixin):
__tablename__ = "dev_meter"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
serial_number: Mapped[str] = mapped_column(String(50), unique=True, index=True)
# ... 其他字段
# relationship 使用字符串引用避免循环导入
comm: Mapped["MeterComm | None"] = relationship(back_populates="meter", uselist=False)
Base,需要时间戳的加 TimestampMixinMapped 类型注解,必须指定 nullableMapped[dict] + mapped_column(JSON, ...)ondelete 约束app/models/__init__.py 注册# 1. 生成迁移(先确认模型变更正确)
uv run alembic revision --autogenerate -m "描述"
# 2. 检查迁移文件(特别是 nullable、default、现有数据)
# 3. 应用迁移
uv run alembic upgrade head
迁移注意:
构建后端功能时,按以下格式输出:
uv add xxx).env 配置Schema 层:
# schemas/meter.py
from pydantic import BaseModel, Field
class CreateMeterRequest(BaseModel):
serial_number: str = Field(..., max_length=50)
meter_name: str = Field(..., max_length=100)
meter_type_id: int | None = None
class MeterDetail(BaseModel):
id: int
serial_number: str
meter_name: str
current_status: str
model_config = {"from_attributes": True}
Service 层:
# services/meter_service.py
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models import Meter
from app.schemas.meter import CreateMeterRequest
async def create_meter(db: AsyncSession, data: CreateMeterRequest) -> Meter:
meter = Meter(**data.model_dump())
db.add(meter)
await db.flush()
return meter
Endpoint 层:
# api/v1/endpoints/meters.py
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.dependencies import get_db, get_current_user
from app.schemas.meter import CreateMeterRequest, MeterDetail
from app.services.meter_service import create_meter
router = APIRouter(prefix="/meters", tags=["meters"])
@router.post("", response_model=MeterDetail, status_code=201)
async def create(
data: CreateMeterRequest,
db: AsyncSession = Depends(get_db),
user=Depends(get_current_user),
):
return await create_meter(db, data)
依赖安装:
uv add <package> # 如果需要新包
uv run alembic revision --autogenerate -m "add xxx"
uv run alembic upgrade head
app/
├── api/v1/endpoints/ # 每个业务一个文件
│ ├── auth.py
│ ├── meters.py
│ ├── tasks.py
│ └── ...
├── schemas/ # 对应 endpoint 的请求/响应模型
│ ├── auth.py
│ ├── meter.py
│ └── ...
├── services/ # 业务逻辑,按模块组织
│ ├── meter_service.py
│ ├── task_service.py
│ └── ...
├── models/ # ORM 模型
├── core/ # 基础设施
│ ├── config.py # Settings
│ ├── database.py # engine, session, Base
│ ├── security.py # JWT, password
│ ├── dependencies.py # get_db, get_current_user
│ └── exceptions.py # 自定义异常
└── main.py
MiniHES 代码审查。当用户请求审查代码、review PR、检查变更时激活。 支持本地变更审查和指定文件审查,输出结构化审查报告。 引用 backend-checklist.md 和 frontend-checklist.md 作为审查依据。
修复代码格式和 lint 问题。当用户在提交前需要修复代码风格、 排查 lint 错误、或说 "fix"、"格式化"、"lint" 时激活。
MiniHES 前端开发规范。当用户进行 Vue 3 前端开发、组件设计、 页面布局、样式调整时自动激活。 涵盖技术栈、组件设计原则、设计规范、Ant Design Vue 用法。
Systematic code review patterns covering security, performance, maintainability, correctness, and testing
Distills iteration lessons, categorizes them, and injects them into the most relevant Skill.md files with deduplication.
创建 Pull Request。当用户说 "创建 PR"、"提 PR"、"提交合并请求" 时激活。 确保遵循 conventional commit、模板规范、安全护栏。