{
  "Database": {
    "Provider": "MySql",
    "ApplyMigrationsOnStartup": false,
    "CommandTimeoutSeconds": 30
  },
  "ConnectionStrings": {
    "MySql": "",
    "Redis": ""
  },
  "Cache": {
    "Enabled": true,
    "KeyPrefix": "jiaowu:v1",
    "ReferenceExpirationMinutes": 30,
    "ReferenceLocalExpirationSeconds": 120,
    "TimetableExpirationMinutes": 10,
    "TimetableLocalExpirationSeconds": 30,
    "AnalyticsExpirationMinutes": 3,
    "AnalyticsLocalExpirationSeconds": 30,
    "MaximumPayloadKilobytes": 2048
  },
  "Observability": {
    "Enabled": true,
    "ServiceName": "jiaowu-api",
    "SlowQueryThresholdMilliseconds": 500,
    "IncludeSqlText": false,
    "MaximumSqlTextLength": 2000
  },
  "PerformanceReporting": {
    "Enabled": false,
    "PrometheusBaseUrl": "",
    "BearerToken": "",
    "GrafanaBaseUrl": "",
    "CacheSeconds": 30,
    "TimeoutSeconds": 10,
    "ServiceLabel": "service_name",
    "RequestDurationMetric": "http_server_request_duration_seconds",
    "DatabaseDurationMetric": "jiaowu_db_command_duration_milliseconds",
    "SlowDatabaseMetric": "jiaowu_db_command_slow_total",
    "FailedDatabaseMetric": "jiaowu_db_command_failed_total"
  },
  "ClickHouseAnalytics": {
    "Enabled": false,
    "Endpoint": "http://localhost:8123",
    "Database": "jiaowu_analytics",
    "UserName": "jiaowu_analytics",
    "Password": "",
    "CreateSchemaOnStartup": true,
    "SyncIntervalSeconds": 60,
    "SourceLookbackDays": 90,
    "BatchSize": 1000
  },
  "Operations": {
    "BackupDirectory": "data/backups",
    "BackupWarningHours": 24,
    "ToolTimeoutMinutes": 30,
    "MySqlDumpPath": "mysqldump",
    "MySqlClientPath": "mysql",
    "MySqlAdditionalArguments": []
  },
  "BackgroundJobs": {
    "Transport": "InMemory",
    "PollIntervalMilliseconds": 500,
    "LeaseSeconds": 120,
    "PrefetchCount": 1,
    "AutomaticScheduleConcurrency": 1,
    "SchedulePublishConcurrency": 1,
    "MakeupExamAutoConcurrency": 1,
    "ExamArrangementConcurrency": 1,
    "CourseGradeStatisticsRefreshConcurrency": 1,
    "Exchange": "jiaowu.background-jobs",
    "QueuePrefix": "jiaowu.background-jobs",
    "UseQuorumQueues": true,
    "ProcessingAttemptLimit": 5,
    "MaintenanceIntervalSeconds": 60,
    "CompletedRetentionDays": 14,
    "CleanupBatchSize": 500
  },
  "RabbitMq": {
    "HostName": "localhost",
    "Port": 5672,
    "UserName": "guest",
    "Password": "guest",
    "VirtualHost": "/",
    "UseTls": false,
    "TlsServerName": ""
  },
  "Jwt": {
    "Issuer": "Jiaowu.Api",
    "Audience": "Jiaowu.Web",
    "Key": "",
    "AccessTokenMinutes": 10,
    "WebIdleMinutes": 30,
    "AppIdleMinutes": 4320
  },
  "Sso": {
    "Enabled": false,
    "DisplayName": "学校统一身份认证",
    "Authority": "",
    "ClientId": "",
    "ClientSecret": "",
    "UserNameClaim": "preferred_username",
    "RequireHttpsMetadata": true,
    "LinkExistingUsersByUserName": true,
    "FrontendBaseUrl": "",
    "CallbackUrl": ""
  },
  "ReverseProxy": {
    "TrustedProxies": [
      "127.0.0.1",
      "::1"
    ]
  },
  "Cors": {
    "Origins": [
      "capacitor://localhost",
      "https://localhost",
      "http://localhost"
    ]
  },
  "OfficialDocuments": {
    "InstitutionName": "明序大学",
    "IssuingOffice": "教务处",
    "DocumentNumberPrefix": "MXU",
    "PublicBaseUrl": "",
    "FontPath": ""
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.EntityFrameworkCore.Database.Command": "Warning"
    }
  },
  "AllowedHosts": "*"
}
