File size: 1,690 Bytes
4c025e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8dee6fc
4c025e9
 
 
 
 
 
 
8dee6fc
4c025e9
8dee6fc
4c025e9
 
 
8dee6fc
4c025e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const mongoose = require('mongoose');

// 提示词 Schema
const promptSchema = new mongoose.Schema(
  {
    title: {
      type: String,
      required: [true, '请输入提示词标题'],
      trim: true,
    },
    content: {
      type: String,
      required: [true, '请输入提示词内容'],
    },
    tags: [String],
    createdAt: {
      type: Date,
      default: Date.now,
    },
    updatedAt: {
      type: Date,
      default: Date.now,
    },
  }
);

// DSL 文件 Schema - 修改以存储文本内容
const dslFileSchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: [true, '请输入文件名称'],
      trim: true,
    },
    content: {  // 添加: 存储 YAML 文本内容
      type: String,
      required: [true, '请提供 YAML 内容'],
    },
    mimeType: {
      type: String,
      default: 'application/x-yaml',
    },
    uploadedAt: {
      type: Date,
      default: Date.now,
    },
  }
);

// 提示词组 Schema
const promptGroupSchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: [true, '请输入提示词组名称'],
      trim: true,
    },
    description: {
      type: String,
      trim: true,
    },
    category: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Category',
    },
    prompts: [promptSchema],
    workflows: [String],
    dslFiles: [dslFileSchema],
    createdBy: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User',
    },
  },
  {
    timestamps: true,
  }
);

const PromptGroup = mongoose.model('PromptGroup', promptGroupSchema);

module.exports = PromptGroup;