# 리포트 생성 규칙

## 1. 기준

리포트 기준 시간대는 `Asia/Seoul`로 고정한다.

일일 리포트 기준일은 해당 날짜의 `00:00:00`부터 `23:59:59`까지다.

MVP의 기본 생성 시간은 매일 `18:00`로 둔다.

## 2. 리포트 저장 원칙

생성된 리포트는 `daily_reports`에 저장한다.

같은 날짜, 같은 유형의 리포트를 다시 생성하는 경우 새 row를 저장하고 `status`를 `regenerated`로 기록한다.

최신 리포트를 조회할 때는 `generated_at`이 가장 최근인 리포트를 사용한다.

## 3. 전체 리포트 데이터 기준

### 오늘 신규 등록 업무

조건:

- `tasks.created_at`이 기준일 범위 안에 있다.

정렬:

1. 우선순위 높은 순
2. 마감일 빠른 순
3. 생성일 빠른 순

### 오늘 업데이트된 업무

조건:

- `task_updates.created_at`이 기준일 범위 안에 있다.

정렬:

1. 업데이트 시간 빠른 순
2. 우선순위 높은 순

### 오늘 완료된 업무

조건:

- `tasks.completed_at`이 기준일 범위 안에 있다.

정렬:

1. 완료 시간 빠른 순

### 지연 또는 위험 업무

조건 중 하나에 해당하면 포함한다.

- 마감일이 기준일보다 이전이고 상태가 완료가 아니다.
- 마감일이 기준일 또는 다음 날이고 상태가 완료가 아니다.
- 확인 필요 상태다.

정렬:

1. 지연 업무
2. 확인 필요 업무
3. 마감 임박 업무

### 담당자별 현황

담당자별로 다음 수치를 집계한다.

- 신규
- 진행중
- 대기
- 확인필요
- 완료
- 지연

## 4. 개인 리포트 데이터 기준

### 오늘 처리한 업무

조건:

- 해당 담당자의 업무다.
- 기준일에 업데이트 또는 완료된 업무다.

### 현재 진행중인 업무

조건:

- 해당 담당자의 업무다.
- 상태가 `new`, `in_progress`, `waiting` 중 하나다.

### 마감 임박 업무

조건:

- 해당 담당자의 업무다.
- 마감일이 기준일 또는 다음 날이다.
- 상태가 완료가 아니다.

### 확인 필요한 업무

조건:

- 해당 담당자의 업무다.
- `is_review_required`가 1이거나 상태가 `review_required`다.

### 내일 우선 처리할 업무

조건:

- 해당 담당자의 업무다.
- 완료 상태가 아니다.
- 마감일이 빠르거나 우선순위가 높다.

## 5. 문장 생성 규칙

리포트 문장은 다음 형식을 기본으로 한다.

```text
- [담당자] 업무명: 상태, 마감일 YYYY-MM-DD, 요약
```

담당자별 리포트에서는 담당자명을 생략할 수 있다.

```text
- 업무명: 상태, 마감일 YYYY-MM-DD, 요약
```

마감일이 없으면 `마감일 미정`으로 표시한다.

확인 필요 사유가 있으면 문장 끝에 붙인다.

```text
- 견적서 수정본 확인: 확인필요, 마감일 2026-07-02, 담당자 매칭 필요
```

## 6. 빈 항목 처리

섹션에 데이터가 없으면 반드시 아래처럼 표시한다.

```text
- 없음
```

## 7. 실패 처리

리포트 생성 중 오류가 발생하면 `daily_reports.status`를 `failed`로 저장한다.

가능하면 오류 메시지는 별도 로그에 저장한다.

리포트 실패는 업무 데이터에는 영향을 주지 않는다.
