summaryrefslogtreecommitdiff
path: root/db/schema/compliance.ts
diff options
context:
space:
mode:
Diffstat (limited to 'db/schema/compliance.ts')
-rw-r--r--db/schema/compliance.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/db/schema/compliance.ts b/db/schema/compliance.ts
index 18df510b..d878abe1 100644
--- a/db/schema/compliance.ts
+++ b/db/schema/compliance.ts
@@ -23,6 +23,7 @@ export const complianceQuestions = pgTable('compliance_questions', {
questionType: varchar('question_type', { length: 20 }).notNull(),
// 'RADIO', 'CHECKBOX', 'TEXT', 'TEXTAREA', 'DROPDOWN', 'FILE', 'PERCENTAGE', 'CONDITIONAL'
isRequired: boolean('is_required').notNull().default(true),
+ isRedFlag: boolean('is_red_flag').notNull().default(false), // 레드플래그 질문 여부
hasDetailText: boolean('has_detail_text').notNull().default(false), // 상세 기술 필요 여부
hasFileUpload: boolean('has_file_upload').notNull().default(false), // 첨부파일 필요 여부
parentQuestionId: integer('parent_question_id'), // 조건부 질문의 부모
@@ -79,6 +80,15 @@ export const complianceResponseFiles = pgTable('compliance_response_files', {
uploadedAt: timestamp('uploaded_at').defaultNow(),
});
+// 7. 레드플래그 담당자 관리
+export const redFlagManagers = pgTable('red_flag_managers', {
+ id: serial('id').primaryKey(),
+ purchasingManagerId: integer('purchasing_manager_id').references(() => users.id), // 구매기획 담당자
+ complianceManagerId: integer('compliance_manager_id').references(() => users.id), // 준법 담당자
+ createdAt: timestamp('created_at').defaultNow(),
+ updatedAt: timestamp('updated_at').defaultNow(),
+});
+
// Relations 정의
export const complianceSurveyTemplatesRelations = relations(complianceSurveyTemplates, ({ many }) => ({
questions: many(complianceQuestions),
@@ -137,6 +147,17 @@ export const complianceResponseFilesRelations = relations(complianceResponseFile
}),
}));
+export const redFlagManagersRelations = relations(redFlagManagers, ({ one }) => ({
+ purchasingManager: one(users, {
+ fields: [redFlagManagers.purchasingManagerId],
+ references: [users.id],
+ }),
+ complianceManager: one(users, {
+ fields: [redFlagManagers.complianceManagerId],
+ references: [users.id],
+ }),
+}));
+
// 타입 정의
export type ComplianceSurveyTemplate = typeof complianceSurveyTemplates.$inferSelect;
export type ComplianceQuestion = typeof complianceQuestions.$inferSelect;
@@ -144,6 +165,7 @@ export type ComplianceQuestionOption = typeof complianceQuestionOptions.$inferSe
export type ComplianceResponse = typeof complianceResponses.$inferSelect;
export type ComplianceResponseAnswer = typeof complianceResponseAnswers.$inferSelect;
export type ComplianceResponseFile = typeof complianceResponseFiles.$inferSelect;
+export type RedFlagManager = typeof redFlagManagers.$inferSelect;
// Insert 타입
export type NewComplianceSurveyTemplate = typeof complianceSurveyTemplates.$inferInsert;
@@ -152,6 +174,7 @@ export type NewComplianceQuestionOption = typeof complianceQuestionOptions.$infe
export type NewComplianceResponse = typeof complianceResponses.$inferInsert;
export type NewComplianceResponseAnswer = typeof complianceResponseAnswers.$inferInsert;
export type NewComplianceResponseFile = typeof complianceResponseFiles.$inferInsert;
+export type NewRedFlagManager = typeof redFlagManagers.$inferInsert;
// 질문 타입 상수
export const QUESTION_TYPES = {