وش يوضّح هذا النظام التعليمي
هذا المخطط يشرح نمطاً قابلاً لإعادة الاستخدام لتشغيل محتوى عربي وإنجليزي مرتبط بالأدلة. مهام مجدولة تكتشف الطلب، وتقارن الصفحات الحالية، وتجمع مصادر قابلة للتحقق، وتصيغ النسختين، وتطبق بوابات سياسة مستقلة، وتنشر تلقائياً فقط إذا نجحت كل الإشارات، ثم تواصل قياس كل صفحة. السجلات والمعرّفات أمثلة خيالية، والتصميم لا يصف أنظمة تينغ الخاصة.
يشمل
- اكتشاف الطلب مع منع التكرار مقابل المحتوى الحالي
- سجلات أدلة مرتبطة بكل عبارة واقعية
- نسختان عربية وإنجليزية ضمن مجموعة ترجمة واحدة
- نشر وتحقق ومراقبة وقرارات دورة حياة بشكل تلقائي
ما يشمل
- بنية تينغ الإنتاجية أو خيارات مزوديها
- التعليمات الخاصة أو قواعد التقييم أو العتبات الداخلية
- بيانات حقيقية للعملاء أو التحليلات أو بيانات الدخول
- ضمان ترتيب أو زيارات أو إيرادات
بنية قابلة للاستكمال وآلة حالات
تعرّف آلة حالات صغيرة الانتقالات المسموحة، ويتقدم مشغّل مجدول خطوة واحدة محدودة في كل استدعاء. يحفظ التخزين الدائم الأقفال والأدلة والقرارات والمحاولات حتى يستأنف العمل بأمان بعد أي انقطاع. هذا نمط تعليمي واحد، وعلى كل فريق تكييف الحالات والحدود مع مستوى المخاطر والحجم والمنصة عنده.
عرض مصدر Mermaid
flowchart RL
T["مشغّل مجدول"] --> A["الاكتشاف والأهلية"]
A --> B["بحث الأدلة"]
B --> C["موجز ومسودتان ثنائيتا اللغة"]
C --> D["بوابات الادعاءات والجودة وSEO"]
D --> E["النشر والتحقق"]
E --> F["المراقبة ودورة الحياة"]
F -- "تحديث / دمج / منع فهرسة" --> Bعرض مصدر Mermaid
stateDiagram-v2
[*] --> DISCOVERED
DISCOVERED --> ELIGIBILITY_CHECK
ELIGIBILITY_CHECK --> CLUSTERING
CLUSTERING --> RESEARCHING
RESEARCHING --> EVIDENCE_READY
EVIDENCE_READY --> BRIEF_GENERATING
BRIEF_GENERATING --> DRAFTING
DRAFTING --> CLAIM_VALIDATION
CLAIM_VALIDATION --> QUALITY_VALIDATION
QUALITY_VALIDATION --> SEO_VALIDATION
SEO_VALIDATION --> READY_TO_PUBLISH
READY_TO_PUBLISH --> PUBLISHING
PUBLISHING --> PUBLISHED
PUBLISHED --> MONITORING
CLAIM_VALIDATION --> REPAIRING: ادعاء غير مدعوم
SEO_VALIDATION --> REPAIRING: فشل البوابة
REPAIRING --> DRAFTING: محاولات محدودة
MONITORING --> REFRESH_REQUIRED: رصد تراجع
REFRESH_REQUIRED --> RESEARCHING: دورة تحديث
DRAFTING --> FAILED_RETRYABLE: خطأ مزود
FAILED_RETRYABLE --> DRAFTING: استئناف بعد تراجعالحزمة المرجعية المسماة
يستخدم المثال GitHub لإدارة الإصدارات، وPostgres لحالة سير العمل والأدلة، وOpenRouter كبوابة نماذج من الخادم، واستضافة ويب / بنية تحتية سحابية لتشغيل التطبيق والمهام المجدولة. هذه خيارات مرجعية تعليمية، وليست وصفاً لحزمة تينغ الإنتاجية.
GitHub
إدارة مرجعية للإصدارات والتكامل المستمر للكود وحالات اختبار السياسة وسجل النشر.
استضافة ويب / بنية تحتية سحابية
تشغيل التطبيق والمهام المجدولة وحقن الأسرار وفحوصات الصحة والتراجع.
Postgres
مخزن دائم توضيحي للمواضيع والأدلة والنسخ غير القابلة للتعديل والقرارات وإشارات دورة الحياة.
OpenRouter
خيار تعليمي لبوابة نماذج من الخادم مع مخرجات مقيدة بمخطط ومهل وسياسة بديلة.
مهام مجدولة ودوال تطبيق
يشغّل المرجع الاكتشاف والعامل بوتيرة قابلة للضبط، وكل نبضة تنفذ خطوة محدودة وتترك وقتاً لحفظ الحالة بأمان.
المستودع والجدولة والإعداد في المرجع
يجمع المثال مسارات الويب وعامل المحتوى في مستودع واحد حتى تتطور العقود والاختبارات معاً. مواعيد الاكتشاف والعامل أمثلة توضيحية؛ اختر وتيرة وميزانية تشغيل تناسب الطلب وحدود المزود وأهداف الاستعادة عندك.
reference-seo-system/
app/api/cron/content/
discovery/route.js # scheduled opportunity discovery
worker/route.js # advance one due workflow step
app/blog/[slug]/page.js # render published articles
src/seo/
orchestrator.js # lease a workflow and run one bounded step
state-machine.js # legal transitions for the reference flow
repository.js # leases, budgets and circuit breakers
discovery.js # demand discovery, scoring and deduplication
research.js # evidence retrieval and verification
structured-output.js # schema-constrained model calls
policy.js # automatic publication and lifecycle gates
monitoring.js # outcome checks and lifecycle signals
search-console.js # indexing and performance measurements
*.test.js # regression suites beside the modules
hosting-config.example # runtime schedules and resource limits# Educational reference dependencies. Choose versions that match
# your application and review their official documentation.
npm install next react react-dom pg
# pg -> reference Postgres repository
# Hosting -> deploy to a Web Hoster / Cloud Infrastructure# .env.example — placeholder values only; never commit real secrets
DATABASE_URL=postgres://user:password@host:5432/database
MODEL_GATEWAY_API_KEY=replace_with_server_side_secret
CONTENT_CRON_SECRET=replace_with_random_bearer_token
CONTENT_DAILY_NEW_PAGE_LIMIT=replace_with_integer
CONTENT_MAX_MODEL_CALLS_PER_WORKFLOW=replace_with_integer
CONTENT_POLICY_VERSION=replace_with_version_identifierالمواضيع وسير العمل والأدلة والنتائج
تحفظ الجداول المرجعية كل موضوع ومصدر ونتيجة تحقق وانتقال وإشارة لدورة الحياة. ما يعتمد شيء على نص محادثة. استخدم سجلات نسخ غير قابلة للتعديل، ومفاتيح لمنع التكرار، وسجل تدقيق حتى تقدر تفسر أي إجراء تلقائي أو تعيد محاولته أو تتراجع عنه.
-- Illustrative reference schema; adapt names to your system.
create table content_topics (
id uuid primary key,
query text not null,
locale text check (locale in ('en','ar')),
intent text,
canonical_topic text,
priority_score numeric
);
create table content_workflows (
id uuid primary key,
topic_id uuid references content_topics(id),
current_state text not null,
intended_action text,
retry_count int default 0,
failure_category text,
idempotency_key text unique,
locked_at timestamptz,
next_review_at timestamptz
);create table content_evidence_sources (
id uuid primary key,
workflow_id uuid references content_workflows(id),
url text not null,
publisher text,
retrieved_at timestamptz,
excerpt text,
verification_status text -- verified | retired
);
create table content_validation_results (
workflow_id uuid,
stage text, -- CLAIM | QUALITY | SEO | PUBLICATION
decision text, -- pass | repair | reject
details jsonb
);
-- Every factual clause must map to retrieved evidence.
-- Unsupported clauses route to REPAIRING, never to publication.// src/seo/state-machine.js — educational reference example
export const WORKFLOW_STATES = Object.freeze([
"DISCOVERED", "ELIGIBILITY_CHECK", "CLUSTERING",
"EXISTING_CONTENT_CHECK", "RESEARCHING", "EVIDENCE_READY",
"BRIEF_GENERATING", "BRIEF_READY", "DRAFTING", "DRAFTED",
"CLAIM_VALIDATION", "QUALITY_VALIDATION", "SEO_VALIDATION",
"REPAIRING", "READY_TO_PUBLISH", "PUBLISHING", "PUBLISHED",
"MONITORING", "REFRESH_REQUIRED", "MERGE_REQUIRED",
"REDIRECT_REQUIRED", "NOINDEX_REQUIRED", "REJECTED",
"FAILED_RETRYABLE", "FAILED_FINAL"
]);
assertTransition("DRAFTED", "CLAIM_VALIDATION"); // allowed
assertTransition("DRAFTED", "PUBLISHED"); // throws// A scheduler on your Web Hoster / Cloud Infrastructure invokes
// this worker. One lease, one bounded step, then release.
export async function runContentWorker() {
const workflow = await claimNextDueWorkflow();
if (!workflow) return { ok: true, idle: true };
try {
await advanceOneStep(workflow);
} catch (error) {
await recordFailure(workflow, error); // backoff + circuit breaker
}
return { ok: true, workflowId: workflow.id };
}التجميع وفحص المحتوى الحالي
قبل الصياغة، قارن اللغة ونية البحث والموضوع الأساسي وتداخل الاستعلامات وتشابه المحتوى مع كل صفحة مؤهلة. النتيجة الحتمية تكون إنشاء أو تحديث أو دمج أو رفض. لا يُسمح بعنوان جديد إلا إذا خدم نية مستقلة ما تقدر صفحة حالية تلبيها.
إنشاءلا توجد صفحة قوية بنفس اللغة والنية.
تحديثصفحة واحدة مناسبة موجودة لكن تغطيتها ناقصة أو قديمة.
دمجعدة صفحات تتنافس على نفس النية.
رفضالمحتوى الحالي قوي أو الفرصة غير مناسبة.
// Compare locale, intent, canonical cluster and similarity
// before drafting. This function is deterministic and testable.
export function decideIntendedAction({ topic, livePages }) {
const sameCluster = livePages.filter((page) =>
page.locale === topic.locale &&
page.canonicalTopic === topic.canonicalTopic
);
if (sameCluster.some((p) => p.coverage === "strong")) return "REJECT_TOPIC";
if (sameCluster.some((p) => p.coverage === "partial")) return "REFRESH_EXISTING";
if (sameCluster.length > 1) return "MERGE_INTO_EXISTING";
return "CREATE_NEW";
}البحث وربط العبارات بالأدلة بدقة
احفظ المصادر المسترجعة قبل الكتابة. ما يستخدم الكاتب إلا المقتطفات المدعومة، ثم يربط متحقق مستقل كل عبارة واقعية بنص الدليل الدقيق. الدليل الناقص أو القديم أو المتعارض يعيد النسخة للإصلاح أو الرفض، وما تقدر تسميات النموذج تتجاوز سجل الأدلة.
// Re-extract every factual clause and verify the exact text
// against stored evidence instead of relying on model memory.
export async function validateClaims(workflowId, draft) {
const evidence = await getVerifiedEvidence(workflowId);
return extractClaims(draft).map((claim) => ({
...claim,
status: evidence.some((row) =>
claim.evidenceIds.includes(row.id) &&
supportsExactClause(row.excerpt, claim.text)
) ? "supported" : "unsupported"
}));
}- اسمح بالمصادر الرسمية والأولية حسب السياسة.
- احفظ عنوان المصدر ووقت الاسترجاع والمقتطف.
- افصل عدم توفر المصدر عن عدم دعم الادعاء.
- لا تسمح للنموذج باختراع رابط أو معرّف دليل.
الموجز والصياغة ثنائية اللغة
ينتج موجز واحد مرتبط بالأدلة نسختين أصليتين بالعربية والإنجليزية ضمن مجموعة ترجمة واحدة. تُكتب العربية بشكل طبيعي للقارئ السعودي مع الحفاظ على الحقائق المدعومة وحدود النية وهدف الروابط الداخلية وعلاقة الصفحة الأساسية وربط اللغات.
موجز مشترك
النية والجمهور والأدلة والنطاق والروابط المطلوبة.
مسودتان أصليتان
كل لغة تصاغ لقرّائها مع نفس حدود الادعاءات.
ربط اللغات
كل نسخة تحدد صفحتها الأساسية وتربط اللغة المقابلة بشكل صحيح.
مراجعة الانحراف
قارن الادعاءات والأرقام والوعود بين اللغتين.
التحقق والنشر المبنيان على الإشارات
تقيّم الفحوصات الحتمية ومراجعات النماذج المنفصلة تغطية الأدلة والجودة والتكرار والبيانات الوصفية والروابط والبيانات المنظمة وتكافؤ اللغتين. يتم النشر تلقائياً فقط إذا نجحت كل الإشارات المطلوبة. أي اختلاف يوقف النسخة أو يعيدها للإصلاح أو يرفضها؛ وما فيه طابور يدوي ضمن مسار النشر.
{
"workflow_id": "wf_reference_topic_en",
"current_state": "SEO_VALIDATION",
"intended_action": "CREATE_NEW",
"locales": ["en", "ar"],
"gates": {
"claims": "pass",
"quality": "pass",
"seo": "pending",
"publication_policy": "pending"
},
"retry_count": 0,
"failure_category": null,
"publishable": false
}المراقبة والتحديث والدمج ومنع الفهرسة بشكل تلقائي
تقود قياسات Search Console والفهرسة الحديثة فحوصات دورة الحياة المتكررة. قد يؤدي التراجع أو التداخل أو فقدان القيمة المستقلة إلى تحديث أو دمج أو إعادة توجيه أو منع فهرسة تلقائي، لكن فقط بعد نجاح بوابات الحد الأدنى للعينة والثقة وسلامة الوجهة وإمكانية التراجع. النظام ما يفترض أبداً أن الرابط الأقدم هو الأفضل.
إبقاء
المحتوى ما زال مفيداً وصحيحاً.
تحديث
الأدلة أو التغطية أو الأداء تحتاج تحديثاً.
دمج
صفحات متعددة تتنافس ونحتاج توحيدها.
منع الفهرسة
الصفحة ما عادت تقدم قيمة مستقلة.
واجهات الجدولة وسلوك الفشل
احمِ المسارات المجدولة بسر من الخادم وأرجع نتائج منظمة. صنّف الأخطاء القابلة لإعادة المحاولة، واستخدم تأخيراً تدريجياً وحدوداً للمحاولات وقواطع أعطال، واحجز وقتاً لحفظ الحالة، وحدد سقف العمل اليومي. لازم تتوقف المهلة أو مشكلة المزود بأمان بدون نشر نسخة جزئية أو استهلاك ميزانية محاولة لمرحلة ثانية.
// app/api/cron/content/worker/route.js — simplified reference
export async function GET(request) {
const token = request.headers.get("authorization");
if (token !== "Bearer " + process.env.CONTENT_CRON_SECRET) {
return Response.json({ error: "unauthorized" }, { status: 401 });
}
const result = await runContentWorker();
return Response.json(result);
// A revision is published automatically only after every policy signal
// passes and the public URL is verified. Otherwise it repairs or stops.
}اختبارات بجانب وحدات المرجع
اختبر الانتقالات المسموحة وتغطية الأدلة وتصفية الطلب وتكافؤ اللغتين والتراجع عن النشر وعتبات دورة الحياة. لازم تشمل بيانات التقييم ادعاءات غير مدعومة وحقن تعليمات وتغيّر عناوين الشبكة وقياسات قديمة وتداخل النية وكتابة ناقصة لإحدى اللغتين وفشل التحقق من الرابط العام.
// Illustrative regression cases for the reference implementation.
const cases = [
["illegal state transition", "throws"],
["unsupported factual clause", "REPAIRING"],
["duplicate intent detected", "MERGE_REQUIRED"],
["provider fails repeatedly", "circuit_breaker_open"],
["all publication signals pass", "PUBLISHED"],
["public URL verification fails", "automatic_rollback"],
["overlap exceeds merge threshold", "automatic_merge_queued"],
["lifecycle evidence is incomplete", "action_blocked"]
];
test.each(cases)("%s -> %s", async (scenario, expected) => {
expect(await runFixture(scenario)).toEqual(expected);
});قرار الإنشاء أو التحديث أو الدمج أو الرفض يطابق الحالة المتوقعة.
نسبة العبارات الواقعية المرتبطة بدليل صالح.
لا تغيّر في الأرقام أو الوعود أو المعنى بين النسختين.
صفر حالات نشر قبل نجاح كل بوابات السياسة والتحقق من الرابط العام.
الاستضافة والحالة الدائمة والتراجع
شغّل التطبيق على استضافة ويب / بنية تحتية سحابية مع حقن الأسرار وفحوصات صحة وحدود للطلبات ومهام مجدولة تحت المراقبة. احفظ الحالة الدائمة خارج ذاكرة العملية، وانشر نسخاً غير قابلة للتعديل، واحتفظ بآخر نسخة سليمة، ودرّب التراجع التلقائي قبل تفعيل النشر بدون تدخل.
حالة دائمة
احفظ المهمة والانتقالات والأدلة وقرارات السياسة خارج ذاكرة العملية.
محاولات محدودة
استخدم مفاتيح تمنع التكرار وتأخيراً تدريجياً وطابور أخطاء بدل المحاولات المفتوحة.
مراقبة
تتبّع زمن كل مرحلة والتكلفة ومعدل فشل البوابات وعمر المهام.
تراجع
احتفظ بالإصدار السابق وخطة تراجع واختبر الرابط بعد أي استعادة.
ملكية تشغيلية
حدد مسؤول السياسة والنشر والحوادث بدون جعل النشر المعتاد ينتظر طابوراً يدوياً.
الأمان والاستثناءات المقصودة
تعامل مع صفحات المصادر كمدخلات غير موثوقة، وثبّت طلبات الأدلة الخارجية على وجهات HTTPS تم التحقق منها، واحتفظ ببيانات دخول النماذج وقاعدة البيانات في الخادم، واحجب البيانات الحساسة من السجلات، وافصل صلاحيات الاسترجاع والنشر ودورة الحياة. يستبعد هذا المخطط عمداً تعليمات تينغ وربطها الخاص وعتباتها الإنتاجية وتفاصيل تنفيذها الأمني.
صلاحيات محدودة
افصل صلاحيات قراءة المصادر عن النشر وقرارات دورة الحياة.
مدخلات غير موثوقة
نظّف HTML وتعليمات المصادر قبل إرسالها للنموذج.
أسرار الخادم
لا ترسل المفاتيح أو سجلات التتبّع للمتصفح.
حدود الطلبات
حدد معدل وحجم ومدة المهام.
سجلات آمنة
احجب الأسرار والبيانات الشخصية والمحتوى الخاص.
دورة حياة تلقائية منضبطة
لا تنفذ تحديثاً أو دمجاً أو منع فهرسة قبل نجاح عتبات الإشارة وفحوصات التراجع.
