مدیریت کارهای چندفایلی با تعیین مرزهای مشخص در Copilot Agent Mode
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۵/۲۹ ۱۳:۰۰
آدرس: www.dntips.ir
dotnet test و dotnet build) را اجرا کند و در صورت بروز خطا، خودکار به تصحیح کدها بپردازد. با این حال، قدرت بالای Agent Mode در صورت عدم تعیین مرز، میتواند به یک ضدالگو تبدیل شود.برای اندپوینت CreateOrder فرآیند اعتبارسنجی درخواست (Request Validation) را با شرایط زیر پیادهسازی کن:الزامات اجرایی:
۱. بررسی قراردادهای موجود: فایلهای پوشه Validators/ را بررسی کن تا از ساختار جاری FluentValidation الگوبرداری شود.۲. پیادهسازی اعتبارسنجی: کلاسCreateOrderRequestValidatorرا برای اعتبارسنجی مدلCreateOrderRequestاضافه کن (بررسی مقادیر مثبت، نامعتبر نبودن شناسهها و عدم تهی بودن آیتمها).
۳. تستنویسی: بر اساس ساختار تستهای موجود در پروژه MyApp.UnitTests، تستهای اعتبارسنجی مربوطه را بنویس.۴. اجرا و اعتبارسنجی خودکار: تستهای مربوط به این اعتبارسنجی را با دستور dotnet test اجرا کن و در صورت شکست، کدها را اصلاح کن تا تمام تستها پاس شوند.۵. مرزهای تغییر (Fence): هیچ فایل نامرتبطی را خارج از ماژول Orders و پروژه تست آن ویرایش نکن.۶. گزارش پایانی: در پایان، خلاصه فایلهای ایجادشده و تغییریافته را فهرست کن.
[تحلیل الگوها در Validators/]
│
▼
[ایجاد CreateOrderRequestValidator.cs]
│
▼
[ثبت یا ارجاع در پایپلاین کنترلر]
│
▼
[نگارش CreateOrderValidatorTests.cs]
│
▼
[اجرای ترمینال: dotnet test --filter CreateOrderValidatorTests]
│
▼
[اصلاح کدهای تست یا ولیدیتور در صورت شکست]
│
▼
[گزارش موفقیت و فهرست فایلهای تغییریافته]namespace MyApp.Application.Orders.Validators;
public sealed class CreateOrderRequestValidator : AbstractValidator<CreateOrderRequest>
{
public CreateOrderRequestValidator()
{
RuleFor(x => x.CustomerId)
.NotEmpty()
.WithMessage("CustomerId is required.");
RuleFor(x => x.Items)
.NotEmpty()
.WithMessage("The order must contain at least one item.");
RuleForEach(x => x.Items).ChildRules(items =>
{
items.RuleFor(i => i.ProductId).NotEmpty();
items.RuleFor(i => i.Quantity).GreaterThan(0);
items.RuleFor(i => i.UnitPrice).GreaterThan(0m);
});
}
}namespace MyApp.UnitTests.Validators;
public sealed class CreateOrderRequestValidatorTests
{
private readonly CreateOrderRequestValidator _validator = new();
[Fact]
public void Should_Have_Error_When_Items_Are_Empty()
{
var request = new CreateOrderRequest(Guid.NewGuid(), []);
var result = _validator.TestValidate(request);
result.ShouldHaveValidationErrorFor(x => x.Items);
}
}dotnet test یا dotnet build که هوش مصنوعی بتواند خودش نتیجه را بررسی و در صورت نیاز تکرار کند).