coding-guidelines
规范当前 Python (FastAPI + SQLAlchemy) 项目的代码开发标准,涵盖编码风格、分层架构、数据库及异常处理等。
DeepseekModel
Curated skill
Quality Excellent · 90
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=dataelement-bisheng-src-backend-agents-skills-coding-guidelines-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name 开发规范 (Coding Guidelines) description 规范当前 Python (FastAPI + SQLAlchemy) 项目的代码开发标准,涵盖编码风格、分层架构、数据库及异常处理等。 开发规范 本 Skill 用于指导当前项目的代码开发,确保代码风格统一、结构清晰且易于维护。在协助进行代码生成、重构或修改时,请务必遵循以下规范: 1. 编码风格 (Code Style) PEP 8 :严格遵循 PEP 8 规范。 类型提示 (Type Hints) :强制使用类型注解。所有的函数、方法参数及返回值必须明确指定类型,以支持静态检查和代码智能感知。 命名规范 : 包名/模块名/变量名/函数名: snake_case 类名: PascalCase 常量名: UPPER_SNAKE_CASE 代码格式化 :假设项目使用了 black 、 ruff 或 isort ,在编写代码时应保持与之相符的格式。 2. 架构设计与分层 (Architecture) 目录结构: 业务模块目录 :每个业务模块应有独立的目录 api :定义与外部交互的接口(如 FastAPI 路由) endpoints :具体的 API 端点实现 dependencies.py :定义 API 层的依赖项(如service 层的依赖) router.py :定义 API 路由 domain :核心业务逻辑和领域模型 models :定义数据库模型(SQLModel) services :定义业务服务类,封装核心业务逻辑 repositories :定义数据访问层,封装数据库操作 implementations :具体的 Repository 实现,应继承 BaseRepositoryImpl[ModelClass, IDType], RepositoryInterface interfaces :定义 Repository 接口,应继承 BaseRepository[ModelClass, IDType], ABC schemas :定义 Pydantic 模型,用于数据验证和序列化 3. 数据库与 ORM (SQLAlchemy & Alembic) 表结构变动:所有数据库表结构的增删改,必须通过 Alembic 生成迁移文件(如 alembic revision --autogenerate ),禁止直接手动修改数据库表结构。 versions 目录所在路径: bisheng/core/database/alembic/versions 可以阅读 bisheng/core/database/alembic/README.md 数据库操作:所有数据库的增删改查必须通过 SQLModel 或 SQLAlchemy ORM 模型进行,止禁直接使用原生 SQL 语句。 数据库会话(Session)应通过依赖注入的方式获取,或者通过装饰器(如 @db_session )进行管理,确保事务的一致性和正确的资源释放。 模型定义:使用SQLModel 定义数据库模型,确保与数据库表结构一致,并且支持 Pydantic 的数据验证,使用sa_column等方式定义字段属性。 模型类应放在 models 模块中,且每个模型类应有明确的表名( __tablename__ )和字段定义。 模型字段应使用 SQLModel 的 Field 函数进行定义,明确字段类型、默认值、索引等属性。 查询规范:尽量使用 SQLModel 的查询接口进行数据操作,避免直接使用原生 SQL 语句。对于复杂查询,可以在 Repository 层封装成方法,并提供清晰的接口。 如果有需要查询多张表的业务逻辑,尽量使用 JOIN 或子查询的方式进行,而不是在 Python 代码中进行多次查询和数据处理。 对于分页查询,建议使用 SQLModel 的分页功能,或者在 Repository 层封装一个通用的分页方法,以提高代码复用性和性能。 对于批量操作(如批量插入、更新),建议使用 SQLModel 的批量操作接口,以提高效率和性能。 4. 异常处理与日志 (Exception Handling & Logging) 分业务自定义异常 :每个业务模块应定义自己的异常类,继承自一个公共的基类(如 BaseErrorCode ) 在 bisheng/common/errcode 目录下定义不同业务的异常文件,如 user.py 、 knowledge.py 等,每个文件中定义该业务相关的异常类。 自定义异常类集成 BaseErrorCode ,并设置Code、Msg属性,以便在 API 层统一处理和返回错误响应。 在业务逻辑中,遇到错误情况时应抛出相应的自定义异常, raise UserNotFoundError() ,而不是直接返回错误码或字符串。API 层应捕获这些异常,并根据异常的 Code 和 Msg 生成统一的错误响应。 日志记录 :在关键业务流程、异常捕获点以及重要的操作步骤中,应使用 Python 的 logging 或 loguru 进行日志记录,确保日志内容清晰、结构化,并包含必要的上下文信息(如用户ID、请求ID等),以便于后续的调试和问题排查。 日志级别应合理使用,如 DEBUG 用于开发调试, INFO 用于正常操作记录, WARNING 用于潜在问题, ERROR 用于错误事件, CRITICAL 用于严重错误。 日志记录应使用英文,保持国际化和专业性,并且日志消息应简洁明了,能够清晰地传达事件的发生和相关信息。 5. 注释与文档 (Comments & Documentation) 注释和文档应使用英文 ,以保持国际化和专业性。 Docstrings :核心公共函数、类、复杂的业务方法必须包含文档字符串,说明其功能、参数详情和返回类型。 内联注释 :对于反直觉的代码实现或特别复杂的逻辑,需要有注释说明“为什么”这么写,而不仅仅是“做了什么”。 在每一次开发或答疑中,请将这份开发规范作为判断代码质量和架构是否合理的评价标准。
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.