Görev oluşturma ve kod uygulama
Teknik planlar mimari yön sağlar, ancak uygulama somut, eyleme dönüştürülebilir adımlar gerektirir. Bu ünite, kurumsal senaryolar için gelişmiş görev oluşturma ve yönetim tekniklerini kapsar.
Görevle ilgili temel bilgileri gözden geçirme
GitHub Spec Kit'in /speckit.tasks komutu, üst düzey mimari kararları tasks.md dosyasındaki belirli iş öğelerine dönüştürür. Her görev bağımsız olarak uygulanabilen, test edilebilen ve doğrulanabilir ayrı bir çalışma birimini temsil eder.
İyi kapsamlı görevlerin temel özellikleri:
- Eyleme dönüştürülebilir: Yapılması gerekenleri açıkça açıklar.
- Test edilebilir: Tamamlama doğrulaması basittir.
- Bağımsız: Tamamlanması için ilişkisiz çalışma beklenmesine gerek yoktur.
- Zaman sınırı: Makul bir zaman diliminde (bir güne kadar saatler) tamamlanabilir.
Aşama tabanlı kuruluş
Karmaşık özellikler görevleri aşamalar halinde düzenlemenin avantajıdır. Örneğin: Kurulum, Temel, Temel İşlevsellik, Kullanıcı Arabirimi/Tümleştirme, Güvenlik ve Test. Her bir aşama, bir kilometre taşına ulaşmaya yönelik ilerleyen mantıksal bir gruplandırmayı temsil eder.
Görev dökümünün avantajları
Görev dökümleri, yalnızca çalışmayı düzenlemenin ötesinde birçok amaca hizmet eder. Bunlar, yapay zekanın özelliklerin tamamını tek işlemlerde uygulamaya çalışmak yerine belirli hedefler için odaklanmış kod oluşturmasına yardımcı olur. Devam etmeden önce kısmi uygulamaları test edebilmeniz için doğal doğrulama noktaları oluşturur. Tam olarak nelerin tamamlanıp nelerin kaldığını göstererek doğru ilerleme izleme olanağı sağlar. Bağımlılıkları açık hale getirerek ekip koordinasyonu kolaylaştırır.
Belge karşıya yükleme özelliği için plan, genel mimari ve teknoloji seçeneklerini açıklar. Görev listesi mimari kararları belirli eylemlere çevirir: veritabanı tablosu oluşturma, API uç noktası uygulama, React bileşeni oluşturma, doğrulama mantığı ekleme, test yazma. Her görev makul bir zaman diliminde tamamlayacak kadar küçükken, anlamlı ilerlemeyi temsil edecek kadar büyüktür.
Görev yapısını ve kuruluşunu inceleme
İyi yapılandırılmış bir görev listesi çalışmayı mantıksal olarak düzenler, bağımlılıkları uygun şekilde sıralar ve uygulama için net rehberlik sağlar.
Aşama tabanlı kuruluş
Karmaşık özellikler, aşama tabanlı düzenlemeden yararlanmaktadır. Her aşama, belirli bir kilometre taşına ulaşmaya yönelik olarak ilgili görevlerin mantıksal bir gruplandırmasını temsil eder.
Belge karşıya yükleme özelliği için tipik bir aşama yapısı şunları içerebilir:
1. Aşama: Temel ve Yapılandırma
- appsettings.json'de Azure Blob Depolama bağlantı yapılandırmasını ayarlayın.
- UYGUN şemayla SQL veritabanında DocumentMetadata tablosunu oluşturun.
- Arka uç projesine Azure.Storage.Blobs NuGet paketini ekleyin.
- Depolama işlemlerini kapsülleyen DocumentService sınıfını oluşturun.
2. Aşama: Temel Karşıya Yükleme İşlevselliği
- DocumentsController'da POST /api/documents/upload uç noktası uygulayın.
- DocumentService'e dosya doğrulama mantığı (boyut, tür) ekleyin.
- Blob depolama yükleme yöntemini hata yönetimi ile uygulayın.
- Karşıya yükleme başarılı olduktan sonra belge meta verilerini veritabanına kaydedin.
- Belge kimliği ve URL ile yükleme sonucunu istemciye döndür.
3. Aşama: Ön Uç Uygulaması
- DocumentUpload React bileşenini dosya girişiyle oluşturun.
- Bileşene dosya boyutu ve tür doğrulaması ekleyin.
- Yükleme ilerleme göstergesini uygula.
- Karşıya yükleme başarı ve hata yanıtlarını işleme.
- Karşıya yükleme başarılı olduktan sonra belge listesini yenileyin.
4. Aşama: Güvenlik ve Doğrulama
- Karşıya yükleme uç noktasına bir Microsoft Entra ID kimlik doğrulama denetimi ekleyin.
- Sihirli sayıları kullanarak sunucu tarafı dosya türü doğrulamayı uygulayın.
- DoS saldırılarını önleyen istek boyutu sınırları ekleyin.
- Dosya uzantılarını izin verilenler listesinde doğrulayın.
- Karşıya yükleme işlemleri için denetim günlüğü ekleyin.
5. Aşama: Test ve Belgeler
- DocumentService karşıya yükleme yöntemleri için birim testleri yazın.
- Tüm yükleme süreci için entegrasyon testi oluşturun.
- Hata senaryosu testleri ekleyin (geçersiz dosya türü, boyut aşıldı).
- OpenAPI/Swagger'da belge API'si uç noktası.
- Yükleme yönergeleriyle kullanıcı belgelerini güncelleştirin.
Bu aşamalı yaklaşım doğal kilometre taşları oluşturur. 2. Aşamadan sonra çalışan ama temel seviyede bir back endiniz olur. 3. Aşamadan sonra kullanıcılar dosyaları karşıya yükleyebilir. 4. aşamadan sonra sistem güvenli ve üretime hazır olur. 5. aşamadan sonra her şey test edilir ve belgelenmiştir.
Görev ayrıntı düzeyi ve kapsamı
Her görevin kapsamı uygun şekilde belirlenmelidir; net bir yön sağlayacak kadar özeldir, ancak açıklayıcı mikro yönetime dönüşecek kadar ayrıntılı olmamalıdır.
İyi tanımlanmış görevler şu özellikleri paylaşır:
- Eyleme dönüştürülebilir: Görev, yapılması gerekenleri açıkça belirtir.
- Test edilebilir: Görevin ne zaman tamamlanabileceğini doğrulayabilirsiniz.
- Mümkün olduğunda bağımsız: Görev, ilgisiz çalışma beklenmeden tamamlanabilir.
- Zaman sınırlamalı: Geliştirici, görevi makul bir zaman diliminde (genellikle haftalar değil, bir güne saatler) tamamlayabilir.
İyi kapsamlı görev örneği: "Çok bölümlü dosya yüklemelerini kabul eden, dosya boyutunun 50 MB'ın altında olduğunu doğrulayan, dosyayı Azure Blob Depolama'da depolayan ve blob URL'sini ve belge kimliğini döndüren POST /api/documents/upload uç noktasını uygulayın."
Bu görev, nelerin derlendiği (uç nokta), neleri kabul ettiği (çok parçalı dosyalar), hangi doğrulamaların uygulanacağı (boyut sınırı), dosyaların nerede depolandığı (Azure Blob Depolama) ve nelerin döndürüleceği (URL ve kimlik) hakkında özeldir. Geliştirici tam olarak ne uygulayacaklarını bilir.
Aşağıda, yetersiz kapsamlı bir görev örneği verilmiştir: "Karşıya yükleme işlemini gerçekleştirin." Bu örnek, "çalışmanın" ne anlama geldiğini veya hangi bileşenlerin dahil olduğu hakkında eyleme dönüştürülebilir bir kılavuz sağlamaz.
Aşırı açıklayıcı bir görev örneği aşağıda verilmiştir: "DocumentsController.cs 47. satırda, parametrelerle UploadDocument adlı bir yöntem ekleyin (IFormFile dosyası, dize userId) ve tam olarak şu adımları kullanarak uygulayın..." Bu görev açıklaması geliştirici kurumunu kaldırır ve gelişen kod yapısını hesaba eklemez.
Görev bağımlılıkları ve sıralama
Görev sırası önemlidir. Bazılarının başlayabilmesi için bazı görevlerin tamamlanması gerekir.
Arka uç kodu şemanın varlığına bağlı olduğundan veritabanı şema değişiklikleri genellikle önce gelir. Arka uç API uç noktaları, bu uç noktaları çağıran ön uç bileşenlerinden önce gelir. Yapılandırma kurulumu, bu yapılandırmayı kullanan kodun başında yer alır. Test, test edilen kod mevcut olduktan sonra gelir.
Görev listesi, engellemeyi en aza indirmek için çalışmayı sıralamalıdır. Ön uç ve arka uç görevleri bağımsızsa paralel olarak devam edebilir. Birden çok arka uç uç noktası varsa, geliştiriciler görevleri eşzamanlı olarak uygulayabilir.
Belgeyi karşıya yükleme özelliği için mantıksal dizi şunları sağlar:
- Yapılandırma ve veritabanı kurulumu önce gerçekleşir (bağımlılık yoktur).
- Arka uç API'si uygulaması veritabanı kurulumunu izler (şemaya bağlıdır).
- Ön uç bileşenleri API uygulamasını izler (mevcut uç noktalara bağlıdır).
- Güvenlik sağlamlaştırma, çekirdek işlevselliğin ardından gerçekleşir (mevcut koda bağlıdır).
- Test, tüm uygulamalardan sonra gerçekleşir (tamamlanan koda bağlıdır).
Bu görev dizisi, ilgisiz çalışmanın tamamlanmasını beklemeden sürekli ilerlemeye olanak tanır.
/speckit.tasks kullanarak görev oluşturma
GitHub Spec Kit, GitHub Copilot Chat'teki komutu aracılığıyla /speckit.tasks görev listeleri oluşturur. Bu komut, uygulama görevlerinin kapsamlı ve sıralı bir listesini oluşturmak için hem spec.md hem de plan.md işler.
Yapay zeka, nelerin oluşturulması gerektiğini anlamak için belirtimi analiz eder, mimari yaklaşımı anlamak için planı inceler ve bu belgelerle gerçek kod arasındaki boşluğu kapatan görevler oluşturur. Sonuçta elde edilen tasks.md dosyası, genellikle karmaşık özellikler için aşamalar halinde düzenlenmiş numaralandırılmış veya madde işaretli görevler içerir.
Görev oluşturma komutunu çağırma
Visual Studio Code'da GitHub Copilot Sohbet'i açın ve /speckit.tasks yazın. GitHub Copilot, belirtimi işler ve yapılandırılmış bir görev listesi oluşturmayı planlar. Oluşturma işlemi genellikle birkaç dakika içinde tamamlayarak uygulama çalışmalarının kapsamlı bir dökümünü oluşturur.
Görev listesi, belirtim ve planınızdan bağlamı otomatik olarak devralır. Plan "Azure Blob Depolama'yı kullan" seçeneğini belirtiyorsa, oluşturulan görevler blob depolama bağlantılarını yapılandırma, karşıya yükleme mantığı uygulama ve depolama hatalarını işlemeye yönelik belirli adımları içerir.
Görev listesini gözden geçirme ve doğrulama
Görev listesi, eksiksiz ve doğru olduğundan emin olmak için kritik gözden geçirme gerektirir.
Plan öğelerinin kapsamını doğrulama
tasks.md ile plan.md sistematik olarak karşılaştırın. Plandaki her mimari karar ve uygulama adımı bir veya daha fazla görevle ilgili olmalıdır.
Plan "sunucu tarafı doğrulaması uygula" seçeneğini belirtiyorsa, belirli görevler dosya türü doğrulamayı, dosya boyutu doğrulamayı ve hata yanıtı işlemeyi kapsamalıdır. Planda "denetim günlüğü" belirtiliyorsa, bir görev yükleme işlemleri için günlük girdileri oluşturmayı ele almalıdır.
Eksik görevler, tamamlanmamış oluşturma veya somut işlere çevrilmeyen plan öğelerini gösterir. Görevleri el ile ekleyerek veya daha fazla bağlam sağlayarak ve yenileyerek bu sorunu çözün.
Mantıksal boşlukları denetleme
Planda belirgin olmayan ancak uygulama ayrıntıları göz önünde bulundurulduğunda belirgin hale gelen işlev boşluklarını arayın.
Yaygın boşluklar şunlardır:
- Hata işleme: Ağ hatalarını, depolama hatalarını veya veritabanı sorunlarını işlemeye yönelik görevler var mı?
- Uç durumlar: Kullanıcılar aynı adlara sahip dosyaları yüklediklerinde ne olur? Eşzamanlı yüklemeler nasıl yönetilir?
- Yapılandırma: Bağlantı dizeleri, API anahtarları ve hizmet uç noktaları düzgün yapılandırıldı mı?
- Kullanıcı geri bildirimi: Kullanıcılar karşıya yüklemelerin ne zaman tamamlanmasını veya başarısız olduğunu nasıl bilir?
- Veri temizleme: Bir karşıya yükleme kısmen başarılı olup ardından başarısız olursa, temizleme işlemi yapılır mı?
Gözden geçirme sırasında bu boşlukları belirleyin ve uygulama başlamadan önce uygun görevleri ekleyin.
Görev sırasını ve bağımlılıkları değerlendirme
Görevlerin uygun şekilde sıralandığını doğrulayın. Veritabanı şema görevleri, bu tablolara erişen kodun önüne olmalıdır. API uç noktası görevleri, bu uç noktaları çağıran ön uç bileşenlerden önce olmalıdır.
Görevlerin sıradan çıktığını fark ederseniz, bunların sırasını elle yeniden düzenleyebilirsiniz. Örneğin, karşılık gelen arka uç görevinden önce bir ön uç görevi görünüyorsa, bunu uygun aşamaya taşıyın.
Aynı aşamadaki görevler arasındaki bağımlılıkları göz önünde bulundurun. Bir görevin çıkışı başka bir görev için gerekliyse, ilk görevin dizinin daha başında göründüğünden emin olun.
Görev ayrıntı düzeyini doğrulama
Her görevin uygun kapsamlara sahip olduğundan emin olun. Çok büyük olan görevler ("arka ucun tamamını uygulayın") daha küçük, yönetilebilir parçalara ayrılmalıdır. Çok küçük olan görevler ("42. satıra noktalı virgül ekleyin") daha anlamlı birimler halinde birleştirilmelidir.
İyi kapsamlı bir görevin tamamlanması genellikle birkaç saat ile bir gün arasında sürer, bağımsız olarak test edilebilir ve gösterilebilir ilerleme sağlar.
Uygulamaları yönlendirmek için görevleri kullanma
doğrulandıktan sonra tasks.md uygulama yol haritanız olur.
Görevler arasında sistematik ilerleme
Sonrakine geçmeden önce görevleri sırayla tamamlayarak çalışın. Bu disiplinli yaklaşım hiçbir şeyin atlanmamasını sağlar ve net ilerleme göstergeleri sağlar.
Her görevi tamamladığınızda:
- Gerekli işlevselliği uygulayın.
- Doğruluğu doğrulamak için uygulamayı test edin.
- Görevi tamamlandı olarak işaretleyin (bir onay kutusu ekleyin veya üstünü çizin).
- Değişikliklerinizi göreve referansla commitleyin.
Bu sistematik yaklaşım, tamamlanan çalışmayı belirli görevlere bağlayan net bir denetim izi oluşturur.
İlerleme durumunu izleme ve durumu iletme
Görev listesi ilerlemenin nesnel bir ölçüsünü sağlar. 30 görevden 15'i tamamlanırsa, özellik yaklaşık 50% uygulanır. Bu ölçüm, proje planlama ve paydaş iletişimi konusunda yardımcı olur.
Tamamlananları ve kalanları iletmek için ekibinizle tasks.md paylaşın. Ekip üyeleri, hangi alanların ilgilenmesi gerektiğini ve gözden geçirme çalışmalarının nereye odaklanacaklarını bir bakışta görebilir.
Uygulama sırasında görevleri uyarlama
Uygulama yeni gereksinimleri veya daha iyi yaklaşımları ortaya koyuyorsa, tasks.md uygun şekilde güncelleştirin. Görev listesi, güncel olmayan bir planı değil, gerçekliği yansıtmalıdır.
Görevleri ekip üyeleri arasında dağıtma
Görev tanımlarını temizleme, birden çok geliştirici arasında iş dağıtımına olanak sağlar. Ön uç ekibi kullanıcı arabirimi bileşenleri oluştururken arka uç ekibi API görevleri üzerinde çalışabilir. Veritabanı yöneticileri, geliştiriciler yapılandırmayı hazırlarken şemaları ayarlayabilir.
Görev bağımlılıklarını açıkça çağırmak engellemeyi önlemeye yardımcı olur. B Görevi A Görevine bağlıysa, A Görevinin uygun şekilde atandığından ve önceliklendirildiğinden emin olun. Görevlerde süreçlerin sorunsuz olması için belge tamamlama ölçütlerini belgeleyin.
/speckit.implement kullanarak kod oluşturma
komutu, /speckit.implement kodu sistematik olarak oluşturmak için tasks.md kullanır. Yapay zeka, özelliklerin tamamını tek geçişte uygulamaya çalışmak yerine görevler üzerinde sırayla çalışır. Bu yaklaşım daha odaklanmış ve doğru kod üretir.
Belirli bir görev numarası, görev aralığı veya tasks.md dosyasından alınan uygulamanın açıklamasıyla çağırabilirsiniz /speckit.implement . Yapay zeka, genel mimari ve gereksinimlerle uyumlu kod oluşturmak için spec.md, plan.md ve tasks.md başvurur.
Örneğin, belge yükleme uç noktasını uygulamak için şunları girebilirsiniz:
/speckit.implement Implement the MVP first strategy (Tasks: T001 - T027)
Bu komut, yapay zekaya T001 ile T027 arasında görevlere odaklanmasını ve her görevin gereksinimlerini sırayla karşılayan kod oluşturmasını sağlar.
Uygulama sırasında yardım sağlama
Yapay zeka, belirli görevlere devam etmek için yardım veya izin gerektirebilir. Örneğin, bir görevin oluşturulması veya çalıştırılması gerekiyorsa, yapay zeka devam etmeden önce onay isteyebilir.
Buna ek olarak, yapay zeka bir görevin uygulanmasını test ederken bir hata bulabilir. Sorunu tanılamaya yardımcı olmak için ayrıntılı bilgi sağlayın. Yapay zeka belirsizliklerle karşılaşırsa ek bağlam veya netleştirmeler de sağlayabilirsiniz.
Sohbet görünümünde yardım istendiğinde, hızlı bir yanıt uygulamanın sorunsuz bir şekilde ilerlemesine yardımcı olur.
Doğrulama denetim noktaları
Uygulama komutunu tamamladıktan sonra devam etmeden önce sonuçları doğrulayın. Uygulamayı çalıştırın, testleri yürütür ve her görevin uygulandığını ve hedefine ulaşıldığını onaylayın. Bu artımlı doğrulama, düzeltmesi en kolay olan sorunları erken yakalar.
Görevler arasında bağlamın korunması
Siz görevler arasında ilerledikçe, daha önce tamamlanan çalışma sonraki görevler için bağlam sağlar. Yapay zeka, ilgili işlevleri oluştururken, kod kalitesini geliştirirken ve mimari tutarlılığı korurken önceki uygulamalara başvurabilir.
Uygulama sırasında görevle ilgili zorlukları yönetme
Uygulama görevlerini yönetirken sık karşılaşılan zorluklar ortaya çıkar.
Kapsamda büyüyen görevler
Bir görev uygulama sırasında beklenmeyen karmaşıklık ortaya çıktığında duraklatın ve yeniden değerlendirin. Şişirilmiş görevi birden çok küçük göreve bölün. tasks.md gerçek kapsamı yansıtacak şekilde güncelleştirin. Kapsam genişletmeyi paydaşlara iletin.
Engellenen görevler
Görevler bazen dış bağımlılıklar tarafından engellenir. Engellenen görevleri tasks.md'de engelleme nedenleriyle açıkça işaretleyin: "ENGELLİ: Azure Blob Depolama kapsayıcısı hazırlanması bekleniyor - bilet #1234." Unutulmamalarını sağlamak için engellenen görevleri ayrı olarak takip edin.
Öncelikleri değiştirme
İş ihtiyaçları gelişiyor. Önceliklerin değişmesi halinde tasks.md uygun şekilde güncelleştirin. Görevlerinizi yeni öncelikleri yansıtan şekilde yeniden sıralayabilirsiniz. Yeni gereksinimler için yeni görevler ekleyin. Artık değerli olmayan görevleri ertelemeyi veya kaldırmayı göz önünde bulundurun.
Uygulama sırasında bulunan görev belirsizliği
Belirsizlik ortaya çıktığında uygulamayı duraklatıp açıklamaya bakın. Özgün amacı anlamak için belirtimi ve planı gözden geçirin. Devam etmeden önce görev açıklamasını belirli, belirsiz bir dille güncelleştirin.
Özet
Görev oluşturma, mimari planları eyleme dönüştürülebilir uygulama adımlarına dönüştürür. Görev listeleri oluşturmak için /speckit.tasks kullanarak uygulama çalışmalarının yapılandırılmış, aşama tabanlı ayrıntılarını oluşturun. Kapsamlı kapsam, mantıksal sıralama ve uygun ayrıntı düzeyi sağlamak için oluşturulan görevleri kritik olarak gözden geçirin. Sistematik uygulamaya yol göstermek, ilerleme durumunu izlemek ve ekip çalışmalarını koordine etmek için doğrulanmış görev listesini kullanın.
spec.md, plan.md ve tasks.md birleşimi eksiksiz bir geliştirme çerçevesi oluşturur. Spesifikasyon, ne yapılacağını ve neden yapılması gerektiğini tanımlar. Plan, mimari olarak nasıl oluşturacaklarını tanımlar. Görevler, derlemeyi yürütmek için belirli adımları tanımlar. Bu yapıtlar birlikte, belirsiz gereksinimleri uygulama boyunca proje hedefleriyle uyumu koruyan somut, izlenebilir geliştirme çalışmalarına dönüştürür.