[agent-pipeline] pipe-20260305181927-h4x5 round-1

This commit is contained in:
DDD1542
2026-03-06 03:21:42 +09:00
parent a782f2cd07
commit 0788962273
3 changed files with 132 additions and 18 deletions

View File

@@ -77,9 +77,12 @@ export class ApprovalDefinitionController {
}
const { id } = req.params;
// SUPER_ADMIN은 company_code 필터 없이 조회 가능
const row = await queryOne<any>(
"SELECT * FROM approval_definitions WHERE definition_id = $1 AND company_code = $2",
[id, companyCode]
companyCode === "*"
? "SELECT * FROM approval_definitions WHERE definition_id = $1"
: "SELECT * FROM approval_definitions WHERE definition_id = $1 AND company_code = $2",
companyCode === "*" ? [id] : [id, companyCode]
);
if (!row) {
@@ -307,12 +310,18 @@ export class ApprovalTemplateController {
}
const { id } = req.params;
// SUPER_ADMIN은 company_code 필터 없이 조회 가능
const template = await queryOne<any>(
`SELECT t.*, d.definition_name
FROM approval_line_templates t
LEFT JOIN approval_definitions d ON t.definition_id = d.definition_id AND t.company_code = d.company_code
WHERE t.template_id = $1 AND t.company_code = $2`,
[id, companyCode]
companyCode === "*"
? `SELECT t.*, d.definition_name
FROM approval_line_templates t
LEFT JOIN approval_definitions d ON t.definition_id = d.definition_id AND t.company_code = d.company_code
WHERE t.template_id = $1`
: `SELECT t.*, d.definition_name
FROM approval_line_templates t
LEFT JOIN approval_definitions d ON t.definition_id = d.definition_id AND t.company_code = d.company_code
WHERE t.template_id = $1 AND t.company_code = $2`,
companyCode === "*" ? [id] : [id, companyCode]
);
if (!template) {
@@ -320,8 +329,10 @@ export class ApprovalTemplateController {
}
const steps = await query<any>(
"SELECT * FROM approval_line_template_steps WHERE template_id = $1 AND company_code = $2 ORDER BY step_order ASC",
[id, companyCode]
companyCode === "*"
? "SELECT * FROM approval_line_template_steps WHERE template_id = $1 ORDER BY step_order ASC"
: "SELECT * FROM approval_line_template_steps WHERE template_id = $1 AND company_code = $2 ORDER BY step_order ASC",
companyCode === "*" ? [id] : [id, companyCode]
);
return res.json({ success: true, data: { ...template, steps } });
@@ -640,14 +651,15 @@ export class ApprovalRequestController {
const offset = (parseInt(page as string) - 1) * parseInt(limit as string);
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
// 카운트 쿼리는 LIMIT/OFFSET 파라미터 없이 실행
// countParams는 WHERE 조건 파라미터만 포함 (LIMIT/OFFSET 제외)
// my_approvals 파라미터도 포함된 후 복사해야 함
const countParams = [...params];
const [countRow] = await query<any>(
`SELECT COUNT(*) as total FROM approval_requests r ${whereClause}`,
countParams
);
// LIMIT/OFFSET 파라미터 인덱스를 미리 계산
// LIMIT/OFFSET 파라미터 인덱스를 미리 계산 (countParams 복사 후에 idx 증가)
const limitIdx = idx++;
const offsetIdx = idx++;
params.push(parseInt(limit as string), offset);
@@ -688,12 +700,18 @@ export class ApprovalRequestController {
}
const { id } = req.params;
// SUPER_ADMIN은 company_code 필터 없이 모든 요청 조회 가능
const request = await queryOne<any>(
`SELECT r.*, d.definition_name
FROM approval_requests r
LEFT JOIN approval_definitions d ON r.definition_id = d.definition_id AND r.company_code = d.company_code
WHERE r.request_id = $1 AND r.company_code = $2`,
[id, companyCode]
companyCode === "*"
? `SELECT r.*, d.definition_name
FROM approval_requests r
LEFT JOIN approval_definitions d ON r.definition_id = d.definition_id AND r.company_code = d.company_code
WHERE r.request_id = $1`
: `SELECT r.*, d.definition_name
FROM approval_requests r
LEFT JOIN approval_definitions d ON r.definition_id = d.definition_id AND r.company_code = d.company_code
WHERE r.request_id = $1 AND r.company_code = $2`,
companyCode === "*" ? [id] : [id, companyCode]
);
if (!request) {
@@ -701,8 +719,10 @@ export class ApprovalRequestController {
}
const lines = await query<any>(
"SELECT * FROM approval_lines WHERE request_id = $1 AND company_code = $2 ORDER BY step_order ASC",
[id, companyCode]
companyCode === "*"
? "SELECT * FROM approval_lines WHERE request_id = $1 ORDER BY step_order ASC"
: "SELECT * FROM approval_lines WHERE request_id = $1 AND company_code = $2 ORDER BY step_order ASC",
companyCode === "*" ? [id] : [id, companyCode]
);
return res.json({ success: true, data: { ...request, lines } });