ln-770-crosscutting-setup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseln-770-crosscutting-setup
ln-770-横切关注点配置
Type: L2 Domain Coordinator
Category: 7XX Project Bootstrap
Parent: ln-700-project-bootstrap
Coordinates cross-cutting concerns configuration for .NET and Python projects.
类型: L2 领域协调器
分类: 7XX 项目初始化
父级: ln-700-project-bootstrap
负责协调.NET和Python项目的横切关注点配置工作。
Overview
概述
| Aspect | Details |
|---|---|
| Input | Project root directory |
| Output | Configured logging, error handling, CORS, health checks, API docs |
| Workers | ln-771 to ln-775 |
| Stacks | .NET (ASP.NET Core), Python (FastAPI) |
| 方面 | 详情 |
|---|---|
| 输入 | 项目根目录 |
| 输出 | 已配置的日志记录、错误处理、CORS、健康检查、API文档 |
| 子任务执行者 | ln-771 至 ln-775 |
| 技术栈 | .NET (ASP.NET Core)、Python (FastAPI) |
Phase 1: Detect Project Stack
阶段1:检测项目技术栈
Determine the technology stack by scanning project files.
Detection Rules:
| File Pattern | Stack | Framework |
|---|---|---|
| .NET | ASP.NET Core |
| Python | FastAPI |
Actions:
- Glob for files
*.csproj - If not found, Glob for or
pyproject.tomlrequirements.txt - If Python, check for FastAPI in dependencies
- Store detected stack in Context Store
Context Store Initial:
json
{
"STACK": ".NET" | "Python",
"FRAMEWORK": "ASP.NET Core" | "FastAPI",
"PROJECT_ROOT": "/path/to/project",
"FRAMEWORK_VERSION": "8.0" | "0.109.0"
}通过扫描项目文件确定技术栈。
检测规则:
| 文件模式 | 技术栈 | 框架 |
|---|---|---|
| .NET | ASP.NET Core |
| Python | FastAPI |
操作步骤:
- 查找 文件
*.csproj - 若未找到,查找 或
pyproject.tomlrequirements.txt - 若为Python项目,检查依赖中是否包含FastAPI
- 将检测到的技术栈存储到上下文存储中
初始上下文存储:
json
{
"STACK": ".NET" | "Python",
"FRAMEWORK": "ASP.NET Core" | "FastAPI",
"PROJECT_ROOT": "/path/to/project",
"FRAMEWORK_VERSION": "8.0" | "0.109.0"
}Phase 2: Check Existing Configuration
阶段2:检查现有配置
Scan for already configured cross-cutting concerns.
Detection Patterns:
| Concern | .NET Pattern | Python Pattern |
|---|---|---|
| Logging | | |
| Error Handling | | |
| CORS | | |
| Health Checks | | |
| API Docs | | FastAPI auto-generates |
Actions:
- Grep for each pattern
- Mark configured concerns as
skip: true - Update Context Store with findings
Context Store Updated:
json
{
"concerns": {
"logging": { "configured": false },
"errorHandling": { "configured": false },
"cors": { "configured": true, "skip": true },
"healthChecks": { "configured": false },
"apiDocs": { "configured": false }
}
}扫描已配置的横切关注点。
检测模式:
| 关注点 | .NET 检测模式 | Python 检测模式 |
|---|---|---|
| 日志记录 | | requirements 中的 |
| 错误处理 | | |
| CORS | | |
| 健康检查 | | |
| API文档 | | FastAPI 自动生成 |
操作步骤:
- 针对每个模式进行检索
- 将已配置的关注点标记为
skip: true - 将检测结果更新到上下文存储中
更新后的上下文存储:
json
{
"concerns": {
"logging": { "configured": false },
"errorHandling": { "configured": false },
"cors": { "configured": true, "skip": true },
"healthChecks": { "configured": false },
"apiDocs": { "configured": false }
}
}Phase 3: Invoke Workers (Conditional)
阶段3:调用子任务执行者(按需)
Delegate to workers only for unconfigured concerns.
Worker Invocation Order:
| Order | Worker | Condition | Skill Call |
|---|---|---|---|
| 1 | ln-771-logging-configurator | | |
| 2 | ln-772-error-handler-setup | | |
| 3 | ln-773-cors-configurator | | |
| 4 | ln-774-healthcheck-setup | | |
| 5 | ln-775-api-docs-generator | | |
Pass Context Store to each worker.
Worker Response Format:
json
{
"status": "success" | "skipped" | "error",
"files_created": ["path/to/file.cs"],
"packages_added": ["Serilog.AspNetCore"],
"message": "Configured structured logging with Serilog"
}仅针对未配置的关注点委托给子任务执行者处理。
子任务执行者调用顺序:
| 顺序 | 子任务执行者 | 条件 | 技能调用 |
|---|---|---|---|
| 1 | ln-771-logging-configurator | | |
| 2 | ln-772-error-handler-setup | | |
| 3 | ln-773-cors-configurator | | |
| 4 | ln-774-healthcheck-setup | | |
| 5 | ln-775-api-docs-generator | | |
将上下文存储传递给每个子任务执行者。
子任务执行者响应格式:
json
{
"status": "success" | "skipped" | "error",
"files_created": ["path/to/file.cs"],
"packages_added": ["Serilog.AspNetCore"],
"message": "Configured structured logging with Serilog"
}Phase 4: Generate Aggregation File
阶段4:生成聚合文件
Create a single entry point for all cross-cutting services.
创建所有横切服务的统一入口文件。
.NET: Extensions/ServiceExtensions.cs
.NET:Extensions/ServiceExtensions.cs
Generate based on configured workers:
// Structure only - actual code generated via MCP ref
public static class ServiceExtensions
{
public static IServiceCollection AddCrosscuttingServices(
this IServiceCollection services,
IConfiguration configuration)
{
// Calls added based on configured workers:
// services.AddLogging(configuration); // if ln-771 ran
// services.AddCorsPolicy(configuration); // if ln-773 ran
// services.AddHealthChecks(); // if ln-774 ran
// services.AddSwaggerServices(); // if ln-775 ran
return services;
}
}根据已配置的子任务生成:
// 仅为结构示例 - 实际代码通过MCP引用生成
public static class ServiceExtensions
{
public static IServiceCollection AddCrosscuttingServices(
this IServiceCollection services,
IConfiguration configuration)
{
// 根据已配置的子任务添加调用:
// services.AddLogging(configuration); // 若ln-771已执行
// services.AddCorsPolicy(configuration); // 若ln-773已执行
// services.AddHealthChecks(); // 若ln-774已执行
// services.AddSwaggerServices(); // 若ln-775已执行
return services;
}
}Python: middleware/init.py
Python:middleware/init.py
Generate based on configured workers:
undefined根据已配置的子任务生成:
undefinedStructure only - actual code generated via MCP ref
仅为结构示例 - 实际代码通过MCP引用生成
def configure_middleware(app):
# Middleware added based on configured workers:
# configure_logging(app) # if ln-771 ran
# configure_error_handlers(app) # if ln-772 ran
# configure_cors(app) # if ln-773 ran
# configure_health_routes(app) # if ln-774 ran
pass
---def configure_middleware(app):
# 根据已配置的子任务添加中间件:
# configure_logging(app) # 若ln-771已执行
# configure_error_handlers(app) # 若ln-772已执行
# configure_cors(app) # 若ln-773已执行
# configure_health_routes(app) # 若ln-774已执行
pass
---Phase 5: Summary Report
阶段5:汇总报告
Display summary of all configured concerns.
Output Format:
Cross-cutting Setup Complete
============================
Stack: .NET (ASP.NET Core 8.0)
Configured:
✓ Logging (Serilog) - Extensions/LoggingExtensions.cs
✓ Error Handling - Middleware/GlobalExceptionMiddleware.cs
✓ CORS - Extensions/CorsExtensions.cs
✓ Health Checks - Extensions/HealthCheckExtensions.cs
✓ API Docs (Swagger) - Extensions/SwaggerExtensions.cs
Skipped (already configured):
- None
Entry Point: Extensions/ServiceExtensions.cs
Add to Program.cs: builder.Services.AddCrosscuttingServices(builder.Configuration);
Packages to Install:
dotnet add package Serilog.AspNetCore
dotnet add package Swashbuckle.AspNetCore展示所有已配置关注点的汇总信息。
输出格式:
横切关注点配置完成
============================
技术栈:.NET (ASP.NET Core 8.0)
已配置项:
✓ 日志记录 (Serilog) - Extensions/LoggingExtensions.cs
✓ 错误处理 - Middleware/GlobalExceptionMiddleware.cs
✓ CORS - Extensions/CorsExtensions.cs
✓ 健康检查 - Extensions/HealthCheckExtensions.cs
✓ API文档 (Swagger) - Extensions/SwaggerExtensions.cs
已跳过(已配置):
- 无
入口文件:Extensions/ServiceExtensions.cs
需添加到Program.cs:builder.Services.AddCrosscuttingServices(builder.Configuration);
需安装的包:
dotnet add package Serilog.AspNetCore
dotnet add package Swashbuckle.AspNetCoreWorkers
子任务执行者
| Worker | Purpose | Stacks |
|---|---|---|
| ln-771-logging-configurator | Structured logging | .NET (Serilog), Python (structlog) |
| ln-772-error-handler-setup | Global exception middleware | .NET, Python |
| ln-773-cors-configurator | CORS policy configuration | .NET, Python |
| ln-774-healthcheck-setup | /health endpoints | .NET, Python |
| ln-775-api-docs-generator | Swagger/OpenAPI | .NET (Swashbuckle), Python (FastAPI built-in) |
| 子任务执行者 | 用途 | 技术栈 |
|---|---|---|
| ln-771-logging-configurator | 结构化日志配置 | .NET (Serilog)、Python (structlog) |
| ln-772-error-handler-setup | 全局异常中间件配置 | .NET、Python |
| ln-773-cors-configurator | CORS策略配置 | .NET、Python |
| ln-774-healthcheck-setup | /health 端点配置 | .NET、Python |
| ln-775-api-docs-generator | Swagger/OpenAPI 生成 | .NET (Swashbuckle)、Python (FastAPI 内置) |
Context Store Interface
上下文存储接口
Workers receive and return via Context Store:
Input to Workers:
json
{
"STACK": ".NET",
"FRAMEWORK": "ASP.NET Core",
"FRAMEWORK_VERSION": "8.0",
"PROJECT_ROOT": "/path/to/project",
"ENVIRONMENT": "Development"
}Output from Workers:
json
{
"status": "success",
"files_created": [],
"packages_added": [],
"registration_code": "services.AddLogging(configuration);"
}子任务执行者通过上下文存储接收和返回数据:
子任务执行者输入:
json
{
"STACK": ".NET",
"FRAMEWORK": "ASP.NET Core",
"FRAMEWORK_VERSION": "8.0",
"PROJECT_ROOT": "/path/to/project",
"ENVIRONMENT": "Development"
}子任务执行者输出:
json
{
"status": "success",
"files_created": [],
"packages_added": [],
"registration_code": "services.AddLogging(configuration);"
}Idempotency
幂等性
This skill is idempotent:
- Phase 2 detects existing configuration
- Workers skip if already configured
- Aggregation file preserves existing entries
Version: 2.0.0
Last Updated: 2026-01-10
本技能具备幂等性:
- 阶段2会检测现有配置
- 子任务执行者若检测到已配置则跳过
- 聚合文件会保留现有条目
版本: 2.0.0
最后更新: 2026-01-10