Hatcher Actions: قضاوت قانون اساسی شما
Actions دروازههای کیفیت اکوسیستم Hatcher هستند—قضات قانون اساسی که تعیین میکنند آیا کد شما با استانداردهای شما مطابقت دارد یا خیر. آنها گردشهای کار یا فرآیندها نیستند؛ آنها اعتبارسنجهای atomic و قطعی هستند که به یک سؤال ساده پاسخ میدهند: "قبول یا رد؟"
Actions چیست؟
Actions هستند:
- اعتبارسنجهای Atomic: بررسیهای تکهدفه که یک جنبه خاص را اعتبارسنجی میکنند
- قطعی: همیشه برای ورودی یکسان نتیجه یکسان تولید میکنند
- دوتایی: فقط "قبول" یا "رد" (با جزئیات) بازمیگردانند
- سریع: برای بازخورد سریع طراحی شدهاند، نه پردازش پیچیده
آنها چکپوینت نهایی هستند که اطمینان میدهند هر قطعه کد به قانون اساسی پروژه شما احترام میگذارد.
نقش در سلسلهمراتب
درک Actions نیاز به درک جایگاه آنها در فلسفه Hatcher دارد:
- Playbooks (استراتژی): تعریف میکنند چه استانداردهایی میخواهید اجرا کنید
- Autopilots (تاکتیک): اجرا میکنند چگونه آن استانداردها را پیادهسازی کنید
- Actions (قضاوت): اعتبارسنجی میکنند آیا پیادهسازی با استانداردها مطابقت دارد
# جریان کامل
playbook: 'ما از Vue 3 با TypeScript استفاده میکنیم'
autopilot: 'یک کامپوننت Vue 3 با TypeScript تولید کنید'
actions: 'type-check، lint و test را برای تأیید صحت اجرا کنید'
Actions اصلی
Hatcher Actions ضروری برای دروازههای کیفیت جهانی فراهم میکند:
Actions امنیت نوع
actions:
- name: types:validate
description: تأیید کامپایل TypeScript
command: tsc --noEmit
pass_criteria: exit_code == 0
- name: types:strict
description: اجرای قوانین TypeScript سخت
command: tsc --strict --noEmit
pass_criteria: exit_code == 0
Actions کیفیت کد
actions:
- name: lint:check
description: تأیید کد با استانداردهای linting
command: eslint . --max-warnings 0
pass_criteria: exit_code == 0
- name: format:verify
description: بررسی قالببندی کد
command: prettier --check .
pass_criteria: exit_code == 0
Actions تست
actions:
- name: test:unit
description: اجرای تستهای واحد
command: npm test
pass_criteria: exit_code == 0
- name: test:integration
description: اجرای تستهای یکپارچهسازی
command: npm run test:integration
pass_criteria: exit_code == 0
- name: coverage:verify
description: اطمینان از رسیدن پوشش تست به آستانه
command: npm run test:coverage
pass_criteria: coverage >= 80
Actions امنیت
actions:
- name: security:audit
description: بررسی آسیبپذیریهای شناختهشده
command: npm audit --audit-level=moderate
pass_criteria: exit_code == 0
- name: secrets:scan
description: اطمینان از نبود راز در کد
command: trufflehog scan .
pass_criteria: no_secrets_found
Actions عملکرد
actions:
- name: bundle:size
description: تأیید محدودیتهای اندازه بسته
command: bundlesize
pass_criteria: all_bundles_under_limit
- name: performance:lighthouse
description: بررسی امتیازهای Lighthouse
command: lighthouse-ci
pass_criteria:
performance: >= 90
accessibility: >= 95
Actions سفارشی
Actions خاص پروژه را در hatcher.config.json
خود تعریف کنید:
{
"actions": {
"custom:api-contracts": {
"description": "اعتبارسنجی قراردادهای API",
"command": "./scripts/validate-api.sh",
"pass_criteria": "exit_code == 0"
},
"custom:db-migrations": {
"description": "تأیید مهاجرتهای پایگاه داده",
"command": "npm run migrate:verify",
"pass_criteria": "exit_code == 0"
},
"custom:i18n-complete": {
"description": "بررسی کامل بودن ترجمه",
"command": "i18n-validator",
"pass_criteria": "missing_keys == 0"
}
}
}
اجرای Action
Actions فردی
Actions خاص را به صورت درخواستی اجرا کنید:
# اجرای یک action واحد
hatcher action run test:unit
# اجرا با خروجی verbose
hatcher action run lint:check --verbose
# اجرا با پارامترهای سفارشی
hatcher action run coverage:verify --threshold=90
گروههای Action
Actions مرتبط را با هم اجرا کنید:
# اجرای تمام actionsهای تست
hatcher action run-group testing
# اجرای actionsهای pre-commit
hatcher action run-group pre-commit
# اجرای اعتبارسنجیهای استقرار
hatcher action run-group deploy-checks
پیکربندی Action
گروههای Action را در پیکربندی خود تعریف کنید:
{
"actionGroups": {
"pre-commit": [
"format:verify",
"lint:check",
"types:validate",
"test:unit"
],
"pre-deploy": [
"test:integration",
"coverage:verify",
"security:audit",
"bundle:size"
],
"quality": ["lint:check", "types:strict", "coverage:verify"]
}
}
نتایج Action
Actions بازخورد ساختاریافته فراهم میکنند:
{
"action": "test:unit",
"status": "fail",
"duration": 3420,
"details": {
"total_tests": 142,
"passed": 140,
"failed": 2,
"failures": [
{
"test": "UserService.authenticate",
"error": "Expected true, received false",
"file": "services/user.spec.ts",
"line": 47
}
]
},
"suggestion": "تستهای شکستخورده را قبل از commit رفع کنید"
}
یکپارچهسازی با Autopilots
Autopilots از Actions به عنوان چکپوینتهای کیفیت استفاده میکنند:
# در یک گردش کار Autopilot
name: پیادهسازی ویژگی
steps:
- name: تولید کد
action: ai.create
- name: چکپوینت کیفیت
action: run.actions
actions:
- lint:check # باید قبول شود
- types:validate # باید قبول شود
- test:unit # باید قبول شود
fail_fast: true # توقف در اولین شکست
- name: Commit در صورت قبولی کیفیت
action: git.commit
condition: ${steps.quality_checkpoint.passed}
سیاستهای Action
تعریف کنید Actions چه زمانی اجباری هستند:
{
"policies": {
"pre-commit": {
"required": ["lint:check", "types:validate"],
"recommended": ["test:unit"]
},
"pre-merge": {
"required": ["test:unit", "test:integration", "coverage:verify"],
"threshold": {
"coverage": 80,
"performance": 85
}
},
"pre-deploy": {
"required": ["security:audit", "test:integration", "bundle:size"],
"block_on_failure": true
}
}
}
بهترین شیوهها
اصول طراحی Action
- مسئولیت واحد: هر Action دقیقاً یک چیز را اعتبارسنجی میکند
- اجرای سریع: Actions باید در ثانیهها کامل شوند، نه دقیقهها
- پیامهای شکست واضح: بازخورد قابل اجرا در شکستها فراهم کنید
- قطعی: ورودی یکسان همیشه نتیجه یکسان تولید میکند
- بدون اثرات جانبی: Actions اعتبارسنجی میکنند اما تغییر نمیدهند
بهینهسازی عملکرد
- اجرای موازی: Actions مستقل را به طور همزمان اجرا کنید
- بررسیهای تدریجی: فقط فایلهای تغییریافته را در صورت امکان اعتبارسنجی کنید
- Caching: نتایج را برای کد تغییرنیافته cache کنید
- خروج زودهنگام: سریع در نقضهای حیاتی شکست بخورید
مدیریت خطا
Actions باید پیامهای خطای واضح و قابل اجرا فراهم کنند:
{
"action": "lint:check",
"status": "fail",
"message": "مسائل کیفیت کد شناسایی شد",
"fixes": {
"automatic": "برای رفع خودکار 12 مسئله 'npm run lint:fix' را اجرا کنید",
"manual": "3 مسئله نیاز به مداخله دستی دارند",
"details": [
{
"file": "src/components/Header.vue",
"line": 25,
"rule": "no-unused-vars",
"message": "'oldValue' تعریف شده اما هرگز استفاده نشده"
}
]
}
}
قدرت قضاوت قانون اساسی
Actions نگهبانان کیفیت کد شما هستند—استانداردهای غیرقابل مذاکره که هر قطعه کد باید برآورده کند. آنها پیشنهاد یا راهنما نیستند؛ قانون قانون اساسی codebase شما هستند.
با جداسازی اعتبارسنجی (Actions) از پیادهسازی (Autopilots) و استراتژی (Playbooks)، Hatcher یک سیستم واضح، قابل نگهداری و مقیاسپذیر برای اطمینان از کیفیت کد ایجاد میکند.
به یاد داشته باشید: Actions ایجاد یا تغییر نمیدهند—قضاوت میکنند. و قضاوت آنها نهایی است.
استانداردهای خود را به طور خودکار اجرا کنید
قوانین اعتبارسنجی تغییرناپذیری بسازید که کیفیت کد شما را محافظت میکنند