Files
agent-park/prisma/AGENTS.md
T
mzaxd 6cb4545a17 chore: 更新项目文档和工具状态
- 更新 AGENTS.md 项目知识库文档(多目录)
- 添加 docs/analyst.md 产品分析文档
- 添加 .omc/ 工具状态和会话记录
- 添加 .sisyphus/ 计划文档
- 添加 project-structure.txt 项目结构
- 删除 timeline 测试截图
2026-02-20 21:48:05 +08:00

129 lines
3.4 KiB
Markdown

# prisma/ - Database Layer
<!-- Parent: ../AGENTS.md -->
## 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 | ARCHIVED
- `LinkType`: WEBSITE | GITHUB | HUGGINGFACE | PAPER
- `TaskStatus`: 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``Project` and `Tag` (onDelete: Cascade)
- `Keyword``Quarter` (onDelete: Cascade)
## FOR AI AGENTS
### Working With This Directory
1. **After schema changes**:
```bash
pnpm prisma migrate dev --name description
pnpm prisma generate
```
2. **Seed database**:
```bash
pnpm prisma db seed
```
3. **Inspect database**:
```bash
pnpm prisma studio
```
### Common Patterns
- **Unique constraints**: Handle with try-catch + fallback (see webhook tag upsert)
- **Multilingual queries**: Always check both `field` and `fieldEn` variants
- **Vector search**: Use `Unsupported("vector")` type with pgvector extension
### Anti-Patterns
- NEVER modify schema without running migrations
- NEVER skip `pnpm prisma generate` after schema changes
- NEVER use raw SQL when Prisma methods are available
- NEVER commit `.env` files 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
<!-- MANUAL: Additional notes can be added below -->