尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Invoicing system for TPH
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
نظام إدارة فواتير مؤسسة ذا بوبليك هاوس تطبيق ويب يدير مالية المقهى وتشغيله: من لحظة وصول المستند حتى قيده وسداده ومطابقته بالبنك وبكشوف مورّديه — مرتبطاً مباشرة بأرشيف جوجل درايف القائم، دون تغيير بنيته ولا إعادة تسمية ملفاته. الرقم الضريبي: ٣١٠٠٠٧٩٧١٦٠٠٠٠٣ · السجل التجاري: ٧٠٥٢٧٦٦٩٤١ يعمل من الآيفون والآيباد واللابتوب بلا تحميل شيء. ومن سفاري في الآيفون اضغط زر المشاركة ثم «إضافة إلى الشاشة الرئيسية» ليصير أيقونة تفتح بملء الشاشة كالتطبيقات. نظام إدارة الدورة المالية والتشغيلية للمقهى. يبدأ من المستند حين يصل — بفاتورة أو كشف أو إيصال — وينتهي عند سؤال واحد يفتحه صاحب العمل كل صباح:檢視完整 README ↗
تطبيق ويب يدير مالية المقهى وتشغيله: من لحظة وصول المستند حتى قيده وسداده ومطابقته بالبنك وبكشوف مورّديه — مرتبطاً مباشرة بأرشيف جوجل درايف القائم، دون تغيير بنيته ولا إعادة تسمية ملفاته.
الرقم الضريبي: ٣١٠٠٠٧٩٧١٦٠٠٠٠٣ · السجل التجاري: ٧٠٥٢٧٦٦٩٤١
https://tph-invoicing.vercel.app
يعمل من الآيفون والآيباد واللابتوب بلا تحميل شيء. ومن سفاري في الآيفون اضغط زر المشاركة ثم «إضافة إلى الشاشة الرئيسية» ليصير أيقونة تفتح بملء الشاشة كالتطبيقات.
نظام إدارة الدورة المالية والتشغيلية للمقهى. يبدأ من المستند حين يصل — بفاتورة أو كشف أو إيصال — وينتهي عند سؤال واحد يفتحه صاحب العمل كل صباح:
ماذا أحتاج أن أعرف أو أفعل اليوم؟
لا: «ما السجلات الموجودة في قاعدة البيانات؟»
المصدر src/lib/nav.ts — وهو الحَكَم إن خالفه هذا الجدول.
| المساحة | السؤال الذي تجيب عنه |
|---|---|
/ الرئيسية | ما المهمّات الباقية اليوم، وحالُ المقهى في سطر |
/attention يحتاج قرارك | كلّ الاستثناءات في طابورٍ واحد، والعملُ يقع داخل البند |
/suppliers المورّدون | الحسابات · الفواتير · الكشوف · دفعة الشهر — «لمن أدين؟» |
/money المال | أين ذهب · حركة البنك · إقفال الشهر |
/documents المستندات | صندوق وارد ثمّ أرشيف |
/inventory الجرد | الجرد الأسبوعيّ · استيراد فودكس · الوصفات · الأصناف · سجلّ الجرد |
والإعدادات وسجلّ التدقيق خارج التنقّل (ACCOUNT_LINKS). والرفع فعلٌ لا مساحة: زرّ + رفع ظاهر في كل صفحة، وصفحته /upload.
| الدخول والصلاحيات | جوجل · قائمة بيضاء · ثلاثة أدوار مفروضة على الخادم |
| قراءة المستند | نموذج رؤية يقرأ الملف نفسه — بلا OCR منفصل |
| الأرشفة | تسمية وتصنيف ورفع للدرايف بلا استبدال ملف قائم |
| الفحص الضريبي | الأركان الأربعة · حدّ الرسملة · حساب الضريبة |
| محرّك تسوية البنك | معياريّ ← تصنيف ← تعريف مستفيد ← مرشّحون ← تسوية شاملة ← قرار |
| تسوية غير جشعة | تفريعٌ وتحديد يبحث عن أعلى مجموع لا أعلى درجة، ويُعلن إن رجع للتقريب |
| قرارٌ بثلاث درجات | تلقائيّ · اقتراح · مراجعة — ولا تلقائيّ إلّا بالدرجة والفارق عن التالي |
| تصنيف بطبقات | البنية ← ما أكّده إنسان ← الكلمات بشروطها ← المجهول يُعلَن |
| حركات الشبكة | تسوية البطاقات ورسومها وضريبتها — كانت كلّها «ضجيجاً داخلياً» |
| ذاكرة المستفيدين | تأكيدٌ واحد يعمّ: تُحفَظ الهويّة والحساب والآيبان لا نصّ الوصف |
| حَكَمٌ عند العجز | يُستدعى نموذجٌ للملتبس وحده، على مرشّحين مولَّدين، وحكمه اقتراح |
| «لماذا؟» والتراجع | كل مطابقة تحمل أدلّتها بنصّها، وتُفكّ بأثرٍ في سجل التدقيق |
| طابور المعلّقات | سؤالٌ واحد عن حركةٍ واحدة، ولكلٍّ زرّ — والتأكيد يُغذّي الذاكرة |
| قراءة PDF | نصّه ومواضعه حسابياً — والمصوَّر يُعلَن ولا يُخمَّن |
| كشف البنك | ستّة توقيعات، والثقة تنمو بعدد العلامات لا بأوّلها |
| فجوات التغطية | «بين كشفيك أسبوعٌ لم يُستورَد» — والغائب لا يُرى فيجب أن يُحسَب |
| الرسوم والردود والإشعارات | رسمُ التحويل داخل الدفعة · ما خرج ثمّ عاد · الإشعار يخفض المستحقّ |
| مطابقة كشوف المورّدين | تكشف الفاتورة التي حُمّلت عليك ولم تصلك |
| دفعة أوّل الشهر | تحجز ما ليس ضريبياً كاملاً · ملف تحويلات · رسالة واتساب |
المبيعات · تكلفة المبيعات · هامش الربح · المخزون · الوصفات · ربحية القائمة.
كلّها تحتاج مصدر مبيعات لم يُوصَل. وتُعرض في الواجهة «غير موصولة» ولا تُملأ بصفر ولا برقم مقدَّر — لأنّ صفر المبيعات يوحي بأنّ المقهى لم يبع شيئاً، وذلك أسوأ من الفراغ.
والبنية جاهزة: جداول المبيعات وطرق الدفع والمرتجعات ودفعات التسوية موجودة،
وواجهة الموصل في src/lib/sales/connector.ts
ترمي NotConnectedError ولا تُرجع أصفاراً. بلا واجهة برمجية لأيّ مزوّد.
وقد صار البنك يعرف تسويات الشبكة ورسومها — وهي نصف السؤال الذي يُنتظَر من الربط: «بعتُ تسعة آلاف ووصلني ثمانية آلاف وسبعمئة وستّون، أين الفرق؟»
سجلّ المراجعات والأعطال التي وُجدت في بيانات حقيقية — وما استُخلص منها:
docs/CHANGELOG.md
والفحص الشامل للمنتج والمعمارية: docs/AUDIT.md
كلٌّ منها كُتب بعد عطل حقيقي، لا شعاراً:
VALID · INVALID · UNKNOWN · NOT_APPLICABLE،
والصافي والضريبة يقبلان الفراغ. الفرق عملي: علاج «غير صالحة» مطالبة المورّد،
وعلاج «مجهولة» قراءة المستند.lib/drive.ts.المعمارية الفعلية: docs/ARCHITECTURE.md — مصدر الحقيقة الواحد. دليل التشغيل: docs/SETUP.md
docs/PLAN.md وثيقة تاريخية تحمل الخطّة الأولى، وفيها قرارات نُقضت — أبرزها أنّها تذكر Prisma والمشروع على Drizzle.
النظام لا يحذف ولا ينقل ولا يعيد تسمية أي ملف موجود في الدرايف. أدوات المرحلة صفر كلها تطلب صلاحية قراءة فقط، فالكتابة مستحيلة تقنياً لا اتفاقاً. ولا يبدأ الرفع إلا في المرحلة الأولى، وبتأكيد بشري في كل مرة.
npm install
cp .env.example .env # ثم املأ القيم — راجع «إعداد جوجل» أدناه
npm run db:bootstrap # مرّةً واحدة فقط: ينشئ الجداول الأولى — ويرفض قاعدةً مؤسَّسة
npm run db:seed # يؤسّس سجل المورّدين
npm run db:migrate # يطبّق الهجرات — وهو الطريق الوحيد بعد التأسيس
npm test # يشغّل اختبارات منطق الأعمال
npm run dev # يشغّل التطبيق على http://localhost:3000
npm run db:audit # تدقيق اكتمال البيانات وسلامتها
npm run db:repair # إصلاح أعطال السلامة (بمعاينة أوّلاً)
التطوير والفحص
| الأمر | ما يفعله |
|---|---|
npm run dev | تشغيل التطبيق للتطوير |
npm test | منطق الأعمال وحرّاس الشيفرة — العددُ يُقرأ من التشغيل |
npm run test:watch | الاختبارات في وضع المراقبة |
npm run typecheck | فحص الأنواع |
npm run lint | فحص الأسلوب |
npm run build | البناء كما يبنيه Vercel |
القاعدة
| الأمر | ما يفعله |
|---|---|
npm run db:migrate | يطبّق الهجرات — الطريق الوحيد لتغيير المخطّط |
npm run db:verify | يثبت أنّ القيود المالية ترفض فعلاً — والقيد بلا اختبار ادّعاء |
npm run db:bootstrap | ينشئ الجداول الأولى على قاعدةٍ فارغة — ويرفض قاعدةً مؤسَّسة |
npm run db:seed | تأسيس سجل المورّدين (قابل للتكرار بلا ضرر) |
تدقيق البيانات وإصلاحها
| الأمر | ما يفعله |
|---|---|
npm run db:audit | تدقيق اكتمال البيانات وسلامتها |
npm run db:repair | إصلاح أعطال السلامة (بمعاينة أوّلاً) |
npm run db:dedupe | إزالة الحركات البنكية المكرّرة |
npm run db:merge | دمج مورّد مكرَّر — يُعطَّل ولا يُحذف |
npm run db:split-check | كشف المورّد المسجَّل مرّتين، بدليلٍ ماليّ لا بتشابه اسم |
npm run db:reprice | إعادة حساب أسعار البنود |
npm run db:products | بناء أصناف المورّدين من بنود الفواتير |
npm run db:expenses | اشتقاق المصروف الفعليّ من دفتر البنك |
npm run db:unpaid | تشخيص المستحقّ: أيّ فاتورةٍ لها حركةٌ بمبلغها ولم تُطابَق |
npm run bench:extraction | قياس قراءة المستندات على الأرشيف الحقيقيّ — يحتاج رمز الدرايف |
البنك والمطابقة
| الأمر | ما يفعله |
|---|---|
npm run db:reclassify | إعادة تصنيف الحركات |
npm run db:rematch | إعادة المطابقة — تكتب القرار وأثره كما يكتبهما الاستيراد |
npm run db:learn | تعلّم الجهات من المطابقات المؤكَّدة |
npm run db:link | ربط الجهات المتعلَّمة بالمورّدين |
npm run db:identity | تقرير الهويّة: بمَ عُرفت كلّ حركة |
npm run db:measure | أنتحسّن أم نسوء — ويُقاس على ما حكم فيه إنسان وحده |
الدرايف
| الأمر | ما يفعله |
|---|---|
npm run drive:auth | الحصول على مفتاح الدرايف — قراءة فقط |
npm run drive:auth -- --write | مفتاح بصلاحية الكتابة (لإعادة التسمية وحدها) |
npm run drive:inventory | جرد الأرشيف وإخراج تقرير — قراءة فقط |
npm run drive:backfill | قراءة محتوى الملفّات (مرّة واحدة) |
npm run drive:diagnose | تشخيص الوصول إلى الأرشيف |
بوّابة الإنتاج — لا يُقال «جاهز» بلا دليل
| الأمر | ما يفعله |
|---|---|
npm run ops:gate | خمسة عشر بنداً: PASS أو FAIL أو ? لم يُفحَص — والمجهول يمنع كما يمنع الفشل |
npm run ops:certify | سبعةُ سيناريوهات ماليّة على المخطّط الحقيقيّ، كلٌّ يُلغى أثرُه |
npm run ops:truth | الأصل في الدرايف مقابل القيد |
npm run ops:isolation | بصمةُ القاعدة — ومعرّف العنقود هو الحاكم لا اسمُ المضيف |
النشر
ثلاثة نماذج لثلاث مهامّ، وموضعُ إعدادها واحد (src/lib/ai/models.ts):
| المهمّة | النموذج | متى |
|---|---|---|
| نصّ | deepseek-v4-flash | الـPDF الذي يُقرأ نصُّه — وهو الغالب |
| رؤية | deepseek-v4-flash-vision-exp | المصوَّر وحده |
| استدلال | deepseek-v4-pro | الترجيح بين مرشّحي المطابقة عند الالتباس |
والقاعدة: النموذج ينقل، والشيفرة تحسب. لا يكتب الذكاء رقماً مالياً في
القاعدة؛ يقترح، ويتحقّق الخادم، ويحسم الإنسان ما التبس. والقيود المعروفة
والقياس على ١٢٦ فاتورة حقيقية في docs/CHANGELOG.md.
الدفع إلى main في GitHub يبني وينشر على Vercel تلقائياً:
git push origin main
تحتاج هذا مرة واحدة، ويستغرق نحو عشر دقائق.
TPH Invoicing ثم Create.Google Drive API ثم افتحها واضغط Enable.فواتير ذا بوبليك هاوس · بريد الدعم (بريدك) · بريد المطوّر (بريدك).https://www.googleapis.com/auth/drive — للقراءة والكتابةopenid · email · profile — للهويةمهم: ما دام التطبيق في حالة Testing ينتهي مفعول الجلسة كل سبعة أيام ويُطلب تسجيل دخول جديد. لتفادي ذلك انشر التطبيق: Publish App من نفس الصفحة. ستظهر حينها شاشة «لم توثّق جوجل هذا التطبيق» — تتجاوزها مرة واحدة لكل مستخدم بالضغط على Advanced ← Continue. السقف مئة مستخدم، وهو أكثر من كافٍ لثلاثة.
http://localhost:3000/api/auth/callback/google — لتسجيل الدخولhttp://127.0.0.1:53682/callback — لأداة drive:auth.env:GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
npm run drive:auth
يفتح الأمر رابطاً في المتصفح، تسجّل الدخول بالحساب المالك للأرشيف، ثم يطبع
سطراً تضيفه إلى .env. الصلاحية الافتراضية قراءة فقط.
npm run drive:inventory
يمشي على الأرشيف ويخرج تقريراً بعدد الملفات وتصنيفها وما احتاج منها تدخلاً
بشرياً، ويحفظ نسخة كاملة في مجلد reports/. لا يعدّل شيئاً.
My Drive / ACCOUNTS / 2026 / 2026-08 / Olive Leaves / <الملفات>
/ _إيصالات السداد
/ _نقدي - Cash receipts
/ _مرافق وحكومي - Utilities & Gov
/ _أخرى - Other suppliers
معرّفات المجلدات تُقرأ من متغيرات البيئة ولا تُكتب داخل الكود.
الفاتورة : YYYY-MM-DD_<الاسم المختصر>_Invoice_<رقم الفاتورة>_SAR<المبلغ>.pdf
الكشف : YYYY-MM-DD_<الاسم المختصر>_Statement_SAR<المبلغ>.pdf
الإيصال : YYYY-MM-DD_Receipt_<الاسم المختصر>[-<اسم المستفيد>]_SAR<المبلغ>.pdf
النقدي : YYYY-MM-DD_Cash_<وصف>_SAR<المبلغ>.jpg
SAR410.00 لا SAR410. (2) — ولا يُستبدل ملف موجود أبداً.انتبه: اسم المجلد يخالف الاسم المختصر غالباً. مجلد Olive Leaves ملفاته
باسم OliveLeaves، ومجلد Golden Cup Factory ملفاته GoldenCup. ولهذا
يحمل كل مورد الاسمين منفصلين في قاعدة البيانات.
2026-08 ولو سُدّدت في سبتمبر.2026-08.carriedForwardFrom ليبقى الأثر مرئياً.الفاتورة صالحة لخصم ضريبة المدخلات فقط إذا حملت الأربعة معاً: رقم فاتورة · الرقم الضريبي للبائع · الرقم الضريبي للمشتري مطابقاً لرقم المنشأة · تفصيل الضريبة.
ويضيف النظام فحصاً حسابياً يكشف أخطاء الاستخراج قبل القيد: المجموع يجب أن يساوي الصافي زائد الضريبة، والضريبة تقارب ١٥٪ من الصافي.
وأي مبلغ يتجاوز ٣٬٠٠٠ ريال يُرفع كأصل ثابت محتمل يُرسمل ولا يُصرف. والأساس هو الصافي حين تكون الضريبة قابلة للخصم، والمجموع حين لا تكون — لأن الضريبة غير القابلة للخصم جزء من تكلفة الأصل.
src/
app/ المساحات السبع وصفحاتها · و`api/` ثلاثٌ وعشرون واجهة
components/ مكوّنات العرض · `ui.tsx` الجدول يصير بطاقات على الجوّال
config/drive.ts معرّفات المجلدات وثوابت المنشأة — من البيئة لا من الكود
db/schema.ts نموذج البيانات كاملاً (٣٩ جدولاً)
db/index.ts عميل قاعدة البيانات
services/ طبقة الخدمات: المنطق هنا، والواجهات رقيقة
guard.ts `guard(route, capability)` — مدخل كل واجهة
invoice · payment · document · supplier · expense · product · search
reconcile.service.ts الجسر: صفوف الكشف ← قرارٌ لكل حركة مع أدلّته
adjudicator.service.ts استدعاء الحَكَم — وحكمه اقتراحٌ لا مطابقة
lib/money.ts المبالغ بالهللات — لا فاصلة عائمة في المال إطلاقاً
lib/confirm.ts الخادم يعيد اشتقاق حال الضريبة — لا يُصدَّق المتصفّح
lib/allocation.ts يمنع تخصيص أكثر من قيمة الدفعة
lib/line-pricing.ts قلب صحّة الأسعار
lib/payment-state.ts سبعُ حالاتٍ للدفعة — والمردودة لا تُحسَب مدفوعة
lib/statement-match.ts مطابقة كشوف المورّدين
lib/month-close.ts الإقفال: `BLOCK` يمنع، `WARN` لا يمنع
lib/attention.ts كل تنبيه يحمل مكان إصلاحه ودليل ظهوره
lib/naming.ts بناء وتفكيك أسماء الملفات
lib/canonical-name.ts الاسم القياسيّ من المقيَّد — ولا يُمَسّ اسمٌ يُقرأ
lib/filing.ts قواعد الترتيب — أي شهر يذهب إليه كل مستند
lib/validation.ts فحص الصحة الضريبية والمحاسبية
lib/drive.ts طبقة الوصول للدرايف — **لا دالة حذف فيها**
lib/bank/ نواة البنك: من الملفّ الخام إلى قرارٍ بأدلّته
parsers/ محوِّل لكل بنك · نصّ PDF · كشف البنك من الملفّ
canonical · classification · entities · pattern · identity
candidates · optimizer · decision · adjudicate
balance-equation.ts افتتاحي + وارد − صادر = ختامي — وهذه التسوية
sync.ts «أهي عندنا؟» قبل «ما معناها؟»
lifecycle · review-queue · coverage · metrics · fees · reversal
lib/extraction/ مخطّطٌ لكل نوع مستند · نسخ الموجِّه · قراءة الكشف
lib/ops/ بوّابة الإنتاج — الحكم يُشتقّ من فحوصٍ تجري
lib/sales/connector.ts واجهة المبيعات — معرَّفة بلا تطبيق، **ترمي ولا تُصفّر**
scripts/ ستّةٌ وثلاثون نصّاً — الجدول أعلاه يصفها
drizzle/sql/ خمسٌ وعشرون هجرة بـSQL صريح، يشغّلها `db:migrate`
المبالغ أعداد صحيحة بالهللات. لأن 0.1 + 0.2 في جافاسكربت لا تساوي 0.3،
وخطأ «فاتورة بـ٣٬٤٠٠ قُيّدت ١٬٧٠٠» لا يجوز أن يتكرر من جهة النظام.
سجل التدقيق غير قابل للتعديل ولا الحذف على مستوى قاعدة البيانات نفسها.
ثلاثة مشغّلات ترفض UPDATE و DELETE و TRUNCATE. الاتفاق البرمجي وحده لا
يكفي لسجل يُفترض أن يصمد أمام المراجعة.
مخرجات نموذج الاستخراج تُحفظ خاماً قبل أي تصحيح يدوي في حقل
extractionJson، وثقة كل حقل على حدة في fieldConfidence. فما عُدّل يدوياً
يبقى قابلاً للمقارنة بما استُخرج آلياً.
الخط ثمانية سانس للنصّ وثمانية سيرف ديسبلاي للعناوين، محمَّلان ذاتياً من
مجلد src/fonts بصيغة woff2 — فلا يعتمد التطبيق على خادم خطوط خارجي ولا يتأخّر
عرض النص العربي.
النظام اللوني أبيض وأسود خالصان بأعلى تباين، والرمادي للنص الثانوي والحدود فقط. واللون محجوز للحالات وحدها — أخضر وكهرماني وأحمر — حتى يبقى التنبيه ملحوظاً لأنه الملوّن الوحيد في الشاشة. والوضع الليلي يتبع إعداد الجهاز تلقائياً.
والرمادي الثانوي يجتاز حدّ WCAG AA في السمتين (5.34:1 فاتحاً و6.67:1 داكناً)،
وأدنى مقاسٍ للنصّ 11px — والحرف العربيّ بلا شكلٍ يحتاج مساحةً أكثر من اللاتينيّ
عند الوضوح نفسه.
الأرقام وحدها بخطّ الواجهة النظاميّ. خطّ ثمانية لا يحمل مجموعة الأرقام
الجدوليّة، فـtabular-nums عليه بلا أثر — قيس فكان «11» بعرض 9.08px و«88»
بعرض 15.31px، وفي عمود مالٍ يعني ذلك فواصل لا تلتقي. فصنف .nums يطلب خطّ
النظام للأرقام وحدها: يحملها على أنظمة التشغيل الثلاثة، وعرضُ رقمه 15.12px أي
بمقاس أرقام ثمانية نفسها. والنصّ العربيّ لم يُمَسّ، ولا خادم خطوطٍ خارجيّ أُضيف.
وعمود المال يحمل nums-col — direction: ltr مع text-align: right — لأنّ
align: end في العربية هو اليسار، فكانت الأرقام تلتصق به وتتراقص فواصلها.
الواجهة مبنية للجوال أولاً، ومعها ملف manifest.webmanifest يجعلها تُضاف إلى
الشاشة الرئيسية وتفتح بملء الشاشة بلا شريط متصفح.
التطبيق منشور على Vercel، ومتغيّرات البيئة مضبوطة على المشروع هناك لا في الكود. لنشر نسخة جديدة بعد أي تعديل:
vercel deploy --prod
تنبيه على الخطة: الحساب الآن على خطة Vercel المجانية، وشروطها للاستخدام الشخصي غير التجاري. قبل أن يصير النظام أداة العمل اليومية تحتاج الترقية إلى خطة Pro بعشرين دولاراً شهرياً، أو النقل إلى Firebase App Hosting كما في الخطة الأصلية — والنقل سهل لأن التطبيق لا يعتمد على شيء خاص بـVercel.
.env، وهو مستثنى من git..env.example يحمل أسماء المتغيرات فقط بلا قيم حقيقية.| قائمة تحقّق تُقرأ · قفلٌ يمنع الإضافة · إعادة فتح مسجَّلة |
| الأصناف المعيارية | ربط أصناف المورّدين بصنف واحد — يُقترح ويؤكّده إنسان |
| المصروف الفعلي | مقابل المتوقَّع — وسداد المورّد ليس مصروفاً، وإلّا حُسب مرّتين |
| التدفّق النقدي وقائمة الدخل | ممّا هو معلوم وحده |
| بيان مصدر الرقم | «من أين جاء؟» تحت كل رقم: ما دخل وما استُبعد ولماذا |
| الفروع والحسابات | أساسٌ لا يفترض فرعاً واحداً ولا حساباً واحداً |
| ثوابت مالية في القاعدة | لا تخصيص فوق الدفعة ولا فوق الفاتورة — بمؤثِّرات لا بشيفرة |
| صحّة البيانات | نسبة تغطية كل شيء، وما ليس موصولاً يُقال عنه ذلك |
| سجل التدقيق | غير قابل للتعديل ولا الحذف — بمشغّلات في القاعدة |