# PC CARE v5

컴퓨터 점검·예방정비·수리·업그레이드 업무에 바로 사용할 수 있도록 만든 PHP + MySQL 웹사이트입니다.

## v5 핵심 변경사항

- 고객 작업조회는 항상 **전화번호 + 조회 비밀번호**를 입력해야 시작됩니다.
- 전화번호를 고객 조회용 세션에 저장하지 않습니다.
- 인증이 끝난 한 화면에서 같은 전화번호의 전체 점검이력이 표시됩니다.
- 각 점검이력을 클릭하면 해당 상세 정비 리포트가 바로 펼쳐집니다.
- 새로고침하거나 다시 접속하면 전화번호와 비밀번호를 다시 입력해야 합니다.
- 점검 신청 때 고객이 조회 비밀번호를 직접 정합니다.
- 같은 전화번호로 재접수할 때는 기존 조회 비밀번호가 일치해야 접수됩니다.
- 고객이 현재 비밀번호를 알고 있으면 `/public/change_password.php`에서 직접 변경할 수 있습니다.
- 비밀번호를 잊은 경우 관리자가 고객 상세 화면에서 새 조회 비밀번호를 설정할 수 있습니다.
- 조회 비밀번호는 `password_hash()`로 해시하여 저장하며 평문으로 저장하지 않습니다.
- 작업이력은 사진을 여러 장 동시에 업로드할 수 있습니다.
- 교체 부품에는 사진 기능이 없습니다.
- 고객 리포트 총액은 **부품비 + 공임**으로 계산됩니다.
- 관리자 대시보드에 오늘 접수 / 현재 작업중 / 전체 완료 / 이번 달 매출을 표시합니다.

## 새로 설치하는 경우

1. `config.example.php`를 참고해 `config.php`의 DB 계정을 설정합니다.
2. MySQL/MariaDB에서 `db.sql`을 실행합니다.
3. 프로젝트를 PHP 웹 루트에 업로드합니다.
4. `uploads/` 디렉터리를 웹서버가 쓸 수 있게 권한을 설정합니다.
5. 브라우저에서 `/setup_admin.php`를 열어 관리자 계정을 만듭니다.
6. 관리자 생성 후 보안을 위해 `setup_admin.php`를 삭제합니다.
7. 관리자 로그인: `/admin/login.php`
8. 고객 홈: `/public/index.php`

## v4에서 v5로 업그레이드

1. 반드시 DB와 기존 파일을 먼저 백업합니다.
2. 기존 `config.php`와 `uploads/` 폴더는 보존합니다.
3. v5 파일로 교체합니다.
4. `upgrade_v4_to_v5.sql`을 **한 번만** 실행합니다.
5. 기존 v4 고객은 전화번호별 조회 비밀번호가 없으므로 자동으로 비밀번호를 만들 수 없습니다.
6. 기존 고객이 있다면 관리자 접수 상세 화면의 **고객 작업조회 비밀번호**에서 새 비밀번호를 설정해 주세요.

## 고객 사용 흐름

1. `PC 무료 점검 신청`에서 고객명, 전화번호, 조회 비밀번호 등을 입력합니다.
2. 접수 완료 후 `내 PC 작업조회`로 이동합니다.
3. 작업조회 화면에서 반드시 전화번호와 조회 비밀번호를 입력합니다.
4. 인증되면 같은 전화번호로 접수된 전체 이력이 최신순으로 표시됩니다.
5. 원하는 이력을 클릭하면 진단, 권장사항, 작업 사진, 교체 부품, 비용이 펼쳐집니다.
6. 다른 고객 번호를 조회하려면 `다른 전화번호 조회`를 누르고 다시 인증합니다.

## 비용 구조

- 기본 PC 점검: 무료
- 방문 점검: 출장비 10,000원 안내
- 부품: 관리자에게 구입가격과 고객 부품비를 모두 표시
- 고객 리포트: 고객 부품비만 표시
- 총액: 고객 부품비 합계 + 공임

## 권장 환경

- Ubuntu 22.04 / 24.04
- Nginx 또는 Apache
- PHP 8.2 이상
- PHP PDO MySQL, fileinfo 확장
- MySQL 8.0 또는 MariaDB 10.6 이상
- HTTPS 사용 권장

## 운영 전 확인

- `config.php`의 DB 계정 및 사이트 전화번호 변경
- `uploads/` 쓰기 권한 확인
- PHP `upload_max_filesize`, `post_max_size` 확인
- HTTPS 적용
- 개인정보 처리방침 및 이용 안내 추가
- DB와 `uploads/` 정기 백업
- 관리자 비밀번호를 충분히 길고 복잡하게 설정

전화번호+비밀번호 방식은 문자 인증보다 구현과 운영이 단순하지만, 로그인 시도 제한은 웹서버(Nginx/Apache)나 보안 솔루션에서 추가하는 것을 권장합니다.
