테이블 변경 이력 로그에 ip_address와 변경자 컬럼 기록 추가

This commit is contained in:
dohyeons 2025-10-21 15:25:05 +09:00
parent 7fe246bd93
commit 656f1c2ebd
2 changed files with 25 additions and 4 deletions

View File

@ -36,10 +36,18 @@ export const saveFormData = async (
formDataWithMeta.company_code = companyCode; formDataWithMeta.company_code = companyCode;
} }
// 클라이언트 IP 주소 추출
const ipAddress =
req.ip ||
(req.headers["x-forwarded-for"] as string) ||
req.socket.remoteAddress ||
"unknown";
const result = await dynamicFormService.saveFormData( const result = await dynamicFormService.saveFormData(
screenId, screenId,
tableName, tableName,
formDataWithMeta formDataWithMeta,
ipAddress
); );
res.json({ res.json({

View File

@ -1,4 +1,4 @@
import { query, queryOne } from "../database/db"; import { query, queryOne, transaction } from "../database/db";
import { EventTriggerService } from "./eventTriggerService"; import { EventTriggerService } from "./eventTriggerService";
import { DataflowControlService } from "./dataflowControlService"; import { DataflowControlService } from "./dataflowControlService";
@ -203,7 +203,8 @@ export class DynamicFormService {
async saveFormData( async saveFormData(
screenId: number, screenId: number,
tableName: string, tableName: string,
data: Record<string, any> data: Record<string, any>,
ipAddress?: string
): Promise<FormDataResult> { ): Promise<FormDataResult> {
try { try {
console.log("💾 서비스: 실제 테이블에 폼 데이터 저장 시작:", { console.log("💾 서비스: 실제 테이블에 폼 데이터 저장 시작:", {
@ -432,7 +433,19 @@ export class DynamicFormService {
console.log("📝 실행할 UPSERT SQL:", upsertQuery); console.log("📝 실행할 UPSERT SQL:", upsertQuery);
console.log("📊 SQL 파라미터:", values); console.log("📊 SQL 파라미터:", values);
const result = await query<any>(upsertQuery, values); // 로그 트리거를 위한 세션 변수 설정 및 UPSERT 실행 (트랜잭션 내에서)
const userId = data.updated_by || data.created_by || "system";
const clientIp = ipAddress || "unknown";
const result = await transaction(async (client) => {
// 세션 변수 설정
await client.query(`SET LOCAL app.user_id = '${userId}'`);
await client.query(`SET LOCAL app.ip_address = '${clientIp}'`);
// UPSERT 실행
const res = await client.query(upsertQuery, values);
return res.rows;
});
console.log("✅ 서비스: 실제 테이블 저장 성공:", result); console.log("✅ 서비스: 실제 테이블 저장 성공:", result);