هل يمكن أن يكون المبلغ رقمًا سالبًا: قواعد عمل منفصلة وقواعد نوع
اكتب جميع حقول المبلغ بالشكل `minimum: 0`، والذي يبدو صارمًا للغاية ظاهريًا، ولكنه سيمنع سجل استرداد الأموال العادي. ما إذا كان قد تم استخراج المبلغ إلى رقم وما إذا كان مسموحًا بالأرقام السالبة في هذا العمل هما مسألتان. يجب عليك أولاً تأكيد معنى المستند ثم كتابة قواعد النطاق.
إذا كنت تقوم باستخراج منظم للأوامر أو الفواتير أو المستندات المالية، فغالبًا ما يكون حقل المبلغ هو المكان الأكثر عرضة للخطأ. سيكتب العديد من الأشخاص جميع المبالغ باسم minimum: 0، وهو ما يبدو صارمًا للغاية، ولكن سيتم رفض سجلات استرداد الأموال العادية لهذا السبب.
ما إذا كان قد تم استخراج المبلغ إلى رقم وما إذا كان مسموحًا بالأرقام السالبة في هذا العمل هما مسألتان مختلفتان. تأكد أولاً مما تمثله العلامة السالبة في المستند، ثم حدد قواعد النطاق للتأكد من صحة الكتابة دون إتلاف البيانات المعقولة عن طريق الخطأ.
تستخدم هذه المقالة عينات صناعية لتوضيح طريقة المعالجة. تم فحص الكود بأمثلة في بيئة معزولة؛ وهذا لا يمثل ضمانًا لجميع الملفات الحقيقية أو أداء المنتج. قبل معالجة المستندات المهمة، يرجى الاحتفاظ بالنسخ الأصلية ومراجعتها وفقًا للحدود وبنود القبول في النص.
هل يمكن أن يكون المبلغ سلبيا؟ استنتاج جملة واحدة
يعتمد ما إذا كان المبلغ سالبًا على موافقة الشركة، وليس على نوع الحقل نفسه. حدد معنى الإشارة السالبة أولاً، ثم دع النوع يحدد القيود.
| حالتك | الممارسات الموصى بها | سبب |
|---|---|---|
| يتم التعبير عن المبالغ المستردة في الاتفاقية كمبالغ سلبية | يقتصر حقل الشحن على القيم غير السالبة، ويسمح بالقيم السالبة للمبالغ المستردة. | الرموز هي دلالات تجارية ولا يمكن أن تكون بحجم واحد يناسب الجميع |
| يستخدم النظام "المبلغ الإيجابي بالإضافة إلى نوع استرداد الأموال" | يكون المبلغ موجبًا بشكل موحد، ويتم استخدام حقل النوع للتمييز بين المبالغ المستردة | يمكن إنشاء كلا الطريقتين، ولكن يمكن اختيار طريقة واحدة فقط لنفس الواجهة. |
| مطلوب مبلغ إيجابي بدقة | استخدم exclusiveMinimum بدلاً من minimum: 0 | يحتوي minimum على حدود وسيمرر قيمًا صفرية |
| قد تكون العلامات السلبية في المصادر مفقودة أو في غير محلها | احفظ جزء النص الأصلي وراجعه يدويًا. لا تأخذ القيمة المطلقة مباشرة. | التصحيح التلقائي يمكن أن يخفي الأخطاء الحقيقية |
حدد أولاً ما تمثله الإشارة السالبة
وتنص الاتفاقية التجميعية في هذه المادة على أن الرسوم العادية ليست سالبة، ويتم التعبير عن المبالغ المستردة كمبالغ سالبة. قد تستخدم الأنظمة الحقيقية أيضًا طريقة محاسبة "المبلغ الإيجابي بالإضافة إلى نوع استرداد الأموال". يمكن إنشاء كلتا الطريقتين، لكن لا يمكنك الاعتماد على القراء للتخمين في نفس الواجهة.
تعتبر حدود نقطة الصفر هنا نموذجًا للبروتوكول وليست معيارًا موحدًا في الصناعة المالية.
دع النوع يحدد القيود
يحتوي minimum الخاص بمخطط JSON على حدود، ولا يحتوي exclusiveMinimum على حدود. إذا كانت متطلبات العمل إيجابية تمامًا، فلا يمكن استخدام minimum: 0.
قم بإدراج السيناريوهات التي تسمح بالقيم الصفرية أولاً قبل تحديد الكلمات الرئيسية لتجنب إساءة تفسير العناصر المجانية أو عمليات الشطب أو التقديرات على أنها أخطاء.
from jsonschema import Draft202012Validator
schema = {
"type": "object", "required": ["kind", "amount"],
"additionalProperties": False,
"properties": {"kind": {"enum": ["charge", "refund"]},
"amount": {"type": "number"}},
"allOf": [
{"if": {"properties": {"kind": {"const": "charge"}}},
"then": {"properties": {"amount": {"minimum": 0}}}},
{"if": {"properties": {"kind": {"const": "refund"}}},
"then": {"properties": {"amount": {"exclusiveMaximum": 0}}}}
]
}
v = Draft202012Validator(schema)
valid = lambda x: not list(v.iter_errors(x))
assert valid({"kind": "charge", "amount": 0})
assert valid({"kind": "refund", "amount": -12.5})
assert not valid({"kind": "refund", "amount": 12.5})
assert not valid({"kind": "charge", "amount": True})
assert not valid({"amount": 12.5})
يعتمد المثال على jsonschema ويتم التحقق منه وفقًا لمسودة 2020-12. ولا يقوم بتحويل العملة، ولا يتحقق من العلاقة بين العناصر والإجماليات.
تتطلب حسابات العملة دقة واضحة واستراتيجيات تقريب. لمجرد أن القيم اجتازت التحقق من المخطط، لا يمكنك استخدام أرقام الفاصلة العائمة للتراكم حسب الرغبة.
عند الإبلاغ عن خطأ، يجب عليك الإشارة إلى سياق العمل
عند فشل عملية التحقق، من المفترض أن تساعد رسالة الخطأ الأشخاص في تحديد السبب، بدلاً من مجرد الإشارة إلى "غير قانوني".
| يراقب | المعالجة هنا | لا تزال بحاجة للتحقق |
|---|---|---|
| استرداد إيجابي | يرفض | هل الرمز مفقود أم أن المصدر يستخدم بروتوكولًا آخر؟ |
| التهمة صفر | قبول الهيكل | هل هو مشروع مجاني؟ |
| المبلغ عبارة عن سلسلة | نوع الرفض | الآلاف يضعون العلامات والعملة والقواعد العشرية |
| نوع مفقود | يرفض | تخمين نوع الوثيقة دون الاعتماد على علامة المبلغ |
لا تستخدم القيم المطلقة التلقائية للتغطية على الأخطاء
قد تظهر الشرطات المفقودة في التعرف الضوئي على الحروف، أو الإشارات السلبية المتحركة أثناء الترجمة، أو العمل الذي يستخدم اصطلاحات الإشارة المعاكسة، على أنها نفس الحالة الشاذة.
سيؤدي استدعاء abs() مباشرة إلى إزالة القرائن التشخيصية المهمة. الطريقة الأكثر أمانًا هي حفظ أجزاء النص الأصلي وأرقام الصفحات والسلاسل قبل التحليل، ثم تحديد ما إذا كنت تريد إعادة الاستخراج أو المراجعة يدويًا.
تحقق من المبلغ واكتبه معًا عند التوصيل
عند استخدام OmniDoc (بوابة المنتج) لمعالجة المستندات التي تحتوي على مبالغ، يمكنك استخدام جدول القاعدة هذا كجزء من قبول ما بعد الترجمة: ليس فقط التحقق من فقدان الأرقام، ولكن أيضًا ما إذا كان سياق المبالغ المستردة والاعتمادات وما إلى ذلك قد تغير.
يمكن أن تساعد الأدوات في إكمال الترجمة، ولكن يجب أن تظل اتفاقية المبلغ واضحة من قبل الجانب التجاري.
📊 المقارنة الأساسية
| يمارس | معنى الإشارة السلبية | مناسبة للمشهد | ملحوظة |
|---|---|---|---|
| استرداد بمبلغ سلبي | علامة سلبية تشير إلى استرداد | وقد اتفق الاتفاق على استخدام الرموز لتمييز الاتجاهات | يجب أن يقتصر حقل الرسوم على القيم غير السالبة، ويسمح حقل استرداد القيم السالبة. |
| المبلغ الإيجابي بالإضافة إلى نوع استرداد الأموال | العلامة السلبية لا تحمل أي معنى تجاري | يقوم النظام بتمييز المبالغ المستردة حسب حقل النوع | يكون المبلغ موجبًا بشكل موحد، ويجب التحقق من النوع في نفس الوقت. |
minimum: 0 | يحتوي على قيمة صفر | المبالغ التي تسمح بقيم صفرية | سيتم إصدار قيم صفرية، وهي غير مناسبة للسيناريوهات الإيجابية تمامًا |
exclusiveMinimum: 0 | لا تحتوي على قيمة صفر | يشترط بصرامة أن يكون المبلغ إيجابيا | تحتاج إلى التأكد من أنه لن يتم رفض العناصر المجانية أو عمليات الإلغاء عن طريق الخطأ |
🎯 ما هي الطريقة المناسبة لك؟
إذا كانت اتفاقيتك تستخدم مبلغًا سالبًا للإشارة إلى استرداد الأموال
- قم بتعيين قيود غير سلبية لحقل الرسوم، واسمح بالقيم السالبة لحقل استرداد الأموال، واكتب الاتفاقية في المستند.
إذا كان نظامك يستخدم "المبلغ الإيجابي بالإضافة إلى نوع استرداد الأموال"
- يجب أن يكون حقل المبلغ موجبًا بشكل موحد، ويجب التحقق من حقل النوع في نفس الوقت لتجنب الحكم على طبيعة المستند بمجرد النظر إلى الأرقام.
إذا كان مبلغ متطلبات العمل إيجابيًا تمامًا
- استخدم
exclusiveMinimumوتحقق أولاً لمعرفة ما إذا كان سيتم رفض العناصر المجانية والحسومات والتقديرات عن طريق الخطأ.
في حالة فقدان الإشارة السلبية للملف المصدر
- الاحتفاظ بأجزاء النص الأصلية وأرقام الصفحات والسلاسل التي تم تحليلها مسبقًا ومراجعتها يدويًا قبل إدخالها في قاعدة البيانات. لا تأخذ القيمة المطلقة مباشرة.
❓ الأسئلة الشائعة (الأسئلة الشائعة)
1. ما الفرق بين minimum وexclusiveMinimum؟
يحتوي minimum على قيم حدودية، ولا يحتوي exclusiveMinimum على قيم حدودية. إذا كانت متطلبات العمل إيجابية تمامًا، فلا يمكن استخدام minimum: 0.
2. إذا نجح التحقق من المخطط، فهل سيكون المبلغ صحيحًا؟
غير مؤكد. لا يقوم المثال بإجراء تحويل العملة، كما أنه لا يتحقق من العلاقة بين العناصر والإجماليات؛ تتطلب حسابات العملة أيضًا دقة واضحة واستراتيجيات تقريب.
3. لماذا لا يمكن تجميع المبلغ مباشرة باستخدام أرقام الفاصلة العائمة؟
تتطلب حسابات العملة دقة واضحة واستراتيجيات تقريب. لا يمكن استخدام أرقام الفاصلة العائمة للتراكم بشكل عشوائي لمجرد أن القيم اجتازت التحقق من المخطط.
4. عند مواجهة استثناء الإشارة السالبة، هل يمكنك أخذ القيمة المطلقة مباشرة؟
غير مستحسن. قد تؤدي الكلمات المفقودة في التعرف الضوئي على الحروف، أو الإشارات السلبية المتحركة في الترجمة، أو اصطلاحات رموز الأعمال المختلفة إلى حدوث خلل. سيؤدي أخذ القيمة المطلقة مباشرة إلى القضاء على القرائن التشخيصية.
📝 ملخص
مفتاح حقل المبلغ هو التأكد أولاً مما تمثله العلامة السالبة، ثم السماح للنوع بتحديد القيود. من خلال الفصل بين قواعد العمل وقواعد النوع، لا يمكنك رفض المبالغ المستردة عن طريق الخطأ ولا تفويت الأخطاء الحقيقية.
جربه الآن: قم بتحميل المستند لبدء الترجمة، مع الاحتفاظ بالتخطيط الأصلي
المراجع: القيود العددية لمخطط JSON


