تصميم وحدة التسعير المتكاملة وتحليل الأسعار
هيكل قاعدة البيانات
جدول فئات البنود (pricing_categories)
CREATE TABLE pricing_categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
جدول وحدات القياس (measurement_units)
CREATE TABLE measurement_units (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
symbol TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
جدول بنود التسعير الأساسية (pricing_items_base)
CREATE TABLE pricing_items_base (
id INTEGER PRIMARY KEY AUTOINCREMENT,
code TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT,
category_id INTEGER,
unit_id INTEGER,
base_price REAL NOT NULL,
last_updated_date TEXT,
price_source TEXT,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES pricing_categories (id),
FOREIGN KEY (unit_id) REFERENCES measurement_units (id)
);
جدول تاريخ أسعار البنود (pricing_items_history)
CREATE TABLE pricing_items_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
base_item_id INTEGER,
price REAL NOT NULL,
price_date TEXT NOT NULL,
price_source TEXT,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (base_item_id) REFERENCES pricing_items_base (id)
);
جدول بنود التسعير للمشاريع (project_pricing_items)
CREATE TABLE project_pricing_items (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER,
base_item_id INTEGER,
item_number TEXT NOT NULL,
description TEXT NOT NULL,
unit_id INTEGER,
quantity REAL NOT NULL,
unit_price REAL NOT NULL,
total_price REAL NOT NULL,
direct_cost REAL,
indirect_cost REAL,
profit_margin REAL,
risk_factor REAL,
notes TEXT,
created_by INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (project_id) REFERENCES projects (id),
FOREIGN KEY (base_item_id) REFERENCES pricing_items_base (id),
FOREIGN KEY (unit_id) REFERENCES measurement_units (id),
FOREIGN KEY (created_by) REFERENCES users (id)
);
جدول مكونات بنود التسعير (pricing_item_components)
CREATE TABLE pricing_item_components (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pricing_item_id INTEGER,
component_type TEXT NOT NULL,
component_name TEXT NOT NULL,
unit_id INTEGER,
quantity REAL NOT NULL,
unit_price REAL NOT NULL,
total_price REAL NOT NULL,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pricing_item_id) REFERENCES project_pricing_items (id),
FOREIGN KEY (unit_id) REFERENCES measurement_units (id)
);
جدول عوامل التعديل (adjustment_factors)
CREATE TABLE adjustment_factors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT,
factor_type TEXT NOT NULL,
value REAL NOT NULL,
start_date TEXT,
end_date TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
جدول نماذج التسعير (pricing_templates)
CREATE TABLE pricing_templates (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT,
created_by INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (created_by) REFERENCES users (id)
);
جدول بنود نماذج التسعير (pricing_template_items)
CREATE TABLE pricing_template_items (
id INTEGER PRIMARY KEY AUTOINCREMENT,
template_id INTEGER,
base_item_id INTEGER,
item_number TEXT NOT NULL,
description TEXT NOT NULL,
unit_id INTEGER,
unit_price REAL NOT NULL,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (template_id) REFERENCES pricing_templates (id),
FOREIGN KEY (base_item_id) REFERENCES pricing_items_base (id),
FOREIGN KEY (unit_id) REFERENCES measurement_units (id)
);
جدول تنبؤات الأسعار (price_forecasts)
CREATE TABLE price_forecasts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
base_item_id INTEGER,
forecast_date TEXT NOT NULL,
forecast_price REAL NOT NULL,
forecast_model TEXT,
confidence_level REAL,
scenario TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (base_item_id) REFERENCES pricing_items_base (id)
);
هيكل الكلاسات
1. مدير التسعير (PricingManager)
class PricingManager:
"""فئة مدير التسعير الرئيسية"""
def __init__(self, db_connector, config):
"""تهيئة مدير التسعير"""
self.db = db_connector
self.config = config
self.item_manager = PricingItemManager(db_connector)
self.cost_calculator = CostCalculator(db_connector)
self.price_analyzer = PriceAnalyzer(db_connector)
self.price_forecaster = PriceForecaster(db_connector)
self.report_generator = PricingReportGenerator(db_connector)
def initialize_database(self):
"""تهيئة قاعدة البيانات للتسعير"""
pass
def load_default_data(self):
"""تحميل البيانات الافتراضية"""
pass
def get_project_pricing_summary(self, project_id):
"""الحصول على ملخص التسعير للمشروع"""
pass
def import_pricing_data(self, file_path, import_type):
"""استيراد بيانات التسعير من ملف خارجي"""
pass
def export_pricing_data(self, project_id, export_type, file_path):
"""تصدير بيانات التسعير إلى ملف خارجي"""
pass
2. مدير بنود التسعير (PricingItemManager)
class PricingItemManager:
"""فئة إدارة بنود التسعير"""
def __init__(self, db_connector):
"""تهيئة مدير بنود التسعير"""
self.db = db_connector
def get_all_base_items(self, filters=None):
"""الحصول على جميع البنود الأساسية"""
pass
def get_base_item_by_id(self, item_id):
"""الحصول على بند أساسي بواسطة المعرف"""
pass
def add_base_item(self, item_data):
"""إضافة بند أساسي جديد"""
pass
def update_base_item(self, item_id, item_data):
"""تحديث بند أساسي"""
pass
def delete_base_item(self, item_id):
"""حذف بند أساسي"""
pass
def get_project_items(self, project_id):
"""الحصول على بنود المشروع"""
pass
def add_project_item(self, project_id, item_data):
"""إضافة بند للمشروع"""
pass
def update_project_item(self, item_id, item_data):
"""تحديث بند المشروع"""
pass
def delete_project_item(self, item_id):
"""حذف بند المشروع"""
pass
def get_item_components(self, item_id):
"""الحصول على مكونات البند"""
pass
def add_item_component(self, item_id, component_data):
"""إضافة مكون للبند"""
pass
def update_item_component(self, component_id, component_data):
"""تحديث مكون البند"""
pass
def delete_item_component(self, component_id):
"""حذف مكون البند"""
pass
def get_categories(self):
"""الحصول على فئات البنود"""
pass
def get_measurement_units(self):
"""الحصول على وحدات القياس"""
pass
def get_templates(self):
"""الحصول على نماذج التسعير"""
pass
def get_template_items(self, template_id):
"""الحصول على بنود النموذج"""
pass
def apply_template_to_project(self, project_id, template_id):
"""تطبيق نموذج على مشروع"""
pass
3. حاسبة التكاليف (CostCalculator)
class CostCalculator:
"""فئة حساب التكاليف"""
def __init__(self, db_connector):
"""تهيئة حاسبة التكاليف"""
self.db = db_connector
def calculate_direct_costs(self, project_id):
"""حساب التكاليف المباشرة"""
pass
def calculate_indirect_costs(self, project_id, indirect_cost_percentage):
"""حساب التكاليف غير المباشرة"""
pass
def calculate_profit_margin(self, project_id, profit_percentage):
"""حساب هامش الربح"""
pass
def calculate_risk_contingency(self, project_id, risk_factors):
"""حساب احتياطي المخاطر"""
pass
def calculate_taxes_and_fees(self, project_id, tax_rates):
"""حساب الضرائب والرسوم"""
pass
def calculate_total_cost(self, project_id):
"""حساب التكلفة الإجمالية"""
pass
def calculate_unit_rates(self, project_id):
"""حساب معدلات الوحدات"""
pass
def apply_adjustment_factors(self, project_id, factors):
"""تطبيق عوامل التعديل"""
pass
def calculate_cost_breakdown(self, project_id):
"""حساب تفصيل التكاليف"""
pass
4. محلل الأسعار (PriceAnalyzer)
class PriceAnalyzer:
"""فئة تحليل الأسعار"""
def __init__(self, db_connector):
"""تهيئة محلل الأسعار"""
self.db = db_connector
def get_price_history(self, item_id):
"""الحصول على تاريخ الأسعار"""
pass
def analyze_price_trends(self, item_id, start_date, end_date):
"""تحليل اتجاهات الأسعار"""
pass
def compare_prices(self, items, date=None):
"""مقارنة الأسعار"""
pass
def calculate_price_volatility(self, item_id, period):
"""حساب تقلب الأسعار"""
pass
def perform_sensitivity_analysis(self, project_id, variable_items, ranges):
"""إجراء تحليل الحساسية"""
pass
def analyze_price_correlations(self, items):
"""تحليل ارتباطات الأسعار"""
pass
def compare_with_market_prices(self, items):
"""مقارنة مع أسعار السوق"""
pass
def analyze_cost_drivers(self, project_id):
"""تحليل محركات التكلفة"""
pass
def generate_price_analysis_charts(self, analysis_type, params):
"""إنشاء رسوم بيانية لتحليل الأسعار"""
pass
5. متنبئ الأسعار (PriceForecaster)
class PriceForecaster:
"""فئة التنبؤ بالأسعار"""
def __init__(self, db_connector):
"""تهيئة متنبئ الأسعار"""
self.db = db_connector
def forecast_price(self, item_id, forecast_date, model_type='arima'):
"""التنبؤ بالسعر"""
pass
def generate_price_scenarios(self, item_id, forecast_date):
"""إنشاء سيناريوهات الأسعار"""
pass
def calculate_inflation_impact(self, project_id, inflation_rate, duration):
"""حساب تأثير التضخم"""
pass
def forecast_project_costs(self, project_id, forecast_date):
"""التنبؤ بتكاليف المشروع"""
pass
def evaluate_forecast_accuracy(self, item_id):
"""تقييم دقة التنبؤ"""
pass
def generate_forecast_charts(self, item_id, forecast_date):
"""إنشاء رسوم بيانية للتنبؤ"""
pass
6. مولد تقارير التسعير (PricingReportGenerator)
class PricingReportGenerator:
"""فئة إنشاء تقارير التسعير"""
def __init__(self, db_connector):
"""تهيئة مولد تقارير التسعير"""
self.db = db_connector
def generate_cost_summary_report(self, project_id):
"""إنشاء تقرير ملخص التكاليف"""
pass
def generate_detailed_items_report(self, project_id):
"""إنشاء تقرير تفصيلي للبنود"""
pass
def generate_price_comparison_report(self, items, parameters):
"""إنشاء تقرير مقارنة الأسعار"""
pass
def generate_sensitivity_analysis_report(self, project_id, parameters):
"""إنشاء تقرير تحليل الحساسية"""
pass
def generate_price_forecast_report(self, items, forecast_date):
"""إنشاء تقرير التنبؤ بالأسعار"""
pass
def generate_price_risk_report(self, project_id):
"""إنشاء تقرير مخاطر الأسعار"""
pass
def export_report_to_pdf(self, report_data, file_path):
"""تصدير التقرير إلى PDF"""
pass
def export_report_to_excel(self, report_data, file_path):
"""تصدير التقرير إلى Excel"""
pass
تصميم واجهة المستخدم
1. الشاشة الرئيسية لوحدة التسعير
+--------------------------------------------------+
| وحدة التسعير |
+--------------------------------------------------+
| |
| +----------------+ +----------------------+ |
| | المناقصات | | إحصائيات التسعير | |
| | الحالية | | | |
| | | | | |
| | | | | |
| | | | | |
| +----------------+ +----------------------+ |
| |
| +----------------+ +----------------------+ |
| | الوصول | | آخر التحديثات | |
| | السريع | | | |
| | | | | |
| | | | | |
| | | | | |
| +----------------+ +----------------------+ |
| |
+--------------------------------------------------+
2. شاشة إدارة بنود التسعير
+--------------------------------------------------+
| إدارة بنود التسعير |
+--------------------------------------------------+
| بحث: [ ] [تصفية▼] [تصدير] |
+--------------------------------------------------+
| # | الكود | الوصف | الوحدة | الكمية | السعر | المجموع |
+--------------------------------------------------+
| 1 | | | | | | |
| 2 | | | | | | |
| 3 | | | | | | |
| 4 | | | | | | |
| 5 | | | | | | |
+--------------------------------------------------+
| [إضافة بند] [حذف المحدد] [استيراد من Excel] |
+--------------------------------------------------+
| المجموع الكلي: |
+--------------------------------------------------+
3. شاشة تفاصيل البند
+--------------------------------------------------+
| تفاصيل البند |
+--------------------------------------------------+
| الكود: [ ] الوصف: [ ] |
| الفئة: [ ▼] الوحدة: [ ▼] |
+--------------------------------------------------+
| مكونات البند: |
+--------------------------------------------------+
| النوع | الوصف | الوحدة | الكمية | السعر | المجموع |
+--------------------------------------------------+
| مواد | | | | | |
| عمالة | | | | | |
| معدات | | | | | |
| أخرى | | | | | |
+--------------------------------------------------+
| [إضافة مكون] [حذف المحدد] |
+--------------------------------------------------+
| التكلفة المباشرة: |
| التكلفة غير المباشرة: |
| هامش الربح: |
| احتياطي المخاطر: |
| السعر النهائي: |
+--------------------------------------------------+
| [حفظ] [إلغاء] |
+--------------------------------------------------+
4. شاشة تحليل الأسعار
+--------------------------------------------------+
| تحليل الأسعار |
+--------------------------------------------------+
| [اختيار البند▼] [الفترة الزمنية▼] [تحليل] |
+--------------------------------------------------+
| |
| |
| |
| (رسم بياني للأسعار) |
| |
| |
| |
+--------------------------------------------------+
| إحصائيات: |
| - متوسط السعر: |
| - أعلى سعر: |
| - أدنى سعر: |
| - معدل التغير: |
| - التقلب: |
+--------------------------------------------------+
| [مقارنة مع بنود أخرى] [تصدير التحليل] |
+--------------------------------------------------+
5. شاشة التنبؤ بالأسعار
+--------------------------------------------------+
| التنبؤ بالأسعار |
+--------------------------------------------------+
| [اختيار البند▼] [تاريخ التنبؤ] [نموذج التنبؤ▼] |
+--------------------------------------------------+
| |
| |
| |
| (رسم بياني للتنبؤ بالأسعار) |
| |
| |
| |
+--------------------------------------------------+
| السيناريوهات: |
| - متفائل: |
| - متوسط: |
| - متشائم: |
+--------------------------------------------------+
| عوامل التأثير: |
| - التضخم: |
| - تغيرات السوق: |
| - العوامل الموسمية: |
+--------------------------------------------------+
| [تطبيق على المشروع] [تصدير التنبؤ] |
+--------------------------------------------------+
6. شاشة تحليل الحساسية
+--------------------------------------------------+
| تحليل الحساسية |
+--------------------------------------------------+
| المشروع: [ ▼] |
+--------------------------------------------------+
| المتغيرات: |
| [✓] أسعار المواد الخام (±20%) |
| [✓] تكلفة العمالة (±15%) |
| [✓] تكلفة المعدات (±10%) |
| [ ] المصاريف العامة (±5%) |
+--------------------------------------------------+
| |
| |
| (رسم بياني لتحليل الحساسية) |
| |
| |
| |
+--------------------------------------------------+
| النتائج: |
| - أكثر العوامل تأثيراً: |
| - نطاق التغير المتوقع: |
| - توصيات: |
+--------------------------------------------------+
| [تحديث التحليل] [تصدير النتائج] |
+--------------------------------------------------+
7. شاشة التقارير
+--------------------------------------------------+
| التقارير |
+--------------------------------------------------+
| [نوع التقرير▼] [المشروع▼] [إنشاء تقرير] |
+--------------------------------------------------+
| التقارير المتاحة: |
| |
| ○ ملخص التكاليف |
| ○ تفصيل البنود |
| ○ مقارنة الأسعار |
| ○ تحليل الحساسية |
| ○ التنبؤ بالأسعار |
| ○ مخاطر الأسعار |
| |
+--------------------------------------------------+
| خيارات التقرير: |
| |
| [✓] تضمين الرسوم البيانية |
| [✓] تضمين التوصيات |
| [ ] تضمين البيانات التفصيلية |
| |
+--------------------------------------------------+
| [PDF] [Excel] [طباعة] |
+--------------------------------------------------+
تكامل النظام
1. تكامل مع وحدة تحليل المستندات
- استخراج بنود التسعير من وثائق المناقصة
- تحديد الكميات والمواصفات من المستندات
- مقارنة البنود المستخرجة مع قاعدة البيانات
2. تكامل مع وحدة تحليل المخاطر
- تحديد المخاطر المرتبطة بالتسعير
- تقييم تأثير المخاطر على التكاليف
- تحديد احتياطي المخاطر المناسب
3. تكامل مع وحدة إدارة المشاريع
- متابعة التكاليف الفعلية مقابل المخططة
- تحديث التنبؤات بناءً على بيانات المشروع الفعلية
- تحليل انحرافات التكاليف
4. تكامل مع وحدة التقارير
- إنشاء تقارير متكاملة تشمل بيانات التسعير
- دمج تحليلات التسعير في تقارير المشروع
- توفير لوحات معلومات متكاملة
خطة التنفيذ التفصيلية
المرحلة 1: إعداد البنية التحتية (3 أيام)
- تصميم وإنشاء جداول قاعدة البيانات
- إعداد هيكل الملفات والمجلدات
- تهيئة البيئة التطويرية
المرحلة 2: تنفيذ الوظائف الأساسية (5 أيام)
- تنفيذ فئة مدير التسعير
- تنفيذ فئة مدير بنود التسعير
- تنفيذ فئة حاسبة التكاليف
- إنشاء واجهات المستخدم الأساسية
المرحلة 3: تنفيذ وظائف التحليل (7 أيام)
- تنفيذ فئة محلل الأسعار
- تنفيذ فئة متنبئ الأسعار
- إنشاء الرسوم البيانية والتحليلات
- تنفيذ واجهات المستخدم للتحليل
المرحلة 4: تنفيذ التقارير والتكامل (5 أيام)
- تنفيذ فئة مولد تقارير التسعير
- تكامل مع الوحدات الأخرى
- إنشاء واجهات المستخدم للتقارير
- اختبار التكامل
المرحلة 5: الاختبار والتحسين (3 أيام)
- اختبار جميع الوظائف
- تحسين الأداء
- إصلاح الأخطاء
- تحسين واجهة المستخدم
المرحلة 6: التوثيق والتسليم (2 أيام)
- إعداد وثائق المستخدم
- إعداد وثائق المطور
- تجهيز النسخة النهائية
- تسليم النظام