- 更新 AGENTS.md 项目知识库文档(多目录) - 添加 docs/analyst.md 产品分析文档 - 添加 .omc/ 工具状态和会话记录 - 添加 .sisyphus/ 计划文档 - 添加 project-structure.txt 项目结构 - 删除 timeline 测试截图
3.4 KiB
3.4 KiB
prisma/ - Database Layer
OVERVIEW
Prisma ORM configuration for PostgreSQL (Neon serverless) with multilingual support, vector embeddings, and automated workflows integration.
KEY FILES
| File | Purpose |
|---|---|
schema.prisma |
Database models, enums, indexes |
seed.ts |
Initial data seeding script |
migrations/ |
Migration history |
DATABASE MODELS
Core Models
| Model | Purpose | Key Fields |
|---|---|---|
Project |
AI projects | name/nameEn, slug (unique), description, content, embedding (vector) |
Tag |
Project tags | name (unique), slug (unique) |
ExternalLink |
Project links | type (WEBSITE/GITHUB/HUGGINGFACE/PAPER), url |
ProjectTag |
Junction table | projectId, tagId |
Keyword Cloud System
| Model | Purpose |
|---|---|
Quarter |
Quarterly metadata |
Keyword |
Trending keywords with visual config |
VisualStyleRule |
Color/size/border rules by score range |
KeywordCloudErrorLog |
Error tracking for n8n workflows |
Discovery System
| Model | Purpose |
|---|---|
ProjectDiscoveryTask |
Exploration task tracking |
AI Timeline System
| Model | Purpose |
|---|---|
AIEvent |
Historical AI events with dates |
ENUMS
ProjectStatus: ACTIVE | ARCHIVEDLinkType: WEBSITE | GITHUB | HUGGINGFACE | PAPERTaskStatus: PENDING | IN_PROGRESS | COMPLETED | FAILED
INDEXES
| Index | Model | Purpose |
|---|---|---|
idx_project_slug |
Project | Unique slug lookup |
idx_project_status_createdAt |
Project | Filter by status, sort by date |
idx_project_embedding_cosine |
Project | Vector similarity search |
idx_link_type_url |
ExternalLink | URL deduplication |
idx_task_status_created |
ProjectDiscoveryTask | Task queue queries |
idx_keyword_quarterId |
Keyword | Quarterly keyword lookup |
idx_quarter_displayOrder |
Quarter | Quarter ordering |
MULTILINGUAL PATTERN
Most models follow the dual-language pattern:
name: String // Chinese (primary)
nameEn: String? // English (optional)
description: String
descriptionEn: String?
content: String?
contentEn: String?
CASCADE DELETIONS
ExternalLink→Project(onDelete: Cascade)ProjectTag→ProjectandTag(onDelete: Cascade)Keyword→Quarter(onDelete: Cascade)
FOR AI AGENTS
Working With This Directory
-
After schema changes:
pnpm prisma migrate dev --name description pnpm prisma generate -
Seed database:
pnpm prisma db seed -
Inspect database:
pnpm prisma studio
Common Patterns
- Unique constraints: Handle with try-catch + fallback (see webhook tag upsert)
- Multilingual queries: Always check both
fieldandfieldEnvariants - Vector search: Use
Unsupported("vector")type with pgvector extension
Anti-Patterns
- NEVER modify schema without running migrations
- NEVER skip
pnpm prisma generateafter schema changes - NEVER use raw SQL when Prisma methods are available
- NEVER commit
.envfiles with DATABASE_URL
N8N INTEGRATION
n8n workflows interact with these models:
- Keywords: Written by keyword-cloud workflow
- ProjectDiscoveryTask: Created by trending/topic workflows
- Project: Updated by analysis workflows
- Tag: Maintained by tag-janitor workflow