fengling-auth-service/.planning/codebase/STACK.md
movingsam 2a60caae80 docs(architecture): 添加系统架构分析文档
- 描述整体基于ASP.NET Core的分层架构与领域驱动设计
- 详细说明表现层、视图模型层、配置层和基础设施层职责
- 介绍用户认证、OAuth2授权码与令牌颁发的数据流过程
- 抽象说明用户与租户、声明和授权实体设计
- 说明应用启动入口和关键HTTP端点
- 列出错误处理策略和跨领域关注点(日志、追踪、安全)

docs(concerns): 新增代码库问题与关注点分析文档

- 汇总并详述安全漏洞如配置文件泄露、Cookie策略不当
- 记录技术债务包括缺乏单元测试、依赖注入不统一等
- 罗列性能问题和具体代码缺陷
- 给出优先级明确的修复建议和改进措施
- 涵盖架构设计问题和依赖兼容性风险
- 说明测试覆盖缺口及高风险未测试区域

docs(conventions): 新增编码约定与规范文档

- 明确文件、类、方法、变量等命名规则
- 规范代码风格包括命名空间、主构造函数使用
- 制定日志记录、审计日志和依赖注入的标准
- 规定控制器路由、异步模式和错误处理方式
- 说明DTO命名及特性使用规范
- 描述配置管理、注释规范及常用代码注释样例

docs(integrations): 添加外部系统集成文档

- 介绍数据库连接和PostgreSQL客户端库版本
- 描述身份认证与授权服务及默认用户信息
- 说明可观测性方案及OpenTelemetry组件
- 涵盖容器化部署相关Docker与Kubernetes配置
- 说明CI/CD流水线触发条件与构建流程
- 列出环境变量需求和主要API端点
- 强调生产环境密钥管理与安全存储机制
2026-03-01 11:28:44 +08:00

118 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 技术栈
**分析日期:** 2026-02-28
## 语言
**主要:**
- **C# 12** - 项目使用最新的 C# 语言特性
- **.NET 10.0** - 目标框架版本
**运行时:**
- **ASP.NET Core 10.0** - 用于构建 Web 应用程序和 API
## 运行时环境
**框架:**
- **.NET 10.0** - 当前稳定版本
- **ASP.NET Core** - Web 框架
**包管理:**
- **NuGet** - .NET 包管理器
- **Fengling.Platform.Infrastructure** - 1.0.0 版本,内部平台基础设施包
- **NetCorePal.Extensions** - 3.2.1 版本,一系列扩展库
## 核心框架
**身份认证与授权:**
- **OpenIddict** 7.2.0 - OAuth2/OpenID Connect 实现
- `OpenIddict.AspNetCore` - OpenIddict 的 ASP.NET Core 集成
- `OpenIddict.EntityFrameworkCore` - OpenIddict 的 EF Core 存储
- `OpenIddict.Quartz` - OpenIddict 的 Quartz.NET 集成(用于后台任务)
**数据访问:**
- **Entity Framework Core** 10.0.3 - ORM 框架
- `Microsoft.EntityFrameworkCore` - 核心 EF Core 包
- `Microsoft.EntityFrameworkCore.Design` - EF Core 设计时工具
- `Npgsql.EntityFrameworkCore.PostgreSQL` - PostgreSQL 提供程序(已注释)
- `Microsoft.EntityFrameworkCore.InMemory` - 内存数据库(用于测试)
**用户与角色管理:**
- **ASP.NET Core Identity** 10.0.3 - 用户身份管理系统
**Web API**
- **Swashbuckle.AspNetCore** 10.1.4 - Swagger/OpenAPI 文档生成
**健康检查:**
- **AspNetCore.HealthChecks.Npgsql** 9.0.0 - PostgreSQL 健康检查
- **Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore** 10.0.3 - EF Core 健康检查
## 日志与观测
**日志:**
- **Serilog** - 结构化日志框架
- `Serilog.AspNetCore` 10.0.0 - Serilog 的 ASP.NET Core 集成
- `Serilog.Sinks.Console` 6.1.1 - 控制台输出接收器
**分布式追踪:**
- **OpenTelemetry** 1.15.0 - 可观测性标准
- `OpenTelemetry` - 核心包
- `OpenTelemetry.Extensions.Hosting` - Host 集成
- `OpenTelemetry.Instrumentation.AspNetCore` - ASP.NET Core instrumentation
- `OpenTelemetry.Instrumentation.Http` - HTTP 客户端 instrumentation
- `OpenTelemetry.Exporter.OpenTelemetryProtocol` - OTLP 导出器
## 业务逻辑
**CQRS 与中介者:**
- **MediatR** 12.5.0 - 中介者模式实现
**领域驱动设计支持:**
- **NetCorePal.Extensions.Domain.Abstractions** - 领域抽象
- **NetCorePal.Extensions.Primitives** - 基础类型扩展
- **NetCorePal.Extensions.Repository.EntityFrameworkCore** - 仓储模式实现
- **NetCorePal.Extensions.Repository.EntityFrameworkCore.Snowflake** - 雪花算法 ID 生成
## 配置
**环境配置:**
- `appsettings.json` - 基础配置
- `appsettings.Development.json` - 开发环境配置
- `appsettings.Testing.json` - 测试环境配置
**关键配置项:**
```json
{
"ConnectionStrings": {
"DefaultConnection": "Host=81.68.223.70;Port=15432;Database=fengling_auth;..."
},
"Jwt": {
"Issuer": "http://localhost:5132",
"Audience": "fengling-api",
"Secret": "..."
},
"OpenIddict": {
"Issuer": "http://localhost:5132",
"Audience": "fengling-api"
}
}
```
**Docker 配置:**
- 基础镜像:`mcr.microsoft.com/dotnet/aspnet:10.0`
- 构建镜像:`mcr.microsoft.com/dotnet/sdk:10.0`
- 暴露端口80
## 项目结构
**解决方案:**
- `Fengling.AuthService.slnx` - 现代解决方案格式
**项目文件:**
- `src/Fengling.AuthService.csproj` - 主项目文件
- `Directory.Packages.props` - 集中化包版本管理
---
*技术栈分析2026-02-28*