Start Debugging

CV Shortlist: SaaS на .NET 10 с ИИ стал open-source, и стек стоит изучить

CV Shortlist - это open-source SaaS на .NET 10, который сочетает Azure Document Intelligence с моделью OpenAI. Стек, дисциплина конфигурации и граница интеграции с ИИ заслуживают изучения.

Пост по C#, который я сегодня сохранил в закладки, - это не “ещё одно демо-приложение”. Это полноценный, мнение-имеющий SaaS, который был построен как коммерческий продукт, а затем выложен в open-source как образовательная справочная реализация: CV Shortlist.

Источник: CV Shortlist repo и оригинальный пост в r/csharp.

Полезная часть - граница интеграции, а не UI

Большинство примеров приложений с ИИ останавливаются на “вызвать LLM”. Это - документирует реальную границу, от которой зависит судьба продакшен-функций:

Именно эту связку я продолжаю рекомендовать, когда команды спрашивают “как нам сделать RAG по документам?”, не строя хрупкий OCR-пайплайн с нуля: используйте специализированный сервис извлечения, а потом рассуждайте по чистому тексту и полям.

Современный стек .NET 10, перечисленный явно

README освежающе конкретен в отношении версий и инфраструктуры:

Даже если рекрутинговая область вас никогда не интересовала, это реальная справочная реализация для “сколько движущихся частей появляется, как только ИИ перестаёт быть игрушечной функцией”.

Дисциплина конфигурации: user secrets локально, переменные окружения в продакшене

Репозиторий выделяет две практики, которые я хочу видеть стандартом в каждой команде .NET 10:

Вот шаблон, который я ожидаю увидеть в Program.cs в проектах вроде этого:

var builder = WebApplication.CreateBuilder(args);

// Local debugging: dotnet user-secrets
if (builder.Environment.IsDevelopment())
{
    builder.Configuration.AddUserSecrets<Program>(optional: true);
}

builder.Services
    .AddOptions<AiSettings>()
    .Bind(builder.Configuration.GetSection("Ai"))
    .ValidateDataAnnotations()
    .ValidateOnStart();

var app = builder.Build();
app.Run();

public sealed class AiSettings
{
    public required string DocumentIntelligenceEndpoint { get; init; }
    public required string DocumentIntelligenceKey { get; init; }
    public required string FoundryModel { get; init; } // example: gpt-5-mini
}

Дело не в этих именно именах свойств. Дело в том, что границу с ИИ нужно трактовать как любую другую внешнюю зависимость в ASP.NET Core 10, а конфигурацию и валидацию делать скучными.

Почему это важно (даже если вы никогда не делаете HR-софт)

Если вы пытаетесь выпускать ИИ-функции на .NET 10, вам нужны рабочие примеры, которые включают:

CV Shortlist - это компактная справочная реализация “вот как это выглядит, когда вы действительно её строите”. Прочтите README, пробегите по Program.cs и украдите дизайн границы для своей собственной области.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад