From 3081931296719b8a8a036c9fbdffdfac7bd27b1e Mon Sep 17 00:00:00 2001 From: Hyoseong Jo Date: Mon, 5 Jan 2026 02:03:22 +0900 Subject: [PATCH] =?UTF-8?q?1=E3=85=8A=E3=85=8F=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 159 +++++++++++++++++++++++- backend/api/admin/bulk-register.post.ts | 1 + 2 files changed, 159 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 27edaf8..a5c319b 100644 --- a/README.md +++ b/README.md @@ -1 +1,158 @@ -2026! \ No newline at end of file +# πŸ“‹ 주간업무보고 μ‹œμŠ€ν…œ (Weekly Report) + +SI ν”„λ‘œμ νŠΈ νŒ€μ„ μœ„ν•œ 주간업무보고 μž‘μ„± 및 μ·¨ν•© μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. + +## ✨ μ£Όμš” κΈ°λŠ₯ + +### πŸ“ 주간보고 μž‘μ„± +- ν”„λ‘œμ νŠΈλ³„ 금주 싀적 / μ°¨μ£Ό κ³„νš μž‘μ„± +- Task λ‹¨μœ„λ‘œ μž‘μ—… λ‚΄μš©, μ‹œκ°„, μ™„λ£Œ μ—¬λΆ€ 관리 +- 이슈/리슀크, νœ΄κ°€μΌμ •, 기타사항 μž…λ ₯ +- μž‘μ„± β†’ 제좜 β†’ μ·¨ν•© μ›Œν¬ν”Œλ‘œμš° + +### πŸ€– PMO AI 리뷰 +- OpenAI 기반 주간보고 μžλ™ ν”Όλ“œλ°± +- 싀적/κ³„νšμ˜ ꡬ체성 κ²€ν†  +- 일정 λͺ…ν™•μ„± 및 μ‹œκ°„ μ‚°μ • μ μ ˆμ„± 평가 +- ꡬ체적인 μž‘μ„± μ˜ˆμ‹œμ™€ κ°œμ„  κ°€μ΄λ“œ 제곡 + +### πŸ“Š μ·¨ν•© λ³΄κ³ μ„œ +- 주차별 전체 λ³΄κ³ μ„œ μ·¨ν•© +- ν”„λ‘œμ νŠΈλ³„ 싀적/κ³„νš AI μš”μ•½ (OpenAI) +- 인원별 νˆ¬μž… μ‹œκ°„ ν˜„ν™© +- 원문 보기 κΈ°λŠ₯ + +### πŸ‘₯ 직원/ν”„λ‘œμ νŠΈ 관리 +- 직원 등둝 및 관리 +- ν”„λ‘œμ νŠΈ 생성 및 μƒνƒœ 관리 +- ν”„λ‘œμ νŠΈλ³„ νˆ¬μž… 인λ ₯ ν˜„ν™© + +## πŸ›  기술 μŠ€νƒ + +| ꡬ뢄 | 기술 | +|------|------| +| Frontend | Vue 3, Nuxt 3 | +| Backend | Nitro (Nuxt Server) | +| Database | PostgreSQL | +| AI | OpenAI GPT-4o-mini | +| UI | Bootstrap 5, Bootstrap Icons | + +## πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰 + +``` +weeklyreport/ +β”œβ”€β”€ frontend/ # ν”„λ‘ νŠΈμ—”λ“œ νŽ˜μ΄μ§€ +β”‚ β”œβ”€β”€ components/ # 곡톡 μ»΄ν¬λ„ŒνŠΈ +β”‚ β”œβ”€β”€ composables/ # Vue Composables +β”‚ β”œβ”€β”€ report/ # 주간보고 κ΄€λ ¨ +β”‚ β”‚ β”œβ”€β”€ weekly/ # 개인 주간보고 +β”‚ β”‚ └── summary/ # μ·¨ν•© λ³΄κ³ μ„œ +β”‚ β”œβ”€β”€ employee/ # 직원 관리 +β”‚ β”œβ”€β”€ project/ # ν”„λ‘œμ νŠΈ 관리 +β”‚ └── admin/ # κ΄€λ¦¬μž κΈ°λŠ₯ +β”œβ”€β”€ backend/ +β”‚ β”œβ”€β”€ api/ # API μ—”λ“œν¬μΈνŠΈ +β”‚ β”‚ β”œβ”€β”€ auth/ # 인증 +β”‚ β”‚ β”œβ”€β”€ employee/ # 직원 API +β”‚ β”‚ β”œβ”€β”€ project/ # ν”„λ‘œμ νŠΈ API +β”‚ β”‚ └── report/ # λ³΄κ³ μ„œ API +β”‚ └── utils/ # μœ ν‹Έλ¦¬ν‹° (DB λ“±) +β”œβ”€β”€ nuxt.config.ts # Nuxt μ„€μ • +└── package.json +``` + +## πŸ—„ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ + +### μ£Όμš” ν…Œμ΄λΈ” + +| ν…Œμ΄λΈ”λͺ… | μ„€λͺ… | +|----------|------| +| `wr_employee_info` | 직원 정보 | +| `wr_project_info` | ν”„λ‘œμ νŠΈ 정보 | +| `wr_weekly_report` | 주간보고 λ§ˆμŠ€ν„° | +| `wr_weekly_report_task` | 주간보고 Task (싀적/κ³„νš) | +| `wr_aggregated_report_summary` | μ·¨ν•© λ³΄κ³ μ„œ | + +## πŸš€ μ„€μΉ˜ 및 μ‹€ν–‰ + +### μš”κ΅¬μ‚¬ν•­ +- Node.js 18+ +- PostgreSQL 14+ +- OpenAI API Key + +### ν™˜κ²½ λ³€μˆ˜ (.env) +```env +DATABASE_URL=postgresql://user:pass@host:port/weeklyreport +OPENAI_API_KEY=sk-xxx +``` + +### μ„€μΉ˜ +```bash +npm install +``` + +### 개발 μ„œλ²„ μ‹€ν–‰ +```bash +npm run dev +# http://localhost:3000 +``` + +### ν”„λ‘œλ•μ…˜ λΉŒλ“œ +```bash +npm run build +npm run preview +``` + +## πŸ“‘ μ£Όμš” API + +### 인증 +| Method | Endpoint | μ„€λͺ… | +|--------|----------|------| +| POST | `/api/auth/login` | 둜그인 | +| POST | `/api/auth/logout` | λ‘œκ·Έμ•„μ›ƒ | +| GET | `/api/auth/me` | ν˜„μž¬ μ‚¬μš©μž 정보 | + +### 주간보고 +| Method | Endpoint | μ„€λͺ… | +|--------|----------|------| +| GET | `/api/report/weekly/list` | 주간보고 λͺ©λ‘ | +| POST | `/api/report/weekly/save` | 주간보고 μ €μž₯ | +| GET | `/api/report/weekly/[id]/detail` | 주간보고 상세 | +| POST | `/api/report/review` | PMO AI 리뷰 μš”μ²­ | + +### μ·¨ν•© λ³΄κ³ μ„œ +| Method | Endpoint | μ„€λͺ… | +|--------|----------|------| +| GET | `/api/report/summary/weekly-list` | 주차별 μ·¨ν•© λͺ©λ‘ | +| POST | `/api/report/summary/aggregate` | μ·¨ν•© μ‹€ν–‰ | +| GET | `/api/report/summary/week/detail` | 주차별 상세 | + +### 직원/ν”„λ‘œμ νŠΈ +| Method | Endpoint | μ„€λͺ… | +|--------|----------|------| +| GET | `/api/employee/list` | 직원 λͺ©λ‘ | +| POST | `/api/employee/create` | 직원 등둝 | +| GET | `/api/project/list` | ν”„λ‘œμ νŠΈ λͺ©λ‘ | +| POST | `/api/project/create` | ν”„λ‘œμ νŠΈ 생성 | + +## πŸ“Έ ν™”λ©΄ ꡬ성 + +### 주간보고 μž‘μ„± +- ν”„λ‘œμ νŠΈ 선택 ν›„ Task μΆ”κ°€ +- 금주 싀적: μž‘μ—…λ‚΄μš©, μ‹œκ°„, μ™„λ£Œμ—¬λΆ€ +- μ°¨μ£Ό κ³„νš: κ³„νšλ‚΄μš©, μ˜ˆμƒμ‹œκ°„ +- PMO AI 리뷰 μžλ™ 생성 + +### μ·¨ν•© λ³΄κ³ μ„œ +- 주차별 ν”„λ‘œμ νŠΈ ν˜„ν™© +- AI 기반 싀적/κ³„νš μš”μ•½ +- 인원별 νˆ¬μž… μ‹œκ°„ ν…Œμ΄λΈ” +- 원문 보기 (λͺ¨λ‹¬) + +## πŸ“„ λΌμ΄μ„ μŠ€ + +Private - ν„°λ³΄μ†Œν”„νŠΈ λ‚΄λΆ€μš© + +--- + +Β© 2026 TurboSoft diff --git a/backend/api/admin/bulk-register.post.ts b/backend/api/admin/bulk-register.post.ts index e74eb13..1edf5a0 100644 --- a/backend/api/admin/bulk-register.post.ts +++ b/backend/api/admin/bulk-register.post.ts @@ -5,6 +5,7 @@ const ADMIN_EMAIL = 'coziny@gmail.com' interface TaskInput { description: string hours: number + isCompleted?: boolean } interface ProjectInput {