255 Commits

Author SHA1 Message Date
24c97cf75a fix(API): 공통코드 조회 테넌트 분리 - 글로벌 폴백 적용
- 테넌트 데이터 존재 시 테넌트만 조회, 없으면 글로벌 폴백
- 기존: tenant OR NULL → 글로벌+테넌트 중복 반환 문제 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:13:39 +09:00
49d163ae0c feat: 인앱 업데이트 체크 API 구현
- app_versions 테이블 마이그레이션 (시스템 레벨, tenant_id 없음)
- AppVersion 모델 (SoftDeletes)
- AppVersionService: getLatestVersion, downloadApk
- AppVersionController: GET /api/v1/app/version, GET /api/v1/app/download/{id}
- ApiKeyMiddleware 화이트리스트에 api/v1/app/* 추가
- app_releases 스토리지 디스크 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:53:09 +09:00
4d8dac1091 feat: sam_stat P2 도메인 + 통계 API + 대시보드 전환 (Phase 4)
- 4.1: stat_project_monthly + ProjectStatService (건설/프로젝트 월간)
- 4.2: stat_system_daily + SystemStatService (API/감사/FCM/파일/결재)
- 4.3: stat_events, stat_snapshots + StatEventService + StatEventObserver
- 4.4: StatController (summary/daily/monthly/alerts) + StatQueryService + FormRequest 3개 + routes/stats.php
- 4.5: DashboardService sam_stat 우선 조회 + 원본 DB 폴백 패턴

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:56:53 +09:00
e1aa1d1577 fix: TenantSettingController namespace 대소문자 수정 (v1 → V1)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:38:09 +09:00
45a15fe64f fix: BiddingController namespace 대소문자 수정 (v1 → V1)
- Linux 대소문자 구분으로 Swagger 문서 생성 실패 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:36:11 +09:00
aa7678c358 feat: 수동 품목 단가 조회 API 추가 및 디버그 로그 정리
- QuoteController에 getItemPrices 엔드포인트 추가
- QuoteCalculationService에 품목 코드 배열로 단가 조회 기능 추가
- 불필요한 디버그 로그 제거

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:29:19 +09:00
b7f8157548 feat: 문서 관리 시스템 Controller 구현 (Phase 1.6)
- DocumentController CRUD 엔드포인트 구현
- 결재 워크플로우는 기존 시스템 연동을 위해 보류

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-28 21:11:40 +09:00
a9cdf004e3 fix: 게시판 코드 기반 조회 라우트 추가
- BoardController에 showByCode(string $code) 메서드 추가
- GET /api/v1/boards/{code} 라우트 등록
- 기존 ID 기반 조회와 코드 기반 조회 분리

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-27 15:24:35 +09:00
3ff3c65ade feat: 품목 조회 시 BOM 유무 필터 및 코드+이름 형식 지원
- has_bom 파라미터 추가 (1: BOM 있는 품목만, 0: BOM 없는 품목만)
- JSON_LENGTH 활용한 BOM 유무 필터링 구현
- name 필드를 "코드 이름" 형식으로 반환 (일시적 변경)
- FULLTEXT 인덱스 활용 검색 개선 (BOOLEAN MODE)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 12:47:38 +09:00
6d05ab815f feat:테넌트설정 API 및 다수 서비스 개선
- TenantSetting CRUD API 추가
- Calendar, Entertainment, VAT 서비스 개선
- 5130 BOM 계산 로직 수정
- quote_items에 item_type 컬럼 추가
- tenant_settings 테이블 마이그레이션
- Swagger 문서 업데이트
2026-01-26 20:29:22 +09:00
09db0da43b feat(API): 부실채권, 재고, 입고 기능 개선
- BadDebt 컨트롤러/서비스 기능 확장
- StockService 재고 조회 로직 개선
- ProcessReceivingRequest 검증 규칙 수정
- Item, Order, CommonCode, Shipment 모델 업데이트
- TodayIssueObserverService 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:32:23 +09:00
d75f6f5bd1 feat(API): 입금/출금 알림 Observer 추가 및 LoanController 수정
- DepositIssueObserver, WithdrawalIssueObserver 신규 추가
- TodayIssueObserverService에 입금/출금 핸들러 및 디버그 로그 추가
- TodayIssue 모델에 입금/출금 상수 추가
- AppServiceProvider에 Observer 등록
- ApprovalService에 기존 결재선 사용 시 수동 알림 트리거 추가
- LoanController ApiResponse::handle() → ApiResponse::success() 수정

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-23 10:05:50 +09:00
871db32e04 feat(API): 결재함 및 대시보드 관련 개선
- ApprovalService: inbox 쿼리에 결재자 상세 정보 추가 (직책, 부서)
- PurchaseController: dashboardDetail 엔드포인트 추가
- CardTransactionService: 당월 이용 건수 추가
- SaleService: 대시보드 조회 개선
- LOGICAL_RELATIONSHIPS.md 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:19:05 +09:00
5ac83399b3 feat(API): CEO 대시보드 지출내역 상세 조회 API 추가
- BillService: 발행어음 대시보드 상세 조회 (me3 모달용)
- WelfareService: 직원 수/급여 총액 조회 로직 개선 (salaries 테이블 기반)
- BillApi/ExpectedExpenseApi: Swagger 스키마 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:18:33 +09:00
a994f27696 fix: 당월 예상 지출 모달 데이터 불일치 수정
- dashboardDetail() 메서드에 transaction_type 파라미터 추가
- 카드별 필터링 지원 (purchase, card, bill, null=전체)
- 카드 금액과 모달 금액이 동일한 데이터 소스 사용하도록 개선

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 23:16:49 +09:00
f089843e1e feat: 세금 시뮬레이션 API 개발 (Phase 1.3)
- LoanService에 taxSimulation() 메서드 추가
- LoanController에 taxSimulation() 액션 추가
- GET /api/v1/loans/tax-simulation 라우트 등록
- Swagger LoanTaxSimulation 스키마 및 엔드포인트 문서화
- 법인세/소득세 비교 분석 데이터 제공

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 22:47:59 +09:00
9197fe66f7 feat: 가지급금 대시보드 API 개발 (Phase 1.2)
- LoanService.dashboard() 메서드 추가 (요약 + 목록)
- LoanController.dashboard() 액션 추가
- GET /api/v1/loans/dashboard 라우트 등록
- Swagger LoanDashboard 스키마 및 엔드포인트 문서화

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 22:40:00 +09:00
161b353b1c feat(API): 복리후생비 상세 API 추가 (/welfare/detail)
- WelfareService: getDetail() 메서드 및 헬퍼 메서드 추가
  - getAccountBalance(), getMonthlyUsageTrend()
  - getCategoryDistribution(), getTransactions()
  - getQuarterlyStatus()
- WelfareController: detail() 액션 추가
- routes/api.php: /welfare/detail 라우트 등록
- Swagger: WelfareDetailResponse 및 관련 스키마 7개 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 22:35:20 +09:00
857192e8ac feat(API): 카드 거래 대시보드 API 신규 추가
- GET /api/v1/card-transactions/dashboard 엔드포인트 추가
- 월별 추이, 사용자별 비율, 최근 거래 목록 포함
- CEO 대시보드 cm1 모달용 데이터 제공

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 22:28:41 +09:00
f85e070913 feat(API): 카드 거래 등록/수정/삭제 API 추가
- CardTransactionService: store, update, destroy 메서드 추가
- CardTransactionController: store, update, destroy 메서드 추가
- routes/api.php: POST, PUT/{id}, DELETE/{id} 라우트 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 20:49:29 +09:00
d186a0c111 오늘 이슈(TodayIssue) 기능 구현
- TodayIssue 모델 및 마이그레이션 추가
- TodayIssueController, TodayIssueService 구현
- TodayIssueObserverService 및 Observer 패턴 적용
- DailyReportService 연동
- Swagger API 문서 업데이트
- 라우트 추가
2026-01-22 09:47:29 +09:00
ebc1794b56 fix: ApiResponse::handle() 호출 패턴 수정 (callable 사용) 2026-01-21 10:29:59 +09:00
ca833406a3 fix: ApiResponse import 경로 수정 (Http/Responses → Helpers) 2026-01-21 10:26:54 +09:00
f7850e43a7 feat: CEO 대시보드 API 구현 및 DB 컬럼 오류 수정
- StatusBoardService: 현황판 8개 항목 집계 API
- CalendarService: 캘린더 일정 조회 API (작업지시/계약/휴가)
- TodayIssueService: 오늘의 이슈 리스트 API
- VatService: 부가세 신고 현황 API
- EntertainmentService: 접대비 현황 API
- WelfareService: 복리후생 현황 API

버그 수정:
- orders 테이블 status → status_code 컬럼명 수정
- users 테이블 department 관계 → tenantProfile.department로 수정
- Swagger 문서 및 라우트 추가
2026-01-21 10:25:18 +09:00
pro
da45e1433b fix:수정 2026-01-20 20:51:42 +09:00
pro
0ae3c5aa07 feat: 계좌관리 추가 2026-01-20 20:43:38 +09:00
7246ac003f fix(WEB): 수주 페이지 필드 매핑 및 제품-부품 트리 구조 개선
- ApiClient 인터페이스: representative → manager_name, contact_person 변경
- transformApiToFrontend: client.representative → client.manager_name 수정
- ApiOrderItem에 floor_code, symbol_code 필드 추가 (제품-부품 매핑)
- ApiOrder에 options 타입 정의 추가
- ApiQuote에 calculation_inputs 타입 정의 추가
- 수주 상세 페이지 제품-부품 트리 구조 UI 개선
2026-01-20 16:14:46 +09:00
0b94da0741 feat: 세금계산서/거래명세서 일괄 발행 API 추가
- POST /api/v1/tax-invoices/bulk-issue: 세금계산서 일괄 발행
- POST /api/v1/sales/bulk-issue-statement: 거래명세서 일괄 발행
- FormRequest 검증 (최대 100건)
- Service 일괄 처리 로직 (개별 오류 처리)
- Swagger 문서 추가
- i18n 메시지 키 추가 (ko/en)
2026-01-19 20:53:36 +09:00
7dd683ace8 feat: 입찰(Bidding) 관리 기능 구현
- Bidding 모델, 서비스, 컨트롤러, FormRequest 추가
- 마이그레이션 및 시더 추가
- Swagger API 문서 추가
- 견적에서 입찰 전환 시 중복 체크 로직 추가
- per_page 파라미터 100 초과 시 자동 클램핑 처리
- error.bidding.already_registered 에러 메시지 추가
2026-01-19 20:23:30 +09:00
7282c1ee07 feat: 매입 일괄 업데이트 API 추가
- 매입유형 일괄 변경 API (POST /purchases/bulk-update-type)
- 세금계산서 수취 일괄 설정 API (POST /purchases/bulk-update-tax-received)
- FormRequest 검증 클래스 추가
- Swagger 문서 추가
2026-01-19 19:42:05 +09:00
090c07605e fix(WEB): 수주 등록/수정 옵션 필드 저장 및 담당자 표시 문제 해결
- FormRequest에 options 필드 validation 추가 (StoreOrderRequest, UpdateOrderRequest)
  - shipping_cost_code, receiver, receiver_contact, shipping_address 등
- OrderService.show()에서 client 로드 시 manager_name 필드 추가
- 수주확정/생산지시 되돌리기 기능 추가 (revertOrderConfirmation, revertProductionOrder)
- 견적 calculation_inputs 포함하여 로드

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-16 21:58:57 +09:00
7543fd2256 feat(WEB): 작업지시/출근부 기능 개선 및 마이그레이션 추가
- 작업지시 우선순위 필드 추가 (priority 마이그레이션)
- 수주-작업지시 품목 연동 source_order_item_id 컬럼 추가
- 수주 테이블에 account_code 필드 추가
- 작업지시 StoreRequest/UpdateRequest 우선순위 검증 추가
- WorkOrder 모델 priority fillable 추가
- 출근부 StoreRequest/UpdateRequest 검증 규칙 개선
- Employee Request 검증 규칙 수정
- SaleService/ItemService 수정
- WorkResultService 결과 처리 개선
- BankTransactionService 수정
- routes/api.php 엔드포인트 업데이트
- error.php 에러 메시지 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:38:52 +09:00
a1aa8726af feat: 공통 모듈 추가 (엑셀 내보내기, 계정과목 일괄변경)
Phase 0 - 공통 모듈:
- ExportService.php 생성 (Maatwebsite/Excel 기반 엑셀 내보내기)
- BulkUpdateAccountCodeRequest.php 생성 (계정과목 일괄변경 유효성 검사)

Phase 1 - 계정과목 일괄변경:
- WithdrawalController/Service: bulkUpdateAccountCode 메서드 추가
- DepositController/Service: bulkUpdateAccountCode 메서드 추가
- POST /v1/withdrawals/bulk-update-account-code
- POST /v1/deposits/bulk-update-account-code

Phase 2 - 엑셀 내보내기:
- AttendanceController/Service: export, getExportData 메서드 추가
- SalaryController/Service: export, getExportData 메서드 추가
- GET /v1/attendances/export
- GET /v1/salaries/export

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-15 17:14:04 +09:00
b82f9c786b fix: 품목관리 API 응답 및 라우팅 오류 수정
- ItemsController: show/destroy 메서드 파라미터 타입 수정 (int → 동적 캐스팅)
- ItemsController: store/update에서 product_type → item_type 변환 로직 추가
- ItemService: 정렬 순서 수정 (최신 품목이 먼저 표시되도록 desc 추가)
- ItemService: code 키를 item_code로 변경 (ApiResponse::handle의 HTTP 상태 코드 충돌 방지)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-14 20:04:29 +09:00
a08e155b26 feat(API): Inspection API 구현
- InspectionController 생성 (CRUD + stats + complete)
- InspectionService 생성 (비즈니스 로직)
- FormRequest 생성 (Store/Update/Complete)
- 라우트 등록 (7개 엔드포인트)
- i18n 메시지 추가 (message.php, error.php)

기존 inspections 테이블 및 Inspection 모델 활용

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-14 17:08:59 +09:00
ba5f402cd8 fix(API): Controller 타입 및 코드 정리
- FcmController, EstimateController, ItemsController 개선
- LoanController, PositionController 수정
- ReceivablesController, SalaryController 수정
- StructureReviewController 수정

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-13 19:49:00 +09:00
38d56aa564 feat(work-order): 품목 상태 변경 및 작업지시 상태 자동 연동
- WorkOrderItem 모델에 status 컬럼 및 상수 추가 (waiting/in_progress/completed)
- 품목 상태 변경 API 엔드포인트 추가 (PATCH /work-orders/{id}/items/{itemId}/status)
- syncWorkOrderStatusFromItems() 메서드로 품목→작업지시 상태 자동 동기화
  - 품목 중 하나라도 in_progress → 작업지시 in_progress
  - 모든 품목 completed → 작업지시 completed
  - 모든 품목 waiting → 작업지시 waiting
- 감사 로그: item_status_changed, status_synced_from_items 액션 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-13 16:00:47 +09:00
f59dd1b9fb feat(labor): 노임관리 API 구현
- Labor 모델 (BelongsToTenant, SoftDeletes)
- LaborController 7개 엔드포인트
- LaborService 비즈니스 로직
- FormRequest 4개 (Index/Store/Update/BulkDelete)
- 마이그레이션 및 라우트 등록

API: GET/POST /labor, GET/PUT/DELETE /labor/{id}, DELETE /labor/bulk, GET /labor/stats

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 23:29:32 +09:00
ceb7798c28 feat(pricing): 단가관리 stats, bulkDestroy API 추가
- GET /pricing/stats: 단가 통계 조회 (total, draft, finalized, expired)
- DELETE /pricing/bulk: 단가 일괄 삭제 (확정된 단가 제외)
- PriceBulkDeleteRequest FormRequest 추가
- PricingService.stats(), bulkDestroy() 메서드 구현

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 22:19:11 +09:00
e6a4bf0870 feat(construction): 구조검토관리 API 구현
- Migration: structure_reviews 테이블 생성
- Model: StructureReview (BelongsToTenant, SoftDeletes)
- Service: StructureReviewService (CRUD + 통계 + 일괄삭제)
- Controller: StructureReviewController (7 endpoints)
- FormRequest: Store/Update 검증 규칙

API Endpoints:
- GET    /construction/structure-reviews (목록)
- POST   /construction/structure-reviews (생성)
- GET    /construction/structure-reviews/stats (통계)
- DELETE /construction/structure-reviews/bulk (일괄삭제)
- GET    /construction/structure-reviews/{id} (상세)
- PUT    /construction/structure-reviews/{id} (수정)
- DELETE /construction/structure-reviews/{id} (삭제)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 21:31:27 +09:00
9f8bff2f3d feat(common-codes): order_status/order_type 공용 코드 추가
- common_codes 테이블에 order_status 코드 그룹 추가 (DRAFT, CONFIRMED, IN_PROGRESS, COMPLETED, CANCELLED)
- common_codes 테이블에 order_type 코드 그룹 추가 (ORDER, PURCHASE)
- CommonController index 메서드 구현 (GET /api/v1/settings/common/{group})
- 멀티테넌트 지원 (tenant_id NULL 또는 현재 테넌트)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 17:25:14 +09:00
da2eddead4 feat: 거래처 통계 및 일괄삭제 API 추가 (Phase 2.2)
- ClientService: stats(), bulkDestroy() 메서드 추가
- ClientController: stats(), bulkDestroy() 액션 추가
- routes/api.php: /clients/stats, /clients/bulk 라우트 추가
- 악성채권 보유 거래처 통계 계산 (BadDebt 연계)
- 주문 있는 거래처는 삭제 건너뜀

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 16:46:25 +09:00
00f57ce244 feat(시공사): 2.1 현장관리 - Backend API 확장
- 마이그레이션: site_code, client_id, status 컬럼 추가
- Site 모델: 상태 상수, Client 관계 추가
- SiteService: stats(), bulkDestroy(), 필터 확장
- SiteController: stats, bulkDestroy 엔드포인트 추가
- 라우트: /stats, /bulk 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 16:34:59 +09:00
7897ad0479 fix: PushNotificationService 누락된 메서드 복원 및 DI 적용
- Controller: 생성자 DI로 PushNotificationService 주입
- Service: 12/18 커밋에서 삭제된 토큰 관리 메서드 복원
  - registerToken, unregisterToken, getUserTokens
  - getSettings, updateSettings
  - initializeDefaultSettings, getDefaultSound
- 기존 비즈니스 이벤트 푸시 기능(FcmSender) 유지

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 10:39:06 +09:00
3a8af2d7ee feat: [시공관리] 계약관리 API 구현
- Contract 모델, 마이그레이션 추가
- ContractController CRUD 엔드포인트 구현
- ContractService 비즈니스 로직 구현
- ContractStoreRequest, ContractUpdateRequest 검증 추가
- Swagger API 문서 작성
- 라우트 등록 (GET/POST/PUT/DELETE)
- 통계 및 단계별 건수 조회 API 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 10:18:43 +09:00
26c071805a feat: 수주 관리 Phase 3 - 고급 기능 API 구현
- 견적→수주 변환 API (POST /orders/from-quote/{quoteId})
- 생산지시 생성 API (POST /orders/{id}/production-order)
- FormRequest 검증 클래스 추가
- 중복 생성 방지 및 상태 검증 로직

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 20:17:40 +09:00
de19ac97aa feat: 수주관리(Order Management) API Phase 1.1 구현
- OrderService 구현 (index, stats, show, store, update, destroy, updateStatus)
- OrderController 구현 (7개 API 엔드포인트)
- FormRequest 클래스 3개 생성 (Store, Update, UpdateStatus)
- 상태 전환 규칙 검증 (DRAFT → CONFIRMED → IN_PROGRESS → COMPLETED/CANCELLED)
- 수주번호 자동 생성 (ORD{YYYYMMDD}{0001} 형식)
- Swagger API 문서 작성 (OrderApi.php)
- i18n 메시지 키 추가 (ko/en)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 11:11:54 +09:00
d6783b4a15 fix(API): 견적 관리 필드 저장/조회 개선
- QuoteStoreRequest/UpdateRequest: manager, contact, remarks 필드 추가
- QuoteController: store에서 validated 데이터 로깅 추가 (디버깅용)
- QuoteService: manager, contact, remarks 필드 저장/조회 로직 추가
- FormulaEvaluatorService: BOM 계산 서비스 개선

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 20:57:51 +09:00
4fa38e39e6 feat(API): 채권현황 동적월 지원 및 year=0 파라미터 버그 수정
- ReceivablesController: boolean 유효성 검사를 string|in:true,false,1,0으로 변경
  - 쿼리 문자열의 "true" 문자열을 올바르게 처리
  - 디버깅용 Log::info 추가
- ReceivablesService: 동적 월 기간 지원
  - recent_year=true 시 최근 12개월 동적 계산
  - 월별 레이블 동적 생성 (예: 25.02, 25.03...)
  - 이월잔액(carry_forward_balance) 계산 추가
- Client 모델: is_overdue, memo 필드 추가
- 마이그레이션: clients 테이블에 is_overdue 컬럼 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 14:47:51 +09:00
4e59bbf574 feat: Phase 1.2 - 다건 BOM 기반 자동산출 API 구현
- QuoteBomBulkCalculateRequest 생성 (React camelCase → API 약어 변환)
- QuoteCalculationService.calculateBomBulk() 메서드 추가
- POST /api/v1/quotes/calculate/bom/bulk 엔드포인트 추가
- Swagger 스키마 및 문서 업데이트

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-02 13:13:50 +09:00