summaryrefslogtreecommitdiff
path: root/db/schema
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-06-24 01:51:59 +0000
committerjoonhoekim <26rote@gmail.com>2025-06-24 01:51:59 +0000
commit6824e097d768f724cf439b410ccfb1ab9685ac98 (patch)
tree1f297313637878e7a4ad6c89b84d5a2c3e9eb650 /db/schema
parentf4825dd3853188de4688fb4a56c0f4e847da314b (diff)
parent4e63d8427d26d0d1b366ddc53650e15f3481fc75 (diff)
(merge) 대표님/최겸 작업사항 머지
Diffstat (limited to 'db/schema')
-rw-r--r--db/schema/evaluationCriteria.ts13
-rw-r--r--db/schema/evaluationTarget.ts2
-rw-r--r--db/schema/index.ts1
-rw-r--r--db/schema/techSales.ts12
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(),