import 'api_client.dart';

/// API 경로 상수 모음
/// - 버전 prefix 등을 중앙에서 관리해 중복을 방지한다.
class ApiRoutes {
  const ApiRoutes._();

  /// API v1 prefix
  static const apiV1 = '/api/v1';

  /// 결재(Approval) 관련 엔드포인트
  static const approvals = '$apiV1/approvals';
  static const approvalRoot = '$apiV1/approval';
  static const approvalSteps = '$apiV1/approval-steps';
  static const approvalHistory = '$apiV1/approval/history';
  static const approvalActions = '$apiV1/approval-actions';
  static const approvalDrafts = '$apiV1/approval-drafts';
  static const approvalTemplates = '$apiV1/approval/templates';
  static const approvalTemplatesLegacy = '$apiV1/approval-templates';

  /// 결재 행위 전용 경로(`/approval/{action}`)를 반환한다.
  static String approvalAction(String action) {
    final sanitized = action
        .trim()
        .replaceAll(RegExp(r'^/+'), '')
        .replaceAll(RegExp(r'/+$'), '');
    return '$approvalRoot/$sanitized';
  }

  /// 재고 현황 요약 목록 경로.
  static const inventorySummary = '$apiV1/inventory/summary';

  /// 재고 현황 단건 경로를 조합한다.
  static String inventorySummaryDetail(Object productId) {
    return ApiClient.buildPath(inventorySummary, [productId]);
  }
}
