diff options
Diffstat (limited to 'db/schema')
| -rw-r--r-- | db/schema/evaluationCriteria.ts | 13 | ||||
| -rw-r--r-- | db/schema/evaluationTarget.ts | 2 | ||||
| -rw-r--r-- | db/schema/index.ts | 1 | ||||
| -rw-r--r-- | db/schema/techSales.ts | 12 |
4 files changed, 20 insertions, 8 deletions
diff --git a/db/schema/evaluationCriteria.ts b/db/schema/evaluationCriteria.ts index 23a987cf..788d0f3e 100644 --- a/db/schema/evaluationCriteria.ts +++ b/db/schema/evaluationCriteria.ts @@ -7,9 +7,9 @@ import { serial,
text,
timestamp,
- varchar,
+ varchar
} from 'drizzle-orm/pg-core';
-import { eq, relations } from 'drizzle-orm';
+import { eq, relations, sql } from 'drizzle-orm';
// ----------------------------------------------------------------------------------------------------
@@ -47,7 +47,7 @@ const REG_EVAL_CRITERIA_ITEM_ENUM = REG_EVAL_CRITERIA_ITEM.map(c => c.value) as const regEvalCriteria = pgTable('reg_eval_criteria', {
id: serial('id').primaryKey(),
category: varchar('category', { enum: REG_EVAL_CRITERIA_CATEGORY_ENUM, length: 32 }).default('quality').notNull(),
- category2: varchar('category', { enum: REG_EVAL_CRITERIA_CATEGORY_ENUM2, length: 32 }).default('processScore').notNull(),
+ category2: varchar('category2', { enum: REG_EVAL_CRITERIA_CATEGORY_ENUM2, length: 32 }).default('processScore').notNull(),
item: varchar('item', { enum: REG_EVAL_CRITERIA_ITEM_ENUM, length: 32 }).default('quality').notNull(),
classification: varchar('classification', { length: 255 }).notNull(),
range: varchar('range', { length: 255 }),
@@ -76,18 +76,20 @@ const regEvalCriteriaDetails = pgTable('reg_eval_criteria_details', { const regEvalCriteriaView = pgView('reg_eval_criteria_view').as((qb) =>
qb
.select({
- id: regEvalCriteria.id,
+ id: regEvalCriteriaDetails.id,
+ criteriaId: regEvalCriteriaDetails.criteriaId,
category: regEvalCriteria.category,
+ scoreCategory: regEvalCriteria.category2,
item: regEvalCriteria.item,
classification: regEvalCriteria.classification,
range: regEvalCriteria.range,
- detailId: regEvalCriteriaDetails.id,
detail: regEvalCriteriaDetails.detail,
orderIndex: regEvalCriteriaDetails.orderIndex,
scoreEquipShip: regEvalCriteriaDetails.scoreEquipShip,
scoreEquipMarine: regEvalCriteriaDetails.scoreEquipMarine,
scoreBulkShip: regEvalCriteriaDetails.scoreBulkShip,
scoreBulkMarine: regEvalCriteriaDetails.scoreBulkMarine,
+ remarks: regEvalCriteria.remarks,
})
.from(regEvalCriteria)
.leftJoin(regEvalCriteriaDetails, eq(regEvalCriteria.id, regEvalCriteriaDetails.criteriaId))
@@ -128,6 +130,7 @@ export { regEvalCriteriaDetailsRelations,
regEvalCriteriaRelations,
regEvalCriteriaView,
+ REG_EVAL_CRITERIA_CATEGORY2,
type NewRegEvalCriteria,
type NewRegEvalCriteriaDetails,
type RegEvalCriteriaView,
diff --git a/db/schema/evaluationTarget.ts b/db/schema/evaluationTarget.ts index 915641c8..a2b1a46e 100644 --- a/db/schema/evaluationTarget.ts +++ b/db/schema/evaluationTarget.ts @@ -638,7 +638,7 @@ export const periodicEvaluationsView = pgView('periodic_evaluations_view').as((q finalScore: periodicEvaluations.finalScore, finalGrade: periodicEvaluations.finalGrade, - // 평가 점수 (평가자 평균) + // 평가 점수 evaluationScore: periodicEvaluations.evaluationScore, evaluationGrade: periodicEvaluations.evaluationGrade, diff --git a/db/schema/index.ts b/db/schema/index.ts index 480207f9..b9491235 100644 --- a/db/schema/index.ts +++ b/db/schema/index.ts @@ -20,6 +20,7 @@ export * from './bRfq'; export * from './techVendors'; export * from './evaluation'; export * from './evaluationTarget'; +export * from './evaluationCriteria'; export * from './projectGtc'; // MDG SOAP 수신용 diff --git a/db/schema/techSales.ts b/db/schema/techSales.ts index 744d22cc..87802f52 100644 --- a/db/schema/techSales.ts +++ b/db/schema/techSales.ts @@ -58,6 +58,7 @@ export type TechSalesRfqStatus = typeof TECH_SALES_RFQ_STATUSES[keyof typeof TEC // 기술영업 벤더 견적서 상태 export const TECH_SALES_QUOTATION_STATUSES = { + ASSIGNED: "Assigned", // 벤더 할당됨 (아직 RFQ 전송 안됨) DRAFT: "Draft", SUBMITTED: "Submitted", REVISED: "Revised", @@ -69,6 +70,12 @@ export type TechSalesQuotationStatus = typeof TECH_SALES_QUOTATION_STATUSES[keyo // 상태 설정 객체 (UI에서 사용) export const TECH_SALES_QUOTATION_STATUS_CONFIG = { + [TECH_SALES_QUOTATION_STATUSES.ASSIGNED]: { + label: "할당됨", + variant: "outline" as const, + description: "벤더에게 할당됨 (RFQ 미전송)", + color: "text-gray-600", + }, [TECH_SALES_QUOTATION_STATUSES.DRAFT]: { label: "초안", variant: "secondary" as const, @@ -190,7 +197,7 @@ export const techSalesAttachments = pgTable( "tech_sales_attachments", { id: serial("id").primaryKey(), - attachmentType: varchar("attachment_type", { length: 50 }).notNull(), // 'RFQ_COMMON', 'VENDOR_SPECIFIC' + attachmentType: varchar("attachment_type", { length: 50 }).notNull(), // 'RFQ_COMMON', 'VENDOR_SPECIFIC', TBE_RESULT, CBE_RESULT techSalesRfqId: integer("tech_sales_rfq_id").references( () => techSalesRfqs.id, { onDelete: "cascade" } @@ -233,7 +240,7 @@ export const techSalesVendorQuotations = pgTable( // 상태 관리 status: varchar("status", { length: 30 }) .$type<TechSalesQuotationStatus>() - .default(TECH_SALES_QUOTATION_STATUSES.DRAFT) + .default(TECH_SALES_QUOTATION_STATUSES.ASSIGNED) .notNull(), // 기타 정보 @@ -345,6 +352,7 @@ export const techSalesVendorQuotationAttachments = pgTable("tech_sales_vendor_qu quotationId: integer("quotation_id") .notNull() .references(() => techSalesVendorQuotations.id, { onDelete: "cascade" }), + revisionId: integer("revision_id").notNull().default(0), // 리비전 ID 추가 (기본값 0) fileName: varchar("file_name", { length: 255 }).notNull(), originalFileName: varchar("original_file_name", { length: 255 }).notNull(), fileSize: integer("file_size").notNull(), |
