新文章
爸爸妈妈网2026-04-26T14:53:36.429Z阅读 0
数据库规范
1. 文档目标
统一《科幻力》项目数据库设计与命名规范,避免字段风格混用。
- 统一规范(数据库 + Prisma):全部使用
snake_case(下划线命名),例如created_at、updated_at。 - 执行原则:新建与存量模型统一按
snake_case维护,不再引入驼峰字段。
2. 数据库与 ORM 选型
- 数据库:MySQL(腾讯云环境)
- ORM:Prisma 7(当前依赖为
7.7.0) - 工程化:在 Monorepo 中通过
packages/database共享数据模型与客户端能力
3. 业务模块与数据表映射
| 模块 | 关联数据表 | 说明 |
|---|---|---|
管理后台 admin.kehuanli.com | admins, admin_roles, admin_permissions, admin_menus, admin_user_roles, admin_role_permissions, admin_role_menus, admin_login_logs, admin_refresh_tokens, admin_token_blacklist | 管理员账号与权限相关数据 |
会员中心 member.kehuanli.com | members, member_roles, member_permissions, member_menus, member_user_roles, member_role_permissions, member_role_menus, member_login_logs, member_refresh_tokens, member_token_blacklist | 会员账号资料与状态数据 |
| 内容管理 | articles, categories, tags, comments, favorites, friend_links, article_tags, article_categories | CMS 内容管理 |
| 系统配置 | cloud_storage_configs, email_configs, sms_configs | 系统级配置 |
| OAuth | oauth_accounts, oauth_states | 第三方登录 |
| 订单支付 | orders, order_items, payments, refunds, products | 交易闭环 |
| AI 能力 | ai_providers, ai_agents, ai_tools, ai_tasks, task_logs, usage_stats | AI Provider/Agent/任务/统计 |
| 社媒发布 | social_accounts, contents, publish_records, wechat_configs, douyin_configs, youtube_configs, content_platforms | 多平台社媒发布 |
| 插件系统 | installed_plugins, plugin_configs | 热插拔插件管理 |
| AI 客服 | customer_service_sessions, customer_service_messages, customer_service_faqs, customer_service_quick_replies, customer_service_tickets, customer_service_ticket_replies | 在线客服对话/FAQ/工单 |
| 龙虾孵化 | claw_instances, claw_profiles, claw_knowledges, knowledge_chunks, knowledge_embeddings, claw_skills, skill_configs, claw_memories, memory_embeddings, claw_conversations, claw_messages, claw_tasks, task_logs, claw_evolutions | 龙虾实例全生命周期 |
| 多站点管理 | websites, site_configs, site_nav_menus, site_pages, site_blocks, site_builds, site_build_logs, website_domains, website_templates, claw_assignments | 多站点创建/编辑/部署/运营 |
| 任务队列 | jobs, job_fails, job_batches | 异步任务队列 |
后端 API api.kehuanli.com | 全部业务表 | 统一业务访问入口 |
WebSocket wss.kehuanli.com | claw_conversations, claw_messages, claw_tasks | 龙虾实时对话与任务推送 |
4. 目录规范
packages/ └── database/ └── prisma/ └── schema.prisma 5. 命名规范(强制)
5.1 表名(数据库物理表)
- 使用复数、
snake_case:如admins、members、member_orders
5.2 字段名(数据库物理字段)
- 统一使用
snake_case - 主键建议:
id - 时间字段统一:
created_at、updated_at - 软删除字段(如需):
deleted_at
5.3 Prisma 模型命名
- Prisma 模型字段统一使用
snake_case(如created_at) - Prisma 模型名保持单数 PascalCase(如
Admin、MemberRole、Domain) - 物理表名需显式使用
@@map("table_name")与数据库表名对齐(复数snake_case) - 索引/唯一约束
map命名统一使用snake_case
5.4 禁止项
- 禁止新增驼峰字段(如时间字段使用驼峰写法)
- 禁止“同一张表内”混用驼峰与下划线字段
6. schema.prisma 标准示例(snake_case)
generator client { provider = "prisma-client-js" } datasource db { provider = "mysql" } enum AdminStatus { active inactive } enum MemberStatus { active inactive } model Admin { id Int @id @default(autoincrement()) username String @unique password String avatar String? phone String? @unique email String? @unique admin_user_roles AdminUserRole[] created_at DateTime @default(now()) updated_at DateTime @updatedAt @@map("admins") } model Member { id Int @id @default(autoincrement()) username String @unique password String avatar String? phone String? @unique email String? @unique status MemberStatus @default(active) points Int @default(0) member_user_roles MemberUserRole[] created_at DateTime @default(now()) updated_at DateTime @updatedAt @@map("members") } 7. 当前执行状态与后续要求
当前 packages/database/prisma/schema.prisma 已按规范完成:
- 模型名统一为单数 PascalCase(如
Domain、Template、Website、ClawInstance) - 字段命名统一为
snake_case,时间字段统一为created_at、updated_at - 物理表名均显式声明
@@map("xxx"),并与复数snake_case表名对齐 - 索引/唯一约束
map命名统一为snake_case - 龙虾孵化 14 个 Model、多站点管理 10 个 Model 已完整定义
- 任务队列 3 个 Model(Job/JobFail/JobBatch)、商品模型(Product)已同步数据库
后续新增模型需遵循:
- 字段命名统一
snake_case - 模型名统一单数 PascalCase,表名统一复数
snake_case并显式@@map - 索引/唯一约束
map命名统一snake_case - 变更同步更新 API 文档、SQL 脚本与数据字典
8. 落地要求
- 新增表/字段前先对照本规范评审
- 历史表若存在非规范字段,按迭代计划迁移为下划线命名
- 接口文档与 SQL 脚本必须使用数据库物理字段名
- 评审时必须同时检查:Prisma 字段是否为
snake_case、@@map是否完整