테이블 변경 이력 로그에 ip_address와 변경자 컬럼 기록 추가
This commit is contained in:
parent
7fe246bd93
commit
656f1c2ebd
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue