fix: daily_work_reports 테이블명 충돌 → partner_work_reports로 변경

기존 TBM 시스템의 daily_work_reports 테이블과 이름 충돌.
협력업체 업무현황 테이블을 partner_work_reports로 분리.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-13 07:25:07 +09:00
parent efc3c14db5
commit 5945176ad4
4 changed files with 33 additions and 12 deletions

View File

@@ -6,6 +6,27 @@
ALTER TABLE partner_work_checkins
MODIFY check_in_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
-- 4-b. 일정당 하루 1건 업무보고 보장
ALTER TABLE daily_work_reports
ADD UNIQUE INDEX uq_schedule_report_date (schedule_id, report_date);
-- 4-b. partner_work_reports 테이블 생성 (daily_work_reports 이름 충돌 → 별도 이름)
CREATE TABLE IF NOT EXISTS partner_work_reports (
id INT AUTO_INCREMENT PRIMARY KEY,
schedule_id INT NOT NULL,
checkin_id INT NOT NULL,
company_id INT NOT NULL,
report_date DATE NOT NULL,
reporter_id INT NOT NULL,
actual_workers INT,
work_content TEXT,
progress_rate TINYINT,
issues TEXT,
next_plan TEXT,
confirmed_by INT,
confirmed_at DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_pwr_report_date (report_date),
INDEX idx_pwr_schedule (schedule_id),
UNIQUE INDEX uq_pwr_schedule_report_date (schedule_id, report_date),
CONSTRAINT fk_pwr_schedule FOREIGN KEY (schedule_id) REFERENCES partner_schedules(id),
CONSTRAINT fk_pwr_checkin FOREIGN KEY (checkin_id) REFERENCES partner_work_checkins(id),
CONSTRAINT fk_pwr_company FOREIGN KEY (company_id) REFERENCES partner_companies(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@@ -98,9 +98,9 @@ CREATE TABLE IF NOT EXISTS partner_work_checkins (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ============================================================
-- 5. daily_work_reports (일일 작업 보고)
-- 5. partner_work_reports (협력업체 일일 작업 보고)
-- ============================================================
CREATE TABLE IF NOT EXISTS daily_work_reports (
CREATE TABLE IF NOT EXISTS partner_work_reports (
id INT AUTO_INCREMENT PRIMARY KEY,
schedule_id INT NOT NULL,
checkin_id INT NOT NULL,

View File

@@ -30,7 +30,7 @@ async function findTodayByCompany(companyId) {
(dwr.id IS NOT NULL) AS has_work_report
FROM partner_work_checkins pc
LEFT JOIN partner_schedules ps ON pc.schedule_id = ps.id
LEFT JOIN daily_work_reports dwr ON dwr.checkin_id = pc.id
LEFT JOIN partner_work_reports dwr ON dwr.checkin_id = pc.id
WHERE pc.company_id = ? AND DATE(pc.check_in_time) = CURDATE()
ORDER BY pc.check_in_time DESC`, [companyId]);
return rows;

View File

@@ -4,7 +4,7 @@ async function findAll({ company_id, date_from, date_to, schedule_id, confirmed,
const db = getPool();
let sql = `SELECT wr.*, pc.company_name, ps.work_description AS schedule_description,
su_reporter.name AS reporter_name, su_confirmer.name AS confirmed_by_name
FROM daily_work_reports wr
FROM partner_work_reports wr
LEFT JOIN partner_companies pc ON wr.company_id = pc.id
LEFT JOIN partner_schedules ps ON wr.schedule_id = ps.id
LEFT JOIN sso_users su_reporter ON wr.reporter_id = su_reporter.user_id
@@ -30,7 +30,7 @@ async function findById(id) {
const [rows] = await db.query(
`SELECT wr.*, pc.company_name, ps.work_description AS schedule_description,
su_reporter.name AS reporter_name, su_confirmer.name AS confirmed_by_name
FROM daily_work_reports wr
FROM partner_work_reports wr
LEFT JOIN partner_companies pc ON wr.company_id = pc.id
LEFT JOIN partner_schedules ps ON wr.schedule_id = ps.id
LEFT JOIN sso_users su_reporter ON wr.reporter_id = su_reporter.user_id
@@ -43,7 +43,7 @@ async function findByCheckin(checkinId) {
const db = getPool();
const [rows] = await db.query(
`SELECT wr.*, pc.company_name
FROM daily_work_reports wr
FROM partner_work_reports wr
LEFT JOIN partner_companies pc ON wr.company_id = pc.id
WHERE wr.checkin_id = ?`, [checkinId]);
return rows[0] || null;
@@ -52,7 +52,7 @@ async function findByCheckin(checkinId) {
async function create(data) {
const db = getPool();
const [result] = await db.query(
`INSERT INTO daily_work_reports (schedule_id, checkin_id, company_id, report_date, reporter_id, actual_workers, work_content, progress_rate, issues, next_plan)
`INSERT INTO partner_work_reports (schedule_id, checkin_id, company_id, report_date, reporter_id, actual_workers, work_content, progress_rate, issues, next_plan)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[data.schedule_id || null, data.checkin_id || null, data.company_id,
data.report_date, data.reporter_id, data.actual_workers || null,
@@ -72,14 +72,14 @@ async function update(id, data) {
if (data.next_plan !== undefined) { fields.push('next_plan = ?'); values.push(data.next_plan || null); }
if (fields.length === 0) return findById(id);
values.push(id);
await db.query(`UPDATE daily_work_reports SET ${fields.join(', ')} WHERE id = ?`, values);
await db.query(`UPDATE partner_work_reports SET ${fields.join(', ')} WHERE id = ?`, values);
return findById(id);
}
async function confirm(id, confirmedBy) {
const db = getPool();
await db.query(
'UPDATE daily_work_reports SET confirmed_by = ?, confirmed_at = NOW() WHERE id = ? AND confirmed_by IS NULL',
'UPDATE partner_work_reports SET confirmed_by = ?, confirmed_at = NOW() WHERE id = ? AND confirmed_by IS NULL',
[confirmedBy, id]);
return findById(id);
}