عنوان المشروع:
تطوير تطبيق Canvas App على Power Apps لإدارة دورة الصيانة الكهربائية مع ربطه بقوائم SharePoint موجودة — مع تسليم ملف .msapp
خبرات المطور المطلوبة:
• خبرة متقدمة في بناء Canvas Apps على Power Apps
• خبرة في ربط Power Apps بقوائم SharePoint
• معرفة بمعادلات Power Apps: Filter / LookUp / Patch / Collect / CountIf / DateAdd
• خبرة في بناء تطبيقات تعمل على الآيفون بشكل احترافي
• القدرة على تصدير التطبيق كملف .msapp قابل للاستيراد
• يفضل وجود أمثلة أو محفظة أعمال سابقة في Power Apps
نظرة عامة:
تطبيق Canvas App على Power Apps مرتبط بـ SharePoint لإدارة دورة الصيانة الكهربائية الكاملة. المستخدم الرئيسي مهندس كهربائي يعمل ميدانياً على الآيفون. المواقع الحالية كلية التمريض ومعهد التمريض وقابلة للزيادة مستقبلاً.
الدورة المستندية الكاملة:
1. كتاب صيانة من الجهة المستفيدة برقم صادر — أو عمل طارئ بدون كتاب
2. زيارة ميدانية لفحص الأعطال وتسجيلها مع تفاصيل كل عطل وموقعه المستقل
3. إنشاء مسودة أو أكثر لأوامر العمل — كل مسودة لها عنوان مختلف ومدة تنفيذ
4. تحويل المسودات لأوامر عمل رسمية برقم رسمي وتواريخ بعد اعتماد المحاسبة
5. زيارة استلام — مسودة استلام مع إمكانية تعديل البنود والكميات
6. استلام نهائي — إغلاق الدورة وتحديث الحصر
ملاحظة: كتاب واحد يمكن أن ينتج عنه أكثر من مسودة أمر عمل — المهندس يوزع البنود يدوياً.
ملاحظة: الزيارة الميدانية يمكن حفظها والعودة إليها لاحقاً — لا تغلق حتى يضغط المهندس إنهاء الفحص.
قوائم SharePoint — 13 قائمة موجودة مسبقاً:
القائمة 1: Sites
• Title: اسم الموقع
• SiteColor: كود اللون مثل #0078D4
• Notes: ملاحظات
القائمة 2: Buildings
• Title: اسم المبنى
• SiteID: Lookup من Sites
• Notes: ملاحظات
القائمة 3: Floors
• Title: رمز الدور — GF أو 1F أو 2F أو EXT
• BuildingID: Lookup من Buildings
• FloorOrder: Number للترتيب
القائمة 4: Locations
• Title: اسم المنطقة — نص حر مثل ممر B أو قاعة 101
• BuildingID: Lookup من Buildings
• FloorID: Lookup من Floors
• CurrentStock: Multiple lines — الحصر الحالي
• Notes: ملاحظات
• ملاحظة مهمة: المقارنة دائماً Case Insensitive — G22 و g22 نفس المنطقة. استخدم Lower() عند المقارنة.
القائمة 5: Contracts
• Title: رقم العقد أو اسمه
القائمة 6: MaintenanceRequests
• Title: رقم الكتاب أو كلمة طارئ
• IsEmergency: Yes/No
• BookNumber: Single line — رقم الكتاب الصادر
• RequestDate: Date
• SiteID: Lookup من Sites
• ContractID: Lookup من Contracts
• Status: Choice — Open / In Progress / Completed / Archived
• BookPDF: Hyperlink — رابط PDF كتاب الصيانة
• Notes: ملاحظات
القائمة 7: InspectionVisits
• Title: تلقائي
• RequestID: Lookup من MaintenanceRequests
• VisitDate: Date
• Status: Choice — Draft / Completed
• Notes: ملاحظات
• ملاحظة مهمة: الزيارة تحفظ كـ Draft ويمكن الإكمال في يوم آخر — تغلق فقط عند الضغط على إنهاء الفحص.
القائمة 8: FaultItems
• Title: تلقائي
• VisitID: Lookup من InspectionVisits
• BuildingID: Lookup من Buildings
• FloorID: Lookup من Floors
• LocationName: Single line — نص حر
• ElementType: Choice — إنارة / مقبس / مفتاح / لوحة DB / مروحة / Hand Dryer / أخرى
• ElementOther: Single line — يظهر عند اختيار أخرى
• FaultType: Choice — Half Trip / Overload / قاطع تالف / سلك مقطوع / وحدة تالفة / أخرى
• FaultOther: Single line — يظهر عند اختيار أخرى
• Quantity: Number
• CeilingHeight: Choice — أقل من 6م / أكثر من 6م — يظهر فقط عند اختيار إنارة
• Items: Multiple lines — البنود ورقم كل بند وكميته
• Priority: Choice — عاجل / عادي
• Notes: ملاحظات
• ملاحظة مهمة: كل عطل مستقل بموقعه — في زيارة واحدة ممكن 40 عطل أو أكثر في مناطق مختلفة.
القائمة 9: DraftOrders
• Title: عنوان المسودة — يكتبه المهندس يدوياً
• RequestID: Lookup من MaintenanceRequests
• DraftDate: Date
• Duration: Number — مدة التنفيذ بالأيام
• Items: Multiple lines — البنود الموزعة
• Status: Choice — Draft / Converted / Rejected / Archived
• DraftPDF: Hyperlink — رابط PDF المسودة بعد التوقيع
• Notes: ملاحظات
• ملاحظة مهمة: كتاب واحد يمكن أن ينتج عنه أكثر من مسودة — لا يوجد رقم رسمي قبل الاعتماد.
القائمة 10: WorkOrders
• Title: تلقائي
• DraftID: Lookup من DraftOrders
• RequestID: Lookup من MaintenanceRequests
• WorkOrderNo: Single line — رقم أمر العمل الرسمي
• StartDate: Date
• Duration: Number — ينتقل تلقائياً من المسودة
• DeadlineDate: Date — يحسب تلقائياً = StartDate + Duration
• Status: Choice — Active / Completed / Archived
• OfficialPDF: Hyperlink — رابط PDF أمر العمل الرسمي
• Notes: ملاحظات
• ملاحظة: آخر موعد = DateAdd(StartDate, Duration, Days)
القائمة 11: HandoverDrafts
• Title: تلقائي
• WorkOrderID: Lookup من WorkOrders
• HandoverDate: Date
• Items: Multiple lines — البنود المستلمة مع الكميات الفعلية
• Result: Choice — Accepted / Accepted with Notes / Rejected
• HandoverPDF: Hyperlink — رابط PDF المسودة بعد التوقيع
• Notes: ملاحظات
• ملاحظة مهمة: يمكن تعديل كمية أي بند / حذف بند / إضافة بند جديد مع كميته.
القائمة 12: FinalHandovers
• Title: تلقائي
• WorkOrderID: Lookup من WorkOrders
• HandoverDraftID: Lookup من HandoverDrafts
• FinalDate: Date
• FinalItems: Multiple lines
• FinalResult: Choice — Accepted / Accepted with Notes
• FinalPDF: Hyperlink
• Notes: ملاحظات
القائمة 13: LocationHistory
• Title: تلقائي
• FinalHandoverID: Lookup من FinalHandovers
• WorkOrderID: Lookup من WorkOrders
• LocationName: Single line
• BuildingID: Lookup من Buildings
• FloorID: Lookup من Floors
• ElementType: Single line
• OldValue: Multiple lines — الحصر القديم
• NewValue: Multiple lines — الحصر الجديد
• ChangeDate: Date
• ملاحظة: يسجل تلقائياً عند اعتماد الاستلام النهائي.
شاشات التطبيق — 11 شاشة:
مرفق ملف HTML يعرض النموذج البصري الكامل لكل شاشة.
شاشة 1 — الرئيسية:
شريط أزرق علوي مع اسم التطبيق. 4 بطاقات إحصائية حية من WorkOrders: إجمالي / مفتوح / جاري / مكتمل. 6 بطاقات تنقل للشاشات الرئيسية. قائمة آخر 5 نشاطات. Bottom Navigation بـ 4 أزرار.
شاشة 2 — الطلبات والسجل (شاشة موحدة):
Search Bar يبحث في رقم الكتاب ورقم أمر العمل معاً — البحث Case Insensitive. فلاتر: الكل / كلية التمريض / معهد التمريض / مفتوح / جاري / مكتمل / أرشيف / طارئ. كل بطاقة تظهر بلون الموقع على حافتها. تقسيم بصري بين النشط والمكتمل والمؤرشف.
شاشة 3 — طلب جديد:
Toggle كتاب صيانة / عمل طارئ — عند اختيار طارئ يختفي حقل رقم الكتاب. Dropdown الموقع من Sites. Dropdown العقد من Contracts. زر رفع PDF كتاب الصيانة.
شاشة 4 — الفحص الميداني (الأهم):
الشاشة تدعم Scroll بلا حد لعدد الأعطال. كل عطل يسجل مع موقعه المستقل: المبنى + الدور + المنطقة. بطاقة لكل عطل تظهر الموقع الكامل + نوع العطل + البنود + أزرار تعديل وحذف. زر حفظ مؤقت للإكمال لاحقاً. زر إنهاء الفحص ينتقل لشاشة إنشاء المسودات.
شاشة 5 — إضافة عطل:
Dropdown المبنى مفلتر بالموقع. Dropdown الدور مفلتر بالمبنى. نص حر للمنطقة. ElementType قائمة + خيار أخرى يفتح حقل نص. FaultType قائمة + خيار أخرى يفتح حقل نص. CeilingHeight يظهر فقط عند اختيار إنارة. البنود حقل نص + كمية + زر إضافة بند جديد بلا حد.
شاشة 6 — إنشاء المسودات وتوزيع البنود:
Dropdown لاختيار الكتاب المرتبط. عرض كل البنود من الفحص. قائمة المسودات مع زر إضافة مسودة جديدة. كل مسودة: حقل عنوان نص حر + مدة التنفيذ + البنود الموزعة عليها. زر تعديل وحذف لكل مسودة.
شاشة 7 — تفاصيل مسودة:
عنوان + تاريخ + مدة + قائمة البنود مع تعديل. زر رفع PDF المسودة الموقعة. زر تحويل لأمر عمل. زر حذف مع تأكيد. زر أرشفة.
شاشة 8 — أمر العمل الرسمي:
حقل رقم أمر العمل + تاريخ البداية. المدة تنتقل تلقائياً من المسودة وغير قابلة للتعديل. آخر موعد يحسب تلقائياً = DateAdd(StartDate, Duration, Days). قسم المستندات: PDF الكتاب + PDF المسودة + زر رفع PDF أمر العمل الرسمي.
شاشة 9 — الاستلام:
تاريخ الاستلام. Toggle النتيجة: مطابق / مطابق مع ملاحظات / مرفوض. قائمة البنود مع أزرار + و - لتعديل الكمية مع تنبيه عند التغيير. زر حذف بند مع تأكيد. زر إضافة بند جديد: حقل نص + كمية — البنود الجديدة بلون أخضر. قسم تحديث الحصر يظهر التغييرات من القديم إلى الجديد مع تأكيد / تعديل / تخطي. زر رفع PDF مسودة الاستلام والاستلام النهائي. زر حفظ مسودة وزر استلام نهائي مع تأكيد.
شاشة 10 — تفاصيل السجل (Timeline):
معلومات الطلب: الموقع + رقم الكتاب + أوامر العمل + الحالة. Timeline الدورة الكاملة: أخضر = مكتمل / أزرق = جارٍ / رمادي = في الانتظار. كل مرحلة تظهر التاريخ والـ PDF المرتبط. زر المتابعة ينقل للمرحلة الحالية.
شاشة 11 — إعدادات المواقع:
قائمة المواقع مع إضافة / تعديل / حذف. كل مستوى (موقع / مبنى / دور) قابل للإدارة من التطبيق مباشرة بدون الحاجة لـ SharePoint. رسالة تأكيد عند الحذف.
قواعد برمجية مهمة:
Case Insensitive للمناطق:
Lower(TextInput.Text) = Lower(ThisItem.LocationName)
حساب آخر موعد تلقائياً:
DateAdd(StartDatePicker.SelectedDate, Value(DurationInput.Text), TimeUnit.Days)
فلترة المباني حسب الموقع:
Filter(Buildings, SiteID.Id = SiteDropdown.Selected.Id)
فلترة الأدوار حسب المبنى:
Filter(Floors, BuildingID.Id = BuildingDropdown.Selected.Id)
قواعد عامة:
• كل عملية حذف تسبقها رسالة تأكيد
• السجلات المكتملة والمرفوضة تؤرشف ولا تحذف
• كل الشاشات تدعم Scroll
• كل شيء قابل للتعديل في أي وقت
• التطبيق يعمل على الآيفون بشكل احترافي
مواصفات التصميم:
• الخلفية: #F3F2F1
• الأزرار والشريط العلوي: #0078D4
• النجاح: #107C10
• التحذير: #FF8C00
• الخطر: #D13438
• النصوص: #323130
• البطاقات: #
• الخط: Segoe UI
• النمط: Microsoft Fluent Design
متطلبات التسليم:
1. ملف .msapp جاهز للاستيراد على Power Apps
2. قائمة بأسماء كل Data Source وكيفية ربطها بـ SharePoint
3. شرح المعادلات المخصصة المهمة
4. التطبيق يعمل على الآيفون بشكل احترافي
ملاحظة: لن يتم مشاركة أي بيانات أو حسابات — الربط بـ SharePoint يتم من طرف صاحب المشروع بعد الاستلام.
النموذج البصري HTML — لمعاينة كل شاشة
| تاريخ التسجيل | |
| معدل التوظيف | |
| المشاريع المفتوحة | 0 |
| مشاريع قيد التنفيذ | 1 |
| التواصلات الجارية | 2 |
أ / دلال، قرأت توصيف المشروع بعناية، وأستطيع القول بثقة: هذا النوع من الأنظمة هو تحديدا ما أتخصص في بنائه. ما تصفينه ليس مجرد تطبيق بل منظومة تشغيلية متكاملة بم...
السلام عليكم أستاذة دلال، قرأت مشروعكم كامل بتركيز، وبصراحة هذا من النوع اللي يبان فيه مباشرة إذا المطور فاهم Power Apps فعلا أو لا لأن المشروع مشي مجرد شاشات، ...
أنا مبرمج أستطيع تنفيذ Canvas App على Power Apps لإدارة دورة الصيانة الكهربائية كاملة وربطه بقوائم SharePoint الموجودة، مع بناء التطبيق ليعمل باحترافية على الآي...
السلام عليكم، أنا أحمد مهندس برمجيات بـ خبرة تزيد عن ٣ سنوات، يمكنك تفقد تقييماتي وحيث أن أول مشروع عملت عليه كان مشروع عمل Canvas على PowerApps، يمكنني عمل الم...
السلام عليكم أستاذة دلال أنا أقدر أنفذ التطبيق المطلوب على power apps وربطه بقوائم sharepoint الموجودة عندكم وتسليمه كملف msapp جاهز للاستيراد الفكرة واضحة عندي...