feat: P2 — التسوية بالرسائل + إزالة مارتن + مستند البنية (docs/25)
P2 (كليك/شام كاش بلا API): - الرسالة تُحفظ خاماً **قبل** أي تحليل: التحليل قد يفشل فنحتاج الأصل لإعادة المعالجة، وعند النزاع يكون النصّ الأصلي هو الحجّة لا تفسيرُنا له. - النقطة تصنع المال، فرسالة مزوّرة = رصيد من عدم. الحماية: سرّ لكل مستأجر بمقارنة ثابتة الزمن (المقارنة النصّية تسرّب السرّ حرفاً حرفاً زمنياً)، وبصمة محتوى فريدة تمنع احتساب إعادة الإرسال مرتين. - Gemini بحرارة صفر ومطالَب بإرجاع null عند عدم اليقين: نموذج يخمّن مبلغاً يسوّي فاتورة بمال لم يصل. بلا مبلغ صريح → مراجعة بشرية لا تسوية. - المطابقة بالمرجع أولاً، ثم بالمبلغ خلال 24 ساعة وبشرط فاتورة وحيدة — فاتورتان بنفس المبلغ التباسٌ يُراجَع، لا تسويةٌ عشوائية لإحداهما. - التسوية تمرّ بـmarkSuccess نفسه فلا يتفرّع مسار مالي ثانٍ. إزالة حاوية martin: انطلق منصّة قائمة بذاتها لها خوادمها؛ دورنا طلب وردّ لا استضافة خرائط (قرار المالك). docs/25: جرد الحاويات · لماذا الدفع ليس خدمة منفصلة · سيرفر السوبر-أدمن المنفصل ونطاقه الفرعي · WebSocket مقابل الاستطلاع بالأرقام · أحجام السيرفرات على أساس الذروة لا المعدّل · نقل مستأجر · ترتيب التوسّع. 13 اختباراً جديداً (201 إجمالاً، كلها خضراء). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
b1a060c5ed
commit
da035e46a4
@@ -56,6 +56,33 @@ export class GeminiService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* يستخرج حقول تحويل مالي من نصّ رسالة المزوّد (docs/24 §5 — P2).
|
||||
*
|
||||
* `temperature: 0` وتعليماتٌ صريحة بإرجاع `null` عند عدم اليقين: النموذج
|
||||
* الذي «يخمّن» مبلغاً غير مذكور يسوّي فاتورة بمال لم يصل. عدم المطابقة
|
||||
* ومراجعةٌ بشرية أهون بكثير من تسويةٍ خاطئة.
|
||||
*/
|
||||
async extractTransferSms(body: string, provider: string): Promise<any> {
|
||||
const prompt = [
|
||||
`أنت محلّل رسائل تحويل مالي من مزوّد الدفع "${provider}".`,
|
||||
'استخرج من النصّ التالي JSON بالحقول:',
|
||||
'{ "amount": number|null, "currency": string|null, "reference": string|null,',
|
||||
' "sender_name": string|null, "sender_phone": string|null, "is_incoming": boolean }',
|
||||
'',
|
||||
'قواعد صارمة:',
|
||||
'- `amount` المبلغ المُستلَم فقط. إن لم يُذكر صراحةً فأعد null — لا تحسبه ولا تخمّنه.',
|
||||
'- `reference` رقم العملية/الحوالة كما ورد حرفياً.',
|
||||
'- `is_incoming` = true فقط إن كانت الرسالة تؤكّد **استلام** مبلغ.',
|
||||
'- أي حقل غير مذكور صراحةً = null. لا تخترع قيمة أبداً.',
|
||||
'',
|
||||
'النصّ:',
|
||||
body,
|
||||
].join('\n');
|
||||
|
||||
return this.generateJson(prompt, []);
|
||||
}
|
||||
|
||||
/** يستخرج حقول وثيقة من صورتها. */
|
||||
async extractDocument(image: GeminiImage, docType: string): Promise<any> {
|
||||
if (!this.enabled) return { enabled: false };
|
||||
|
||||
Reference in New Issue
Block a user