배포 오류 해결

This commit is contained in:
dohyeons
2025-12-11 14:34:42 +09:00
parent 4247c3bb70
commit 1d97bcaa9f
6 changed files with 220 additions and 71 deletions

View File

@@ -3,7 +3,8 @@
* 마스터 선택 시 여러 필드 자동 입력 기능
*/
import { Request, Response } from "express";
import { Response } from "express";
import { AuthenticatedRequest } from "../types/auth";
import { query, queryOne } from "../database/db";
import logger from "../utils/logger";
@@ -14,7 +15,10 @@ import logger from "../utils/logger";
/**
* 자동 입력 그룹 목록 조회
*/
export const getAutoFillGroups = async (req: Request, res: Response) => {
export const getAutoFillGroups = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const companyCode = req.user?.companyCode || "*";
const { isActive } = req.query;
@@ -47,7 +51,10 @@ export const getAutoFillGroups = async (req: Request, res: Response) => {
const result = await query(sql, params);
logger.info("자동 입력 그룹 목록 조회", { count: result.length, companyCode });
logger.info("자동 입력 그룹 목록 조회", {
count: result.length,
companyCode,
});
res.json({
success: true,
@@ -66,7 +73,10 @@ export const getAutoFillGroups = async (req: Request, res: Response) => {
/**
* 자동 입력 그룹 상세 조회 (매핑 포함)
*/
export const getAutoFillGroupDetail = async (req: Request, res: Response) => {
export const getAutoFillGroupDetail = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { groupCode } = req.params;
const companyCode = req.user?.companyCode || "*";
@@ -98,7 +108,10 @@ export const getAutoFillGroupDetail = async (req: Request, res: Response) => {
WHERE group_code = $1 AND company_code = $2
ORDER BY sort_order, mapping_id
`;
const mappingResult = await query(mappingSql, [groupCode, groupResult.company_code]);
const mappingResult = await query(mappingSql, [
groupCode,
groupResult.company_code,
]);
logger.info("자동 입력 그룹 상세 조회", { groupCode, companyCode });
@@ -122,7 +135,9 @@ export const getAutoFillGroupDetail = async (req: Request, res: Response) => {
/**
* 그룹 코드 자동 생성 함수
*/
const generateAutoFillGroupCode = async (companyCode: string): Promise<string> => {
const generateAutoFillGroupCode = async (
companyCode: string
): Promise<string> => {
const prefix = "AF";
const result = await queryOne(
`SELECT COUNT(*) as cnt FROM cascading_auto_fill_group WHERE company_code = $1`,
@@ -136,7 +151,10 @@ const generateAutoFillGroupCode = async (companyCode: string): Promise<string> =
/**
* 자동 입력 그룹 생성
*/
export const createAutoFillGroup = async (req: Request, res: Response) => {
export const createAutoFillGroup = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const companyCode = req.user?.companyCode || "*";
const userId = req.user?.userId || "system";
@@ -153,7 +171,8 @@ export const createAutoFillGroup = async (req: Request, res: Response) => {
if (!groupName || !masterTable || !masterValueColumn) {
return res.status(400).json({
success: false,
message: "필수 필드가 누락되었습니다. (groupName, masterTable, masterValueColumn)",
message:
"필수 필드가 누락되었습니다. (groupName, masterTable, masterValueColumn)",
});
}
@@ -224,7 +243,10 @@ export const createAutoFillGroup = async (req: Request, res: Response) => {
/**
* 자동 입력 그룹 수정
*/
export const updateAutoFillGroup = async (req: Request, res: Response) => {
export const updateAutoFillGroup = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { groupCode } = req.params;
const companyCode = req.user?.companyCode || "*";
@@ -333,7 +355,10 @@ export const updateAutoFillGroup = async (req: Request, res: Response) => {
/**
* 자동 입력 그룹 삭제
*/
export const deleteAutoFillGroup = async (req: Request, res: Response) => {
export const deleteAutoFillGroup = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { groupCode } = req.params;
const companyCode = req.user?.companyCode || "*";
@@ -382,7 +407,10 @@ export const deleteAutoFillGroup = async (req: Request, res: Response) => {
* 마스터 옵션 목록 조회
* 자동 입력 그룹의 마스터 테이블에서 선택 가능한 옵션 목록
*/
export const getAutoFillMasterOptions = async (req: Request, res: Response) => {
export const getAutoFillMasterOptions = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { groupCode } = req.params;
const companyCode = req.user?.companyCode || "*";
@@ -436,7 +464,10 @@ export const getAutoFillMasterOptions = async (req: Request, res: Response) => {
const optionsResult = await query(optionsSql, optionsParams);
logger.info("자동 입력 마스터 옵션 조회", { groupCode, count: optionsResult.length });
logger.info("자동 입력 마스터 옵션 조회", {
groupCode,
count: optionsResult.length,
});
res.json({
success: true,
@@ -456,7 +487,10 @@ export const getAutoFillMasterOptions = async (req: Request, res: Response) => {
* 자동 입력 데이터 조회
* 마스터 값 선택 시 자동으로 입력할 데이터 조회
*/
export const getAutoFillData = async (req: Request, res: Response) => {
export const getAutoFillData = async (
req: AuthenticatedRequest,
res: Response
) => {
try {
const { groupCode } = req.params;
const { masterValue } = req.query;
@@ -535,9 +569,10 @@ export const getAutoFillData = async (req: Request, res: Response) => {
for (const mapping of mappings) {
const sourceValue = dataResult?.[mapping.source_column];
const finalValue = sourceValue !== null && sourceValue !== undefined
? sourceValue
: mapping.default_value;
const finalValue =
sourceValue !== null && sourceValue !== undefined
? sourceValue
: mapping.default_value;
autoFillData[mapping.target_field] = finalValue;
mappingInfo.push({
@@ -549,7 +584,11 @@ export const getAutoFillData = async (req: Request, res: Response) => {
});
}
logger.info("자동 입력 데이터 조회", { groupCode, masterValue, fieldCount: mappingInfo.length });
logger.info("자동 입력 데이터 조회", {
groupCode,
masterValue,
fieldCount: mappingInfo.length,
});
res.json({
success: true,
@@ -565,4 +604,3 @@ export const getAutoFillData = async (req: Request, res: Response) => {
});
}
};