From b295f60d1b9151a191344a1acec582f4ce730541 Mon Sep 17 00:00:00 2001 From: kent Date: Sun, 28 Dec 2025 02:49:46 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CURRENT=5FWORKS.md=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20-=20=EC=8B=9C=EC=8A=A4=ED=85=9C=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20tenant=5Fid=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=EC=9E=91=EC=97=85=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- CURRENT_WORKS.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/CURRENT_WORKS.md b/CURRENT_WORKS.md index b1c3df4..7f63b02 100644 --- a/CURRENT_WORKS.md +++ b/CURRENT_WORKS.md @@ -1,5 +1,99 @@ # SAM API μž‘μ—… ν˜„ν™© +## 2025-12-28 (ν† ) - μ‹œμŠ€ν…œ κ²Œμ‹œνŒ tenant_id 및 custom_fields μˆ˜μ • + +### μž‘μ—… λͺ©ν‘œ +- POST `/api/v1/system-boards/qna/posts` 500 μ—λŸ¬ ν•΄κ²° +- μ‹œμŠ€ν…œ κ²Œμ‹œνŒ tenant_id 처리 둜직 κ°œμ„  +- custom_fields field_key β†’ field_id λ§€ν•‘ 지원 +- λŒ“κΈ€ 생성 μ‹œ tenant_id λˆ„λ½ μˆ˜μ • + +### 문제 원인 +1. `posts.tenant_id` NOT NULL μ œμ•½μ‘°κ±΄ μœ„λ°˜ (μ‹œμŠ€ν…œ κ²Œμ‹œνŒμ—μ„œ null μ„€μ • μ‹œλ„) +2. `saveCustomFields()`μ—μ„œ field_key(string)λ₯Ό field_id(integer)둜 μ‚¬μš© +3. `createComment()`μ—μ„œ tenant_id λ―Έμ„€μ • + +### μˆ˜μ •λœ 파일 (1개) + +| 파일λͺ… | λ³€κ²½ λ‚΄μš© | +|--------|----------| +| `app/Services/Boards/PostService.php` | tenant_id 항상 μ„€μ •, custom_fields λ§€ν•‘ κ°œμ„ , λŒ“κΈ€ tenant_id μΆ”κ°€ | + +### 상세 변경사항 + +#### 1. HQ_TENANT_ID μƒμˆ˜ μΆ”κ°€ +```php +private const HQ_TENANT_ID = 1; // 본사 ν…Œλ„ŒνŠΈ ID +``` + +#### 2. applySystemBoardScope() 헬퍼 λ©”μ„œλ“œ μΆ”κ°€ +```php +private function applySystemBoardScope($query): void +{ + $query->where(function ($q) { + $q->where('tenant_id', self::HQ_TENANT_ID) + ->orWhere('tenant_id', $this->tenantId()); + }); +} +``` + +#### 3. createPost() μˆ˜μ • +- λ³€κ²½ μ „: `$data['tenant_id'] = $isSystemBoard ? null : $this->tenantId();` +- λ³€κ²½ ν›„: `$data['tenant_id'] = $this->tenantId();` (항상 μ„€μ •) + +#### 4. saveCustomFields() κ°œμ„  +- boardId νŒŒλΌλ―Έν„° μΆ”κ°€ +- field_key β†’ field_id λ§€ν•‘ 둜직 μΆ”κ°€ (BoardSetting 쑰회) +- λͺ¨λ“  ν˜ΈμΆœλΆ€ μ—…λ°μ΄νŠΈ (createPost, updatePost λ“±) + +#### 5. createComment() μˆ˜μ • +- `$data['tenant_id'] = $this->tenantId();` μΆ”κ°€ + +### μ‹œμŠ€ν…œ κ²Œμ‹œνŒ 쑰회 쑰건 +``` +(tenant_id = 1) OR (tenant_id = ν˜„μž¬ ν…Œλ„ŒνŠΈ) +``` +- 본사(tenant_id=1)의 κΈ€: λͺ¨λ“  ν…Œλ„ŒνŠΈμ—μ„œ 쑰회 κ°€λŠ₯ +- 각 ν…Œλ„ŒνŠΈ κΈ€: ν•΄λ‹Ή ν…Œλ„ŒνŠΈλ§Œ 쑰회 κ°€λŠ₯ + +### ν…ŒμŠ€νŠΈ κ²°κ³Ό +- βœ… κ²Œμ‹œκΈ€ 생성 (id=7, id=8 with custom_fields) +- βœ… custom_fields μ €μž₯ (inquiry_type β†’ field_id=2 λ³€ν™˜) +- βœ… λŒ“κΈ€ 생성 (id=1, tenant_id=1) + +### Git 컀밋 +``` +4a2c185 fix: κ²Œμ‹œνŒ μ‹œμŠ€ν…œ tenant_id 및 custom_fields 처리 κ°œμ„  +``` + +--- + +## 2025-12-27 (금) - 결재 API ν”„λ‘ νŠΈμ—”λ“œ ν˜Έν™˜μ„± κ°œμ„  + +### μž‘μ—… λͺ©ν‘œ +- ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ `form_code`, `step_type`, `approver_id` ν•„λ“œλͺ… μ‚¬μš© 지원 +- κΈ°μ‘΄ `form_id`, `type`, `user_id` ν•„λ“œλͺ…κ³Ό ν˜Έν™˜μ„± μœ μ§€ + +### μˆ˜μ •λœ 파일 (4개) + +| 파일λͺ… | λ³€κ²½ λ‚΄μš© | +|--------|----------| +| `app/Http/Requests/Approval/StoreRequest.php` | form_code, step_type, approver_id ν•„λ“œ μΆ”κ°€ | +| `app/Http/Requests/Approval/UpdateRequest.php` | form_code, steps ν•„λ“œ 지원 μΆ”κ°€ | +| `app/Services/ApprovalService.php` | store()/update() - form_codeβ†’form_id λ³€ν™˜, createApprovalSteps() - step_type/approver_id 지원 | +| `lang/ko/error.php` | `approval.form_required` μ—λŸ¬ λ©”μ‹œμ§€ μΆ”κ°€ | + +### ν•„λ“œ ν˜Έν™˜μ„± λ§€ν•‘ + +| ν”„λ‘ νŠΈμ—”λ“œ | API (이전) | μ„€λͺ… | +|-----------|-----------|------| +| `form_code` | `form_id` | 양식 μ½”λ“œλ‘œ form_id μžλ™ 쑰회 | +| `step_type` | `type` | 결재/μ°Έμ‘° ꡬ뢄 | +| `approver_id` | `user_id` | 결재자 μ‚¬μš©μž ID | +| `step_order` | - | 결재 μˆœμ„œ (μžλ™ 증가) | + +--- + ## 2025-12-26 (λͺ©) - νœ΄κ°€κ΄€λ¦¬ 휴직 직원 ν‘œμ‹œ μˆ˜μ • ### μž‘μ—… λͺ©ν‘œ