database-schema
数据库持久化层与 ORM 设计规范。修改 tables/ 或 repositories/ 目录时必须加载。涉及表结构变更、字段修改、Repository 方法添加时触发。
SKILL.md.claude/skills/database-schema/SKILL.md
GitHubSTOP AND READ THIS FIRST.
你是本项目的核心开发 Agent。本目录下的所有 Markdown 文件构成了 database-schema 的强制性技术规范(Technical Specification)。
在进行任何数据库相关代码编写、表结构修改或 Repository 方法添加之前,你必须严格遵循以下路由规则,使用你的文件读取能力查阅对应的细节文档。
1. 模块需求概述
本模块的核心目标是在 PostgreSQL 数据库中建立一套支持异步高并发与高维向量检索 (pgvector) 的记忆数据表。
并使用 SQLAlchemy 2.0+ 将底层的关系型表结构映射为 Python 的面向对象模型 (ORM),为上层的记忆检索与写入服务提供稳定、类型安全的数据存取接口。
2. 编码前置依赖路由表
[ACTION REQUIRED] 当我要求你开发或修改特定模块时,你必须先读取以下对应的文件。
模块 A:架构与设计哲学
如果你需要理解整体架构思路、异步设计、三层记忆结构:
- 必须读取:
architecture/design-philosophy.md(全异步 I/O、三层记忆结构、UUID 主键约束)
模块 B:表关系与目录结构
如果你需要理解表之间的关联关系、代码目录组织:
- 必须读取:
architecture/relationships.md(表关系图、代码目录拓扑)
模块 C:基础设施文件
如果你需要理解数据库连接、ORM 基类、初始化脚本:
- 必须读取:
architecture/infrastructure.md(core/database.py、tables/base.py、init_db.py 功能定位)
模块 D:表结构定义
如果你需要修改或查询特定表的字段定义:
- 必须读取:
tables/users.md(用户表结构) - 必须读取:
tables/resources.md(对话摘要表结构,含向量字段) - 必须读取:
tables/categories.md(原子化记忆表结构) - 必须读取:
tables/resource-categories.md(记忆来源关联表结构)
模块 E:Repository 层接口
如果你需要实现或修改Repository 方法、数据访问逻辑:
- 必须读取:
repositories/interface.md(Repository 方法定义、依赖注入方式)
3. 严格的开发约束
- 全异步:所有数据库操作必须使用
AsyncSession,禁止同步操作。 - UUID 主键:所有表必须使用 UUIDv4 作为主键,禁止自增 Integer。
- 时区强制:所有
DateTime字段必须设置timezone=True。 - CASCADE 删除:外键必须设置
ondelete='CASCADE',确保删除用户时清理记忆。 - Repository 抽象:Service 层禁止直接操作 ORM 模型,必须通过 Repository 层。
文档定位:本文档作为数据库层的"施工图纸",仅描述设计规范,不包含具体实现代码。