{
    // VS Code 任务配置
    // 文档：https://code.visualstudio.com/docs/editor/tasks
    "version": "2.0.0",
    "tasks": [
        {
            // 构建整个解决方案，是 launch.json 启动前的默认 preLaunchTask
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/FlyshotReplacement.sln",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary",
                "-v",
                "minimal"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": "$msCompile",
            "presentation": {
                "reveal": "silent",
                "clear": true
            }
        },
        {
            // 仅构建宿主项目，迭代 Web 层时比整解决方案快
            "label": "build-host",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/src/Flyshot.Server.Host/Flyshot.Server.Host.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary",
                "-v",
                "minimal"
            ],
            "group": "build",
            "problemMatcher": "$msCompile"
        },
        {
            // 还原 NuGet 包，新增引用或克隆后第一次打开时使用
            "label": "restore",
            "command": "dotnet",
            "type": "process",
            "args": [
                "restore",
                "${workspaceFolder}/FlyshotReplacement.sln"
            ],
            "problemMatcher": []
        },
        {
            // 清理所有项目的 bin/obj
            "label": "clean",
            "command": "dotnet",
            "type": "process",
            "args": [
                "clean",
                "${workspaceFolder}/FlyshotReplacement.sln"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            // 跑全部测试（领域 + 集成）
            "label": "test",
            "command": "dotnet",
            "type": "process",
            "args": [
                "test",
                "${workspaceFolder}/FlyshotReplacement.sln",
                "--no-restore",
                "-v",
                "minimal"
            ],
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "problemMatcher": "$msCompile"
        },
        {
            // 仅跑领域 / 算法层测试，迭代规划逻辑时使用
            "label": "test-core",
            "command": "dotnet",
            "type": "process",
            "args": [
                "test",
                "${workspaceFolder}/tests/Flyshot.Core.Tests/Flyshot.Core.Tests.csproj",
                "-v",
                "minimal"
            ],
            "group": "test",
            "problemMatcher": "$msCompile"
        },
        {
            // 仅跑宿主集成测试，迭代 HTTP / 控制器层时使用
            "label": "test-integration",
            "command": "dotnet",
            "type": "process",
            "args": [
                "test",
                "${workspaceFolder}/tests/Flyshot.Server.IntegrationTests/Flyshot.Server.IntegrationTests.csproj",
                "-v",
                "minimal"
            ],
            "group": "test",
            "problemMatcher": "$msCompile"
        },
        {
            // 启动宿主，供 launch.json 的 watch 配置作为前置任务
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "--project",
                "${workspaceFolder}/src/Flyshot.Server.Host/Flyshot.Server.Host.csproj",
                "--launch-profile",
                "http"
            ],
            "isBackground": true,
            "problemMatcher": {
                "owner": "dotnet-watch",
                "pattern": [
                    {
                        "regexp": "^.*$",
                        "file": 1,
                        "location": 2,
                        "message": 3
                    }
                ],
                "background": {
                    "activeOnStart": true,
                    "beginsPattern": "^.*Watch run started.*$",
                    "endsPattern": "^.*Application started.*$"
                }
            }
        },
        {
            // Release 配置发布到 publish/，用于现场部署包打包
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/src/Flyshot.Server.Host/Flyshot.Server.Host.csproj",
                "-c",
                "Release",
                "-o",
                "${workspaceFolder}/publish"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}
