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

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 | 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

  • ExternalLinkProject (onDelete: Cascade)
  • ProjectTagProject and Tag (onDelete: Cascade)
  • KeywordQuarter (onDelete: Cascade)

FOR AI AGENTS

Working With This Directory

  1. After schema changes:

    pnpm prisma migrate dev --name description
    pnpm prisma generate
    
  2. Seed database:

    pnpm prisma db seed
    
  3. Inspect database:

    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