71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
import mongoose, { Schema, Document } from 'mongoose';
|
|
|
|
export interface IConclusionRemark extends Document {
|
|
conclusionId: string;
|
|
requestId: string;
|
|
|
|
// Manual conclusion
|
|
finalRemark?: string;
|
|
|
|
// AI generated
|
|
aiGeneratedRemark?: string;
|
|
aiModelUsed?: string;
|
|
aiConfidenceScore?: number;
|
|
|
|
// Summaries
|
|
approvalSummary?: {
|
|
totalLevels?: number;
|
|
approvedLevels?: number;
|
|
averageTatUsage?: number;
|
|
};
|
|
documentSummary?: {
|
|
totalDocuments?: number;
|
|
documentNames?: string[];
|
|
};
|
|
keyDiscussionPoints?: string[];
|
|
|
|
// Metadata
|
|
editedBy?: string; // userId
|
|
isEdited?: boolean;
|
|
editCount?: number;
|
|
|
|
generatedAt?: Date;
|
|
finalizedAt?: Date;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
}
|
|
|
|
const ConclusionRemarkSchema = new Schema<IConclusionRemark>({
|
|
conclusionId: { type: String, required: false, unique: false }, // Can be auto-generated or UUID
|
|
requestId: { type: String, required: true, index: true },
|
|
|
|
finalRemark: String,
|
|
|
|
aiGeneratedRemark: String,
|
|
aiModelUsed: String,
|
|
aiConfidenceScore: Number,
|
|
|
|
approvalSummary: {
|
|
totalLevels: Number,
|
|
approvedLevels: Number,
|
|
averageTatUsage: Number
|
|
},
|
|
documentSummary: {
|
|
totalDocuments: Number,
|
|
documentNames: [String]
|
|
},
|
|
keyDiscussionPoints: [String],
|
|
|
|
editedBy: String,
|
|
isEdited: { type: Boolean, default: false },
|
|
editCount: { type: Number, default: 0 },
|
|
|
|
generatedAt: Date,
|
|
finalizedAt: Date
|
|
}, {
|
|
timestamps: true,
|
|
collection: 'conclusion_remarks'
|
|
});
|
|
|
|
export const ConclusionRemarkModel = mongoose.model<IConclusionRemark>('ConclusionRemark', ConclusionRemarkSchema);
|