/**
 * daily_work_reports 테이블에 TBM 연동 필드 추가
 * - TBM 세션 및 팀 배정과 연결
 * - 작업 시간 및 오류 시간 추적
 */

exports.up = async function(knex) {
  await knex.schema.table('daily_work_reports', (table) => {
    // TBM 연동 필드
    table.integer('tbm_session_id').unsigned().nullable()
      .comment('연결된 TBM 세션 ID');
    table.integer('tbm_assignment_id').unsigned().nullable()
      .comment('연결된 TBM 팀 배정 ID');

    // 작업 시간 추적
    table.time('start_time').nullable()
      .comment('작업 시작 시간');
    table.time('end_time').nullable()
      .comment('작업 종료 시간');
    table.decimal('total_hours', 5, 2).nullable()
      .comment('총 작업 시간');
    table.decimal('regular_hours', 5, 2).nullable()
      .comment('정규 작업 시간 (총 시간 - 오류 시간)');
    table.decimal('error_hours', 5, 2).nullable()
      .comment('부적합 사항 처리 시간');

    // 외래 키 제약조건
    table.foreign('tbm_session_id')
      .references('session_id')
      .inTable('tbm_sessions')
      .onDelete('SET NULL');

    table.foreign('tbm_assignment_id')
      .references('assignment_id')
      .inTable('tbm_team_assignments')
      .onDelete('SET NULL');
  });
};

exports.down = async function(knex) {
  await knex.schema.table('daily_work_reports', (table) => {
    // 외래 키 제약조건 삭제
    table.dropForeign('tbm_session_id');
    table.dropForeign('tbm_assignment_id');

    // 컬럼 삭제
    table.dropColumn('tbm_session_id');
    table.dropColumn('tbm_assignment_id');
    table.dropColumn('start_time');
    table.dropColumn('end_time');
    table.dropColumn('total_hours');
    table.dropColumn('regular_hours');
    table.dropColumn('error_hours');
  });
};
