격자 저장문제 수정

This commit is contained in:
kjs
2025-11-06 17:01:13 +09:00
parent 786576bb76
commit f2500865a6
16 changed files with 3300 additions and 401 deletions

View File

@@ -62,9 +62,23 @@ export async function getColumnList(
try {
const { tableName } = req.params;
const { page = 1, size = 50 } = req.query;
// 🔥 회사 코드 추출 (JWT에서 또는 DB에서 조회)
let companyCode = req.user?.companyCode;
if (!companyCode && req.user?.userId) {
// JWT에 없으면 DB에서 조회
const { query } = require("../database/db");
const userResult = await query(
`SELECT company_code FROM user_info WHERE user_id = $1`,
[req.user.userId]
);
companyCode = userResult[0]?.company_code;
logger.info(`DB에서 회사 코드 조회 (컬럼 목록): ${req.user.userId}${companyCode}`);
}
logger.info(
`=== 컬럼 정보 조회 시작: ${tableName} (page: ${page}, size: ${size}) ===`
`=== 컬럼 정보 조회 시작: ${tableName} (page: ${page}, size: ${size}), company: ${companyCode} ===`
);
if (!tableName) {
@@ -84,7 +98,8 @@ export async function getColumnList(
const result = await tableManagementService.getColumnList(
tableName,
parseInt(page as string),
parseInt(size as string)
parseInt(size as string),
companyCode // 🔥 회사 코드 전달
);
logger.info(
@@ -124,8 +139,22 @@ export async function updateColumnSettings(
try {
const { tableName, columnName } = req.params;
const settings: ColumnSettings = req.body;
// 🔥 회사 코드 추출 (JWT에서 또는 DB에서 조회)
let companyCode = req.user?.companyCode;
if (!companyCode && req.user?.userId) {
// JWT에 없으면 DB에서 조회
const { query } = require("../database/db");
const userResult = await query(
`SELECT company_code FROM user_info WHERE user_id = $1`,
[req.user.userId]
);
companyCode = userResult[0]?.company_code;
logger.info(`DB에서 회사 코드 조회: ${req.user.userId}${companyCode}`);
}
logger.info(`=== 컬럼 설정 업데이트 시작: ${tableName}.${columnName} ===`);
logger.info(`=== 컬럼 설정 업데이트 시작: ${tableName}.${columnName}, company: ${companyCode} ===`);
if (!tableName || !columnName) {
const response: ApiResponse<null> = {
@@ -153,14 +182,34 @@ export async function updateColumnSettings(
return;
}
if (!companyCode) {
logger.error(`회사 코드 누락: ${tableName}.${columnName}`, {
user: req.user,
hasUser: !!req.user,
userId: req.user?.userId,
companyCodeFromJWT: req.user?.companyCode,
});
const response: ApiResponse<null> = {
success: false,
message: "회사 코드를 찾을 수 없습니다.",
error: {
code: "MISSING_COMPANY_CODE",
details: "사용자 정보에서 회사 코드를 찾을 수 없습니다. 관리자에게 문의하세요.",
},
};
res.status(400).json(response);
return;
}
const tableManagementService = new TableManagementService();
await tableManagementService.updateColumnSettings(
tableName,
columnName,
settings
settings,
companyCode // 🔥 회사 코드 전달
);
logger.info(`컬럼 설정 업데이트 완료: ${tableName}.${columnName}`);
logger.info(`컬럼 설정 업데이트 완료: ${tableName}.${columnName}, company: ${companyCode}`);
const response: ApiResponse<null> = {
success: true,
@@ -194,8 +243,28 @@ export async function updateAllColumnSettings(
try {
const { tableName } = req.params;
const columnSettings: ColumnSettings[] = req.body;
// 🔥 회사 코드 추출 (JWT에서 또는 DB에서 조회)
let companyCode = req.user?.companyCode;
if (!companyCode && req.user?.userId) {
// JWT에 없으면 DB에서 조회
const { query } = require("../database/db");
const userResult = await query(
`SELECT company_code FROM user_info WHERE user_id = $1`,
[req.user.userId]
);
companyCode = userResult[0]?.company_code;
logger.info(`DB에서 회사 코드 조회: ${req.user.userId}${companyCode}`);
}
logger.info(`=== 전체 컬럼 설정 일괄 업데이트 시작: ${tableName} ===`);
// 🔍 디버깅: 사용자 정보 출력
logger.info(`[DEBUG] req.user:`, JSON.stringify(req.user, null, 2));
logger.info(`[DEBUG] req.user?.companyCode: ${req.user?.companyCode}`);
logger.info(`[DEBUG] req.user?.userId: ${req.user?.userId}`);
logger.info(`[DEBUG] companyCode 최종값: ${companyCode}`);
logger.info(`=== 전체 컬럼 설정 일괄 업데이트 시작: ${tableName}, company: ${companyCode} ===`);
if (!tableName) {
const response: ApiResponse<null> = {
@@ -223,14 +292,35 @@ export async function updateAllColumnSettings(
return;
}
if (!companyCode) {
logger.error(`회사 코드 누락 (일괄 업데이트): ${tableName}`, {
user: req.user,
hasUser: !!req.user,
userId: req.user?.userId,
companyCodeFromJWT: req.user?.companyCode,
settingsCount: columnSettings.length,
});
const response: ApiResponse<null> = {
success: false,
message: "회사 코드를 찾을 수 없습니다.",
error: {
code: "MISSING_COMPANY_CODE",
details: "사용자 정보에서 회사 코드를 찾을 수 없습니다. 관리자에게 문의하세요.",
},
};
res.status(400).json(response);
return;
}
const tableManagementService = new TableManagementService();
await tableManagementService.updateAllColumnSettings(
tableName,
columnSettings
columnSettings,
companyCode // 🔥 회사 코드 전달
);
logger.info(
`전체 컬럼 설정 일괄 업데이트 완료: ${tableName}, ${columnSettings.length}`
`전체 컬럼 설정 일괄 업데이트 완료: ${tableName}, ${columnSettings.length}, company: ${companyCode}`
);
const response: ApiResponse<null> = {
@@ -453,9 +543,23 @@ export async function updateColumnInputType(
try {
const { tableName, columnName } = req.params;
const { inputType, detailSettings } = req.body;
// 🔥 회사 코드 추출 (JWT에서 또는 DB에서 조회)
let companyCode = req.user?.companyCode;
if (!companyCode && req.user?.userId) {
// JWT에 없으면 DB에서 조회
const { query } = require("../database/db");
const userResult = await query(
`SELECT company_code FROM user_info WHERE user_id = $1`,
[req.user.userId]
);
companyCode = userResult[0]?.company_code;
logger.info(`DB에서 회사 코드 조회: ${req.user.userId}${companyCode}`);
}
logger.info(
`=== 컬럼 입력 타입 설정 시작: ${tableName}.${columnName} = ${inputType} ===`
`=== 컬럼 입력 타입 설정 시작: ${tableName}.${columnName} = ${inputType}, company: ${companyCode} ===`
);
if (!tableName || !columnName || !inputType) {
@@ -471,16 +575,37 @@ export async function updateColumnInputType(
return;
}
if (!companyCode) {
logger.error(`회사 코드 누락 (입력 타입): ${tableName}.${columnName}`, {
user: req.user,
hasUser: !!req.user,
userId: req.user?.userId,
companyCodeFromJWT: req.user?.companyCode,
inputType,
});
const response: ApiResponse<null> = {
success: false,
message: "회사 코드를 찾을 수 없습니다.",
error: {
code: "MISSING_COMPANY_CODE",
details: "사용자 정보에서 회사 코드를 찾을 수 없습니다. 관리자에게 문의하세요.",
},
};
res.status(400).json(response);
return;
}
const tableManagementService = new TableManagementService();
await tableManagementService.updateColumnInputType(
tableName,
columnName,
inputType,
companyCode,
detailSettings
);
logger.info(
`컬럼 입력 타입 설정 완료: ${tableName}.${columnName} = ${inputType}`
`컬럼 입력 타입 설정 완료: ${tableName}.${columnName} = ${inputType}, company: ${companyCode}`
);
const response: ApiResponse<null> = {
@@ -960,7 +1085,24 @@ export async function getColumnWebTypes(
): Promise<void> {
try {
const { tableName } = req.params;
logger.info(`=== 컬럼 웹타입 정보 조회 시작: ${tableName} ===`);
// 🔥 회사 코드 추출 (JWT에서 또는 DB에서 조회)
let companyCode = req.user?.companyCode;
if (!companyCode && req.user?.userId) {
// JWT에 없으면 DB에서 조회
const { query } = require("../database/db");
const userResult = await query(
`SELECT company_code FROM user_info WHERE user_id = $1`,
[req.user.userId]
);
companyCode = userResult[0]?.company_code;
logger.info(`DB에서 회사 코드 조회 (조회): ${req.user.userId}${companyCode}`);
}
logger.info(
`=== 컬럼 웹타입 정보 조회 시작: ${tableName}, company: ${companyCode} ===`
);
if (!tableName) {
const response: ApiResponse<null> = {
@@ -975,12 +1117,33 @@ export async function getColumnWebTypes(
return;
}
if (!companyCode) {
logger.error(`회사 코드 누락 (조회): ${tableName}`, {
user: req.user,
hasUser: !!req.user,
userId: req.user?.userId,
companyCodeFromJWT: req.user?.companyCode,
});
const response: ApiResponse<null> = {
success: false,
message: "회사 코드를 찾을 수 없습니다.",
error: {
code: "MISSING_COMPANY_CODE",
details: "사용자 정보에서 회사 코드를 찾을 수 없습니다. 관리자에게 문의하세요.",
},
};
res.status(400).json(response);
return;
}
const tableManagementService = new TableManagementService();
const inputTypes =
await tableManagementService.getColumnInputTypes(tableName);
const inputTypes = await tableManagementService.getColumnInputTypes(
tableName,
companyCode
);
logger.info(
`컬럼 입력타입 정보 조회 완료: ${tableName}, ${inputTypes.length}개 컬럼`
`컬럼 입력타입 정보 조회 완료: ${tableName}, company: ${companyCode}, ${inputTypes.length}개 컬럼`
);
const response: ApiResponse<ColumnTypeInfo[]> = {