Files
Gnuboard7/app/Models/TemplateLayoutAttachment.php
HeuJung 52ee8c855a chore(release): 공개 소스 본문 내부 단서(· 호칭) 정리
공개 release 발행 시 파일 본문 누출 검사(check-public-release-leakage)에
걸리던 내부 단서를 정리해 발행을 차단하지 않도록 함.

- 코드/테스트 주석·문서 본문의 "" 규정 인용을 "코어 규정/규칙" 등
 중립 표현으로 치환 (코어·이커머스·board·kginicis·gdpr·pay·템플릿 전 영역)
- 내부 역할 호칭 ""/""를 문맥에 맞는 중립 표현으로 일반화
- config/app.php 의 보호경로 목록(G7_UPDATE_PROTECTED_PATHS) 내 파일명은
 기능 코드이므로 삭제 대신 검사기 화이트리스트에 등록

주석/설명 문자열/문서 본문만 변경 — 로직·데이터·동작 무변경.
검증: 누출 재검사 error 0 / warn 0, 영향 테스트 TS 140/140·PHP 113/113 통과.
2026-07-02 17:58:33 +09:00

71 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 템플릿 레이아웃 첨부 파일 모델
*
* 레이아웃 편집 중 업로드되는 파일(배경 이미지 등)을 표현한다. 파일 자체는
* 코어 StorageInterface 로 저장되고 본 모델은 저장 위치(disk/path)와 메타데이터를
* 보관한다. 템플릿 삭제 시 행은 cascadeOnDelete 로 삭제되나, 스토리지 파일
* 실삭제는 Service 가 명시적으로 수행한다(코어 규정: DB CASCADE 의존 삭제 금지).
*
* @property int $id 첨부 파일 ID
* @property int $template_id 소속 템플릿 ID
* @property string|null $layout_name 사용 출처 레이아웃 이름
* @property string $disk 스토리지 디스크 이름
* @property string $path 스토리지 내 파일 경로
* @property string $original_name 업로드 원본 파일명
* @property string $mime_type MIME 타입
* @property int $size 파일 크기(바이트)
* @property int|null $created_by 업로더 사용자 ID
*/
class TemplateLayoutAttachment extends Model
{
use HasFactory;
/**
* 대량 할당 가능한 속성
*
* @var array<int, string>
*/
protected $fillable = [
'template_id',
'layout_name',
'disk',
'path',
'original_name',
'mime_type',
'size',
'created_by',
];
/**
* 속성 캐스팅
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'template_id' => 'integer',
'size' => 'integer',
'created_by' => 'integer',
];
}
/**
* 소속 템플릿 관계
*
* @return BelongsTo<Template, TemplateLayoutAttachment>
*/
public function template(): BelongsTo
{
return $this->belongsTo(Template::class);
}
}