إنشاء بيئة أتمتة لإدخال كود الواجهة الأمامية المنشأ بواسطة الذكاء الاصطناعي مباشرة إلى بيئة الإنتاج

Computing/Software11분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: هذه المهارة جعلت Kimi K3 مصممًا أفضل بـ 10 أضعاف · AI LABS

عند مشاهدة مقاطع الفيديو التوضيحية لأدوات الذكاء الاصطناعي، ترى واجهات مستخدم مذهلة تظهر بمجرد النقر على بضعة أزرار وكتابة بعض الجمل. لكن المشكلة تكمن في الواقع. في اللحظة التي تجلب فيها الكود الذي أنتجه الذكاء الاصطناعي إلى مشروعك الحالي، تتفكك التنسيقات (Styles) بالكامل وتتشابك إدارة الحالة (State Management). أفكِرُ أن الجميع قد مروا بتجربة إمضاء ضعف وقت التطوير لمجرد تعديل هذا الكود والتعامل معه.

في النهاية، ولكي تتمكن من استخدام كود الذكاء الاصطناعي كما هو، يجب عليك ربط التحليل الثابت (Static Analysis)، وهيكلة الحالة، والتحقق البصري في حواجز حماية (Guardrails) المؤتمتة. إليك إعدادات محددة تجلب الكود في حالة جاهزة للاستخدام فورًا دون الحاجة لقضاء الليل في إصلاحه.

التخلص من فئات Tailwind العشوائية والتنسيقات المضمنة (Inline Styles)

على الرغم من فهم الذكاء الاصطناعي للسياق جيدًا، إلا أنه قد يمتنع فجأة عن احترام رموز (Tokens) المشروع. فهو يدخل قيمًا عشوائية بين أقواس مربعة مثل w-[327px] أو يدرج تنسيقات مضمنة تتضمن رموزًا ست عشرية (Hex codes) كما يحلو له. يؤدي هذا إلى انهيار نظام التصميم دفعة واحدة وتداخل أسبقية CSS.

البحث عن هذه الأخطاء وإصلاحها يدويًا بعين المجردة أمر بطيء. يجب عليك إغلاق الطريق في وجهها باستخدام Linter.

  1. قم بتركيب الحزم المطلوبة للمشروع.
    `bash
    npm install -D eslint-plugin-tailwindcss @html-eslint/eslint-plugin

`

  1. أضف القواعد التي تلتقط القيم العشوائية بين الأقواس المربعة والتنسيقات المضمنة كأخطاء في ملف eslint.config.mjs.
  2. قم بتسجيل npx eslint --fix في سكربت Package وتشغيله فور استلام الكود.

عند إعداد الأمر بهذه الطريقة، بمجرد دخول الأقواس المربعة أو التنسيقات المضمنة، سيعتبرها Linter خطأً ويستبدلها قسرًا بأقرب فئات فائدة قياسية (Standard Utility Classes). وبإزالة هذه الأعمال الروتينية، تم توفير أكثر من 5 ساعات أسبوعيًا من الوقت الذي كان يضيع في ضبط التنسيقات.

`javascript
// eslint.config.mjs
import eslintPluginTailwindcss from "eslint-plugin-tailwindcss";
import { defineConfig } from "eslint/config";

export default defineConfig([
{
plugins: {
tailwindcss: eslintPluginTailwindcss,
},
settings: {
tailwindcss: {
cssConfigPath: "./styles/tailwind.css",
},
},
rules: {
"tailwindcss/no-arbitrary-value": "error",
"tailwindcss/no-custom-classname": [
"error",
{ whitelist: ["custom-*"] },
],
"tailwindcss/classnames-order": "warn",
},
},
]);

`

قاعدة Linting طريقة الفحص مثال على الهدف الممنوع نتيجة التصحيح التلقائي
@html-eslint/no-inline-styles حظر JSX Inline Styles <div style={{color: '#ff0a00'}}> <div className="text-destructive">
tailwindcss/no-arbitrary-value حظر القيم العشوائية بين الأقواس المربعة <button className="w-[327px]"> <button className="w-80">
tailwindcss/no-custom-classname اكتشاف أسماء الفئات غير المسجلة <div className="my-custom-card"> <div className="rounded-lg border bg-card shadow-sm">

تنظيم useState المنسكبة داخل المكونات

عندما تطلب من الذكاء الاصطناعي إنشاء مكون React، فإنه في تسع حالات من أصل عشر يتسبب في تبعثر ثلاثة أو أربعة من useState داخل ملف واحد. وإذا تناثرت معها استدعاءات API غير المتزامنة ومعالجة الأخطاء، تتفجر قنبلة إعادة العرض (Rendering Bomb).

يجب تجميع حالة واجهة المستخدم في العميل باستخدام Zustand، وفصل بيانات الخادم باستخدام React Query. أما بالنسبة لنماذج الإدخال، فيتم تثبيت هيكلها بدمج Zod مع react-hook-form.

  1. قم بتثبيت المكتبات الاعتمادية.
    `bash
    npm install @tanstack/react-query zod react-hook-form @hookform/resolvers

`

  1. امنع الاستخدام المباشر لـ fetch في مخطط موجه الذكاء الاصطناعي (AI Prompt Schema)، واجعله يحدد الأنواع أولاً باستخدام مخطط Zod.
  2. قم بربط zodResolver بـ react-hook-form لأتمتة التحقق، وقم بضبط الهيكل لاستدعاء useMutation عند الإرسال (submit).

ستختفي عمليات إعادة العرض غير الضرورية تمامًا. ولن تتمكن أخطاء التحقق من صحة المدخلات حتى من التسلل إلى داخل المكون.

`typescript
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';

export const userProfileSchema = z.object({
username: z.string().min(2, { message: '이름은 최소 2자 이상이어야 합니다.' }),
email: z.string().email({ message: '올바른 이메일 형식이 아닙니다.' }),
role: z.enum(['admin', 'user'], { required_error: '역할을 선택하세요.' }),
});

export type UserProfileInputs = z.infer;

export function ProfileForm() {
const {
register,
handleSubmit,
formState: { errors },
} = useForm({
resolver: zodResolver(userProfileSchema),
});

const onSubmit = (data: UserProfileInputs) => {
// React Query Mutation 실행
};

return (


{/* 폼 레이아웃 */}

);
}

`

المجال النمط المضاد للذكاء الاصطناعي (Anti-pattern) الهيكل المحسن الفائدة
حالة العميل useState المشتتة مخزن Zustand موحد منع إعادة العرض غير الضرورية
بيانات الخادم fetch داخل useEffect تغليف React Query التخزين المؤقت التلقائي والمعالجة التصريحية للتحميل
التحقق من النموذج الفحص الشروطي اليدوي Zod + react-hook-form أمان الأنواع وأتمتة التحقق

حلقة اختبار تلتقط تشوه الشاشة بصريًا

في كثير من الأحيان، تنظر إلى شاشة سطح المكتب وتقول "أوه، تبدو جيدة"، ولكن عندما تفتحها على الهاتف المحمول، تجد التخطيط مفككًا تمامًا. وفقًا لتقرير إمكانية الوصول إلى الويب لعام 2025 الصادر عن WebAIM، هناك متوسط أكثر من 51 خطأ WCAG في الصفحات الرئيسية لأعلى مليون موقع وحدها. ناهيك عن الكود الذي تم إنتاجه للتو بواسطة الذكاء الاصطناعي وتفكك الاستجابة الخاص به.

تتيح لك أتمتة اختبارات الانحدار (Regression Tests) باستخدام Playwright و Pixelmatch عدم الحاجة إلى تصغير نافذة المتصفح والتحقق يدويًا في كل مرة.

  1. قم بتثبيت أدوات الاختبار.
    `bash
    npm install -D @playwright/test @axe-core/playwright

`

  1. أضف السكربت الذي يلتقط لقطات شاشة (Snapshots) عبر التنقل بين منافذ العرض للمحمول (375px)، واللوحي (768px)، وسطح المكتب (1440px).
  2. اضبط حد maxDiffPixelRatio على 0.02. إذا تجاوز هذا الحد، فسيتم إعادة إرسال صورة اختلاف البيكسلات إلى موجه الذكاء الاصطناعي لإعادة كتابة استعلامات الوسائط (Media Queries).

بعد تشغيل حلقة اختبار العرض هذه، انخفض وقت الفحص اليدوي لواجهة المستخدم بأكثر من 80%.

`typescript
import { test, expect } from '@playwright/test';

const viewports = [
{ name: 'mobile', width: 375, height: 667 },
{ name: 'tablet', width: 768, height: 1024 },
{ name: 'desktop', width: 1440, height: 900 },
];

for (const vp of viewports) {
test(Responsive layout test - ${vp.name}, async ({ page }) => {
await page.setViewportSize({ width: vp.width, height: vp.height });
await page.goto('/render-test-harness');

await expect(page.locator('#ai-component-root')).toHaveScreenshot(
  `component-${vp.name}.png`,
  {
    maxDiffPixelRatio: 0.02,
    threshold: 0.2,
    animations: 'disabled',
  }
);

});
}

`

تصفية الكود الغريب قبل Commit مباشرة

مهما كانت جودة صياغة الموجه، تظهر أحيانًا أكواد ضارة غريبة كما لو كان هزيان الذكاء الاصطناعي قد نشط. يجب منع الأكواد التي تفشل في اختبار الأنواع أو تتجاوز الـ Linting قبل الـ Commit مباشرة من الدخول إلى مساحة عمل Git.

إعداد خطافات Git (Git hooks) باستخدام Lefthook.

  1. قم بتثبيت Lefthook في المشروع وأنزل ملف lefthook.yml في الجذر.
    `bash
    npm install -D lefthook

`

  1. اربط أوامر ESLint و Prettier وفحص TypeScript بمرحلة pre-commit.
  2. قم بتشغيل خيار stage_fixed: true بحيث تنعكس التعديلات التلقائية فورًا في الـ Commit.

إذا كانت هناك أخطاء في الأنواع تم تعديلها أو Props تم حذفها دون إذن، يتم إيقاف الـ Commit في مكانه. إنها الطريقة الأكثر إحكامًا لإيقاف عدم الكفاءة المتمثلة في وقوف المطور كمراجع كود لتنظيف مخلفات الذكاء الاصطناعي يدويًا.

`yaml

lefthook.yml

pre-commit:
commands:
eslint-autofix:
glob: ".{js,ts,jsx,tsx}"
run: npx eslint --fix {staged_files}
stage_fixed: true
prettier-format:
glob: "
.{js,ts,jsx,tsx,css,json}"
run: npx prettier --write {staged_files}
stage_fixed: true
typescript-check:
glob: "*.{ts,tsx}"
run: npx tsc --noEmit

`

관련 영상

هذه المهارة جعلت Kimi K3 مصممًا أفضل بـ 10 أضعاف

AI LABS15:15

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.