# 개발 착수 계획서

## 1. 현재 결정 사항

현재 MVP는 다음 기준으로 시작한다.

| 항목 | 결정 |
| --- | --- |
| 백엔드 | PHP 7.4 + Laravel 8 |
| 프론트엔드 | 모바일 웹 |
| DB | MariaDB 또는 MySQL |
| 음성 입력 | 모바일 브라우저 직접 녹음 |
| 음성 저장 | Laravel Storage |
| AI 처리 | 서버 사이드 API 호출 |
| 리포트 생성 | Laravel Scheduler |
| 비동기 처리 | MVP 이후 Queue 확장 |

## 2. 로컬 환경 확인 결과

현재 터미널 PATH에서는 `php`와 `composer`가 바로 잡히지 않는다.

다만 Laragon에는 PHP와 Composer가 설치되어 있다.

### PHP

```text
C:\laragon\bin\php\php-7.4.33-nts-Win32-vc15-x64\php.exe
```

확인 결과:

```text
PHP 7.4.33
```

### Composer

```text
C:\laragon\bin\composer\composer.phar
```

확인 결과:

```text
Composer 2.4.1
```

### PHP 확장

Laravel 8과 MVP에 필요한 주요 확장이 확인되었다.

- `curl`
- `fileinfo`
- `json`
- `mbstring`
- `openssl`
- `PDO`
- `pdo_mysql`
- `tokenizer`
- `xml`
- `zip`

## 3. 개발 착수 전 처리할 것

### 1. PHP PATH 정리

현재 세션에서는 아래 명령처럼 전체 경로를 사용해야 한다.

```powershell
C:\laragon\bin\php\php-7.4.33-nts-Win32-vc15-x64\php.exe -v
```

개발 편의를 위해 다음 중 하나를 선택한다.

- 임시 PATH: 현재 터미널 세션에만 PHP 경로 추가
- 사용자 PATH: Windows 사용자 환경변수에 PHP 경로 추가
- Laragon 터미널 사용: Laragon에서 제공하는 터미널로 개발

### 2. Laravel 프로젝트 위치 결정

현재 `D:\Server\aa_work`에는 `docs` 문서가 있다.

Laravel 프로젝트는 다음 중 하나로 만들 수 있다.

| 방식 | 설명 |
| --- | --- |
| 루트 생성 | `D:\Server\aa_work` 자체를 Laravel 프로젝트 루트로 사용 |
| 하위 폴더 생성 | `D:\Server\aa_work\app` 또는 `D:\Server\aa_work\system`에 Laravel 생성 |

문서와 코드를 한 프로젝트로 관리하려면 루트 생성을 권장한다.

다만 `composer create-project`는 빈 폴더를 선호하므로, 루트 생성 시에는 Laravel 골격을 별도 임시 폴더에 만든 뒤 병합하는 방식이 안전하다.

## 4. 추천 생성 방식

현재 문서가 이미 있으므로 아래 방식을 권장한다.

```text
1. D:\Server\aa_work\_laravel_tmp 에 Laravel 8 생성
2. Laravel 파일을 D:\Server\aa_work 루트로 병합
3. docs 폴더는 유지
4. _laravel_tmp 제거
```

이 방식은 문서를 유지하면서 Laravel 루트 구조를 만들 수 있다.

## 5. 1차 구현 범위

첫 번째 개발 묶음은 AI 연동까지 가지 않고, Laravel 기반과 DB 구조를 먼저 만든다.

### 작업

- Laravel 8 프로젝트 생성
- `.env` 기본 설정
- DB 연결 설정
- 마이그레이션 작성
- 모델 작성
- 기본 라우트 확인
- 모바일 입력 화면 초안 생성

### 생성할 마이그레이션

- `users`
- `user_aliases`
- `raw_inputs`
- `tasks`
- `task_updates`
- `ai_analysis_logs`
- `daily_reports`
- `ai_usage_logs`

### 생성할 모델

- `User`
- `UserAlias`
- `RawInput`
- `Task`
- `TaskUpdate`
- `AiAnalysisLog`
- `DailyReport`
- `AiUsageLog`

## 6. 2차 구현 범위

### 텍스트 입력

- 텍스트 업무 입력 화면
- `raw_inputs` 저장
- 수동 업무 등록 처리
- 업무 목록 조회
- 업무 상세 조회

### 모바일 직접 녹음

- 브라우저 마이크 권한 요청
- 녹음 시작/중지
- 녹음 파일 업로드
- 서버 파일 검증
- `storage/app/audio` 저장

## 7. 3차 구현 범위

### AI 처리

- 기존 업무 후보 조회
- AI 요청 payload 생성
- AI JSON 응답 검증
- 신규 업무 자동 등록
- 기존 업무 업데이트
- 확인 필요 처리
- AI 사용량 로그 저장

## 8. 4차 구현 범위

### 리포트

- 전체 일일 리포트 생성
- 담당자별 일일 리포트 생성
- Laravel Scheduler 설정
- 날짜별 리포트 조회 화면

## 9. 개발 시작 명령 초안

현재 PATH 문제를 우회하려면 다음 방식으로 실행한다.

```powershell
C:\laragon\bin\php\php-7.4.33-nts-Win32-vc15-x64\php.exe C:\laragon\bin\composer\composer.phar create-project laravel/laravel:^8.0 _laravel_tmp
```

Laravel 생성 후에는 `.env`, DB 설정, 마이그레이션을 진행한다.

## 10. 다음 실행 순서

1. Laravel 8 프로젝트 생성
2. 문서 폴더 유지하며 루트 구조 병합
3. `.env` 설정
4. DB 이름 결정
5. 마이그레이션 작성
6. 모델 작성
7. 기본 화면 실행 확인

## 11. 주의사항

- Composer 설치 과정은 인터넷 연결이 필요하다.
- Laravel 8은 PHP 7.4에서 가능하지만 최신 Laravel은 사용할 수 없다.
- 운영 서버도 PHP 7.4 이상이어야 한다.
- 음성 녹음은 HTTPS 환경에서 정상 동작하는 브라우저가 많으므로 운영 환경에서는 HTTPS가 필요하다.
- 로컬 테스트에서는 `localhost` 또는 Laragon 로컬 도메인을 사용한다.
