Files
WCTDataMiner/docs/architecture/配置管理.md
ssss 28cb2533a7 docs: 完善数据模型设计
- 重命名 log_file 为 test_scenario(测试场景)
- 拆分维度表:tx_panel、tx_hardware、tx_software、rx_type
- 采用星型模型设计,消除数据冗余
- 为所有表添加软删除字段 is_deleted
- 更新关系说明,包含全局查询过滤器配置
- 更新 ER 图和查询示例

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 15:53:30 +08:00

2.3 KiB

配置管理

所属模块:架构概览


1. 配置文件结构

// Configuration/appsettings.json
{
  "Database": {
    "Type": "sqlite",
    "Path": "./data/database/wctminer.db"
  },
  "Parser": {
    "BatchSize": 1000
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "WCTDataMiner": "Debug"
    }
  },
  "Paths": {
    "LogDir": "./data/logs",
    "OutputDir": "./data/output"
  }
}

2. 配置类定义

// Configuration/AppSettings.cs
namespace WCTDataMiner.Configuration;

public class AppSettings
{
    public DatabaseSettings Database { get; set; } = new();
    public ParserSettings Parser { get; set; } = new();
    public PathSettings Paths { get; set; } = new();
}

public class DatabaseSettings
{
    public string Type { get; set; } = "sqlite";
    public string Path { get; set; } = "./data/database/wctminer.db";
    
    // PostgreSQL 配置(可选)
    public string? Host { get; set; }
    public int Port { get; set; } = 5432;
    public string? Name { get; set; }
    public string? User { get; set; }
    public string? Password { get; set; }
}

public class ParserSettings
{
    public int BatchSize { get; set; } = 1000;
}

public class PathSettings
{
    public string LogDir { get; set; } = "./data/logs";
    public string OutputDir { get; set; } = "./data/output";
}

3. 配置加载

// Program.cs 配置加载部分
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using WCTDataMiner.Configuration;

var builder = Host.CreateDefaultBuilder(args);

builder.ConfigureAppConfiguration(config =>
{
    config.AddJsonFile("appsettings.json", optional: false);
    config.AddJsonFile($"appsettings.{environment}.json", optional: true);
    config.AddEnvironmentVariables();
    config.AddCommandLine(args);
});

builder.ConfigureServices((context, services) =>
{
    services.Configure<AppSettings>(context.Configuration.GetSection(""));
    
    // 注册数据库服务
    services.AddDatabaseServices(context.Configuration);
    
    // 注册其他服务
    services.AddScoped<QfodParser>();
    services.AddScoped<PlossParser>();
    services.AddScoped<ParseService>();
    services.AddScoped<ErrorHandlingService>();
});