Compare commits

...
10 Commits
6 changed files with 57 additions and 3 deletions
+33
View File
@@ -0,0 +1,33 @@
name: kalite-kontrol
on: [push]
jobs:
kontrol:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Kodu indir
uses: actions/checkout@v4
with:
github-server-url: https://gitea.twinpay.one
- name: Çakışma işareti kalmamış olmalı
run: |
if grep -rn '^<<<<<<< ' --include='*.js' --include='*.html' --include='*.md' .; then
echo 'HATA: çözülmemiş çakışma işareti var!'; exit 1
fi
echo 'temiz: çakışma işareti yok'
- name: Sessiz bozulma dersi — tanımsız çağrı olmasın
run: |
grep -q 'function sonFiyat' fiyat.js
if grep -rn 'indirimliFiyat(' --include='*.js' .; then
echo 'HATA: tanımsız fonksiyon çağrısı (indirimliFiyat)'; exit 1
fi
echo 'temiz: tüm çağrılar tanımlı'
- name: Çöp tarihe girmemiş olmalı
run: |
if git ls-files | grep -E '^(node_modules/|.*\.log$)'; then
echo 'HATA: izlenmemesi gereken dosya izleniyor!'; exit 1
fi
echo 'temiz: node_modules ve loglar izlenmiyor'
+18
View File
@@ -8,3 +8,21 @@ Sayfadaki "Atölye" bölümü bu deponun her adımını kod kod gösterir.
## Nasıl çalışır? ## Nasıl çalışır?
fiyat.js fiyatı hesaplar, sepet.js ürünleri toplar. index.html ikisini yükler. fiyat.js fiyatı hesaplar, sepet.js ürünleri toplar. index.html ikisini yükler.
## SSS
- Fiyatlar KDV dahil mi? kdvliFiyat() ile evet.
## Canlı adres ve zincir
Bu depo Gitea'ya bağlıdır ve Coolify tarafından yayınlanır:
push → robot testler (CI) → deploy → bekçi (push-denetim) PASS.
## Saha Defteri töresi (bu projeye özel tek fark)
Bu projede edit yapan HER AI (hangi bilgisayar/araç olursa olsun) işi bitince
ortak sayfaya (Projelerimiz/.ai-ortak/kod-yolculugu-3d.html) bir SAHA DEFTERİ
kaydı ekler: kim, hangi makine/araç, ne yaptı, ne yaşadı. Yöntem: önce ai-ortak
ışığını al, sayfadaki SAHA_DEFTERI dizisine tek nesne ekle, ışığı bırak.
Ayrıca HERHANGİ bir projede o sayfadaki bir vaatle ilgili sorun yaşayan AI da
tur:"sorun" kaydı düşer. Pasif özellik kontrolü: .ai-ortak/pasif-ozellikler.json
+1 -1
View File
@@ -5,7 +5,7 @@ function sonFiyat(fiyat) {
return fiyat - (fiyat * INDIRIM / 100); return fiyat - (fiyat * INDIRIM / 100);
} }
const KDV = 20; // yüzde const KDV = 10; // yüzde — gıda indirimi kaldı (rebase çözümü: dalın niyeti korundu)
function kdvliFiyat(fiyat) { function kdvliFiyat(fiyat) {
return fiyat + (fiyat * KDV / 100); return fiyat + (fiyat * KDV / 100);
+1
View File
@@ -13,5 +13,6 @@
</div> </div>
<script src="fiyat.js"></script> <script src="fiyat.js"></script>
<script src="sepet.js"></script> <script src="sepet.js"></script>
<footer>Atölye Dükkânı — eğitim amaçlı örnek</footer>
</body> </body>
</html> </html>
+1 -1
View File
@@ -1,5 +1,5 @@
// Kargo hesabı // Kargo hesabı
const KARGO_UCRETI = 0; // TL — HERKESE BEDAVA! (yanlışlıkla) const KARGO_UCRETI = 49.90; // TL
const KARGO_BEDAVA_SINIRI = 500; // TL üzeri bedava const KARGO_BEDAVA_SINIRI = 500; // TL üzeri bedava
function kargoUcreti(sepetTutari) { function kargoUcreti(sepetTutari) {
+3 -1
View File
@@ -1,5 +1,7 @@
// Sepet — ürünleri toplar // Sepet — ürünleri toplar
const sepet = []; const sepet = [];
const KUPON_INDIRIMI = 50; // TL — SEPET50 kuponu
const HEDIYE_CEKI = 100; // TL — hediye çeki bakiyesi
function sepeteEkle(urun, fiyat) { function sepeteEkle(urun, fiyat) {
sepet.push({ urun: urun, fiyat: fiyat }); sepet.push({ urun: urun, fiyat: fiyat });
@@ -10,5 +12,5 @@ function sepetToplami() {
} }
function sepetIndirimliToplam() { function sepetIndirimliToplam() {
return sonFiyat(sepetToplami()); return sonFiyat(sepetToplami()) - HEDIYE_CEKI - KUPON_INDIRIMI; // harman: önce çeki, sonra kupon
} }