Spaces:
Sleeping
Sleeping
| """ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| ๐งช Test Script for Objectives Generator | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| ูุฐุง ุงูู ูู ูุงุฎุชุจุงุฑ ุชูููุฏ ุงูุฃูุฏุงู ุงูุชุนููู ูุฉ ุจุงุณุชุฎุฏุงู ุงูุจูุงูุงุช ุงููุนููุฉ. | |
| """ | |
| import json | |
| import sys | |
| import os | |
| # Add project root to path | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| from agents.analysis_phase.objectives import generate_objectives | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # ๐ Test Data - ุงูุจูุงูุงุช ุงููุนููุฉ ู ู ุงูู ุณุชุฎุฏู | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| METADATA = { | |
| 'topic': '(Design thinking) ุชูููุงุช ุงูุชูููุฑ ุงูุชุตู ูู ู ูุญู ุงูู ุดููุงุช ูุงุชุฎุงุฐ ุงููุฑุงุฑุงุช', | |
| 'domain': 'Multidisciplinary', | |
| 'content_type': 'Educational', | |
| 'audience': 'Professionals and Students', | |
| 'material_type': ['Conceptual', 'Procedural', 'Structural', 'Personal', 'Realistic'] | |
| } | |
| OUTLINES = { | |
| 'Metadata': [METADATA], | |
| 'main_concept': 'ุชูููุงุช ุงูุชูููุฑ ุงูุชุตู ูู ู ูุญู ุงูู ุดููุงุช ูุงุชุฎุงุฐ ุงููุฑุงุฑุงุช', | |
| 'related_concepts': ['Management', 'Technology', 'Aerospace', 'Psychologists', 'Entrepreneurs', 'Educational', 'Awareness'], | |
| 'units': [ | |
| { | |
| 'unit_number': 1, | |
| 'title': 'ุงููุตู ุงูุฃูู: ู ูุงููู ูู ุจุงุฏุฆ ุงูุชูููุฑ ุงูุชุตู ูู ู', | |
| 'focus': 'ูู ูุญ ุงูู ุชุนูู ูู ููู ุงู ู ุชุทูุฑุงู ููู ูุงููู ุงูุฃุณุงุณูุฉุ ุชุงุฑูุฎ ุงูุชูููุฑ ุงูุชุตู ูู ูุ ูุงููุธุฑุฉ ุงูู ููุฌูุฉ ุงูุชู ุชูุดููู ุฃุณุงุณุงู ููุชุนุงู ู ู ุน ุงูู ุดููุงุช ุงูู ุนูุฏุฉ.', | |
| 'axes': [ | |
| { | |
| 'axis_number': 1, | |
| 'title': 'ุชุนุฑูู ุงูู ุตุทูุญุงุช ุงูุฃุณุงุณูุฉ ููุชูููุฑ ุงูุชุตู ูู ู', | |
| 'purpose': 'ุชุนุฑูู ุงูู ุตุทูุญุงุช ุงูุฃุณุงุณูุฉ ูุณุงุนุฏ ุงูู ุชุนูู ูู ุนูู ุจูุงุก ูุงุนุฏุฉ ู ุนุฑููุฉ ุซุงุจุชุฉ' | |
| }, | |
| { | |
| 'axis_number': 2, | |
| 'title': 'ุดุฑุญ ุชุงุฑูุฎ ุชุทูุฑ ู ููุฌ ุงูุชูููุฑ ุงูุชุตู ูู ู', | |
| 'purpose': 'ุชูุถูุญ ุชุงุฑูุฎ ุชุทูุฑ ู ููุฌ ุงูุชูููุฑ ุงูุชุตู ูู ู ูุนุฒุฒ ููู ุงูุณูุงู ูุงูุชุทุจูู' | |
| }, | |
| { | |
| 'axis_number': 3, | |
| 'title': 'ุฃู ุซูุฉ ุชุทุจูููุฉ ููู ุจุงุฏุฆ ุงูุชุตู ูู ูุฉ', | |
| 'purpose': 'ุนุฑุถ ุฃู ุซูุฉ ุนู ููุฉ ูุฑุจุท ุงูู ุจุงุฏุฆ ุจุงููุงูุน ูุชุทุจููุงุชูู ' | |
| }, | |
| { | |
| 'axis_number': 4, | |
| 'title': 'ุชุญููู ู ูููุงุช ุงูุนู ููุฉ ุงูุชุตู ูู ูุฉ ูู ู ุดุฑูุน ุนู ูู', | |
| 'purpose': 'ุชุญููู ู ูููุงุช ุงูุนู ููุฉ ูู ู ุดุฑูุน ุนู ูู ูุทููุฑ ู ูุงุฑุงุช ุงูุชูููุฑ ุงูููุฏู' | |
| }, | |
| { | |
| 'axis_number': 5, | |
| 'title': 'ุงุจุชูุงุฑ ูู ูุฐุฌ ุชุตู ูู ู ูุญู ู ุดููุฉ ู ุญุฏุฏุฉ', | |
| 'purpose': 'ุงุจุชูุงุฑ ูู ูุฐุฌ ุชุตู ูู ู ูุญู ู ุดููุฉ ู ุญุฏุฏ ูุนุฒุฒ ุงูุงุจุชูุงุฑ ูุงูุฅุจุฏุงุน' | |
| } | |
| ] | |
| }, | |
| { | |
| 'unit_number': 2, | |
| 'title': 'ุงููุตู ุงูุซุงูู: ุงูุนู ููุฉ ุงูู ูุฏุงููุฉ ูุชูููุงุช ุงูุชูููุฑ ุงูุชุตู ูู ู', | |
| 'focus': 'ููุฏุฑูุณ ุงูู ุชุนูู ูู ุงูุฎุทูุงุช ุงูุนู ููุฉ (ุงูุชุนุงุทูุ ุงูุชุญุฏูุฏุ ุงูุฅุจุฏุงุนุ ุงููู ุฐุฌุฉุ ูุงูุงุฎุชุจุงุฑ) ู ุน ุชุทุจูู ุชู ุงุฑูู ุชุฌุฑูุจูุฉ ุชูุจูู ู ูุงุฑุงุช ุชูููุฐูุฉ ู ุจุงุดุฑุฉ.', | |
| 'axes': [ | |
| { | |
| 'axis_number': 1, | |
| 'title': 'ุฏุฑุงุณุฉ ุฎุทูุงุช ุงูุนู ููุฉ ุงูู ูุฏุงููุฉ', | |
| 'purpose': 'ุชุฐูุฑ ุฎุทูุงุช ุงูุนู ููุฉ ุงูู ูุฏุงููุฉ ุงูุฃุณุงุณูุฉ ูุนุฒุฒ ุงูุชุชุจุน ุงูุณูุณ ููุนู ููุฉ' | |
| }, | |
| { | |
| 'axis_number': 2, | |
| 'title': 'ุดุฑุญ ู ูุตู ูู ุฑุงุญู ุงูุชุนุงุทู ูุงูุชุญุฏูุฏ', | |
| 'purpose': 'ุดุฑุญ ู ูุตู ูู ุฑุงุญู ุงูุชุนุงุทู ูุงูุชุญุฏูุฏ ููุถุญ ูู ุฎุทูุฉ ู ู ุงูุนู ููุฉ' | |
| }, | |
| { | |
| 'axis_number': 3, | |
| 'title': 'ุชูููุฐ ุชู ุฑูู ุชุนุงุทู ูุญุงูุฉ ูุงูุนูุฉ', | |
| 'purpose': 'ุชูููุฐ ุชู ุฑูู ุชุนุงุทู ูุญุงูุฉ ูุงูุนูุฉ ูุฑุจุท ุงููุธุฑูุฉ ุจุงูุชุทุจูู' | |
| }, | |
| { | |
| 'axis_number': 4, | |
| 'title': 'ุชุญููู ูุชุงุฆุฌ ุงูู ุฑุญูุฉ ุงูุฅุจุฏุงุนูุฉ ูููู ุงุฐุฌ', | |
| 'purpose': 'ุชุญููู ูุชุงุฆุฌ ุงูู ุฑุญูุฉ ุงูุฅุจุฏุงุนูุฉ ูููู ุงุฐุฌ ููุถุญ ููุงุท ุงูููุฉ ูุงูุถุนู' | |
| }, | |
| { | |
| 'axis_number': 5, | |
| 'title': 'ุงุจุชูุงุฑ ุญู ููุงุฆู ุจุนุฏ ุงุฎุชุจุงุฑ ุงููู ูุฐุฌ', | |
| 'purpose': 'ุงุจุชูุงุฑ ุญู ููุงุฆู ุจุนุฏ ุงุฎุชุจุงุฑ ุงููู ูุฐุฌ ูุนุฒุฒ ุงูุชุนูู ุงูุนู ูู' | |
| } | |
| ] | |
| }, | |
| { | |
| 'unit_number': 3, | |
| 'title': 'ุงููุตู ุงูุซุงูุซ: ุชุทุจููุงุช ุงูุชูููุฑ ุงูุชุตู ูู ู ูู ุงูุฅุฏุงุฑุฉุ ุงูุชูููุฉุ ุงููุถุงุกุ ุนูู ุงูููุณ ูุฑูุงุฏุฉ ุงูุฃุนู ุงู', | |
| 'focus': 'ููุธูุฑ ููู ูู ูู ุฏู ุฌ ุงูุชูููุฑ ุงูุชุตู ูู ู ูู ู ุฌุงูุงุช ู ุชุนุฏุฏุฉุ ู ูุฏู ูุง ุฏุฑุงุณุงุช ุญุงูุฉ ูุงูุนูุฉ ุชูุซุจุช ูุงุนููุชู ูู ุชุญุณูู ุงูุนู ููุงุช ูุงุชุฎุงุฐ ุงููุฑุงุฑุงุช ุงููุนุงูุฉ.', | |
| 'axes': [ | |
| { | |
| 'axis_number': 1, | |
| 'title': 'ุชุญุฏูุฏ ู ุฌุงูุงุช ุชุทุจูู ุงูุชูููุฑ ุงูุชุตู ูู ู', | |
| 'purpose': 'ุชุญุฏูุฏ ู ุฌุงูุงุช ุชุทุจูู ุงูุชูููุฑ ุงูุชุตู ูู ู ูุญุฏุฏ ุงููุถุงุกุงุช ุงูุชู ูู ูู ุชูุธูููุง' | |
| }, | |
| { | |
| 'axis_number': 2, | |
| 'title': 'ุดุฑุญ ุฏูุฑ ุงูุชูููุฑ ุงูุชุตู ูู ู ูู ุงูุฅุฏุงุฑุฉ', | |
| 'purpose': 'ุดุฑุญ ุฏูุฑ ุงูุชูููุฑ ุงูุชุตู ูู ู ูู ุงูุฅุฏุงุฑุฉ ููุถุญ ููู ูุญุณูู ุงูุนู ููุงุช' | |
| }, | |
| { | |
| 'axis_number': 3, | |
| 'title': 'ุชุทุจูู ุงูุชูููุฑ ุงูุชุตู ูู ู ุนูู ูุถูุฉ ุฅุฏุงุฑูุฉ', | |
| 'purpose': 'ุชุทุจูู ุงูุชูููุฑ ุงูุชุตู ูู ู ุนูู ูุถูุฉ ุฅุฏุงุฑูุฉ ูุฎุชุจุฑ ูุนุงููุฉ ุงูุชูุชููุงุช' | |
| }, | |
| { | |
| 'axis_number': 4, | |
| 'title': 'ุชุญููู ูุงุนููุฉ ุงูุชุทุจููุงุช ูู ู ุฌุงู ุงููุถุงุก', | |
| 'purpose': 'ุชุญููู ูุงุนููุฉ ุงูุชุทุจููุงุช ูู ู ุฌุงู ุงููุถุงุก ููููู ุฅู ูุงููุงุช ุงูุงุจุชูุงุฑ' | |
| }, | |
| { | |
| 'axis_number': 5, | |
| 'title': 'ุงุจุชูุงุฑ ู ุจุงุฏุฑุฉ ุชุตู ูู ูุฉ ูุฑุจุท ุนูู ุงูููุณ ูุฑูุงุฏุฉ ุงูุฃุนู ุงู', | |
| 'purpose': 'ุงุจุชูุงุฑ ู ุจุงุฏุฑุฉ ุชุตู ูู ูุฉ ูุฑุจุท ุนูู ุงูููุณ ูุฑูุงุฏุฉ ุงูุฃุนู ุงู ูุฏู ุฌ ุงูู ููุฌูุฉ' | |
| } | |
| ] | |
| }, | |
| { | |
| 'unit_number': 4, | |
| 'title': 'ุงููุตู ุงูุฑุงุจุน: ุงูุชูููุฐ ูุงูุชูููู โ ุงูุชูู ูุฉ ุงูุดุฎุตูุฉ ูุงููุนู ุงูู ุฌุชู ุนู', | |
| 'focus': 'ูุดุฌุน ุงูู ุชุนูู ูู ุนูู ุชูููุฐ ุญููู ู ูุตู ู ุฉ ุจูุนูุงููุฉุ ููุงุณ ุฃุซุฑูุงุ ูุชุนุฒูุฒ ุงููุนู ุงูุฐุงุชู ูุงูู ุฌุชู ุนูุ ู ุน ุชูุฌูู ูู ูุงุฑุงุช ุงูููุงุฏุฉ ูุงูุชูููุฑ ุงูููุฏู.', | |
| 'axes': [ | |
| { | |
| 'axis_number': 1, | |
| 'title': 'ู ุฑุงุฌุนุฉ ู ูุงููู ุชูููุฐ ุงูุญููู ุงูู ุจุฏุนุฉ', | |
| 'purpose': 'ุชุฐููุฑ ุจู ูุงููู ุชูููุฐ ุงูุญููู ุงูู ุจุฏุนุฉ ูุญูู ูุถูุญ ุงูุฑุคูุฉ' | |
| }, | |
| { | |
| 'axis_number': 2, | |
| 'title': 'ุดุฑุญ ุชูููุงุช ููุงุณ ุฃุซุฑ ุงูุญููู ุงูุชุญููููุฉ', | |
| 'purpose': 'ุดุฑุญ ุชูููุงุช ููุงุณ ุฃุซุฑ ุงูุญููู ุงูุชุญููููุฉ ููุฏูู ุฅุทุงุฑ ููุชูููู ' | |
| }, | |
| { | |
| 'axis_number': 3, | |
| 'title': 'ุงุณุชุฎุฏุงู ุฃุฏูุงุช ููุงุณ ุชูููู ุญู ู ุดุฑูุนู', | |
| 'purpose': 'ุงุณุชุฎุฏุงู ุฃุฏูุงุช ููุงุณ ุชูููู ุญู ู ุดุฑูุนู ููู ููู ุงูู ุชุนูู ูู ู ู ุงูุชุญููู' | |
| }, | |
| { | |
| 'axis_number': 4, | |
| 'title': 'ุชุญููู ู ุคุดุฑุงุช ุงูุฃุฏุงุก ูุงูุชุฃุซูุฑ ุงูู ุฌุชู ุนู', | |
| 'purpose': 'ุชุญููู ู ุคุดุฑุงุช ุงูุฃุฏุงุก ูุงูุชุฃุซูุฑ ุงูู ุฌุชู ุนู ูุญุฏุฏ ุงููุงุนููุฉ ูุงูุชุฃุซูุฑ' | |
| }, | |
| { | |
| 'axis_number': 5, | |
| 'title': 'ุงุจุชูุงุฑ ุงุณุชุฑุงุชูุฌูุฉ ููุงุฏุฉ ูุชุนุฒูุฒ ุงููุนู ุงูุฐุงุชู', | |
| 'purpose': 'ุงุจุชูุงุฑ ุงุณุชุฑุงุชูุฌูุฉ ููุงุฏุฉ ูุชุนุฒูุฒ ุงููุนู ุงูุฐุงุชู ูุซู ุฑ ุฅู ูุงููุฉ ุงูููุงุฏุฉ' | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # ๐งช Test Function | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def test_objectives_generator(): | |
| """ | |
| ุงุฎุชุจุงุฑ ุชูููุฏ ุงูุฃูุฏุงู ุงูุชุนููู ูุฉ. | |
| """ | |
| print("โ" * 80) | |
| print("๐ Starting Objectives Generation Test") | |
| print("โ" * 80) | |
| print() | |
| # Print input summary | |
| print("๐ Input Data:") | |
| print(f" โข Topic: {METADATA['topic']}") | |
| print(f" โข Domain: {METADATA['domain']}") | |
| print(f" โข Content Type: {METADATA['content_type']}") | |
| print(f" โข Audience: {METADATA['audience']}") | |
| print(f" โข Material Type: {', '.join(METADATA['material_type'])}") | |
| print(f" โข Units: {len(OUTLINES['units'])}") | |
| # Count total axes | |
| total_axes = sum(len(unit['axes']) for unit in OUTLINES['units']) | |
| print(f" โข Total Axes: {total_axes}") | |
| print() | |
| # Generate objectives | |
| print("โณ Generating objectives...") | |
| print("โ" * 80) | |
| print() | |
| try: | |
| result = generate_objectives( | |
| topic=METADATA['topic'], | |
| domain=METADATA['domain'], | |
| content_type=METADATA['content_type'], | |
| audience=METADATA['audience'], | |
| material_type=METADATA['material_type'], | |
| outlines=OUTLINES | |
| ) | |
| print() | |
| print("โ" * 80) | |
| print("โ Objectives Generated Successfully!") | |
| print("โ" * 80) | |
| print() | |
| # Print results summary | |
| objectives = result.get('objectives', []) | |
| print(f"๐ Results Summary:") | |
| print(f" โข Total Objectives Generated: {len(objectives)}") | |
| print(f" โข Expected (Total Axes): {total_axes}") | |
| print(f" โข Match: {'โ YES' if len(objectives) == total_axes else 'โ NO'}") | |
| print() | |
| # Analyze verb diversity | |
| verbs_used = [obj['objective'].split()[1] for obj in objectives if len(obj['objective'].split()) > 1] | |
| unique_verbs = len(set(verbs_used)) | |
| diversity_rate = (unique_verbs / len(verbs_used)) * 100 if verbs_used else 0 | |
| print(f"๐ Verb Diversity:") | |
| print(f" โข Total Verbs Used: {len(verbs_used)}") | |
| print(f" โข Unique Verbs: {unique_verbs}") | |
| print(f" โข Diversity Rate: {diversity_rate:.1f}%") | |
| print(f" โข Target: 70-80%") | |
| print(f" โข Status: {'โ PASS' if diversity_rate >= 70 else 'โ ๏ธ NEEDS IMPROVEMENT'}") | |
| print() | |
| # Analyze domain distribution | |
| domain_counts = { | |
| 'Cognitive': sum(1 for obj in objectives if 'Cognitive' in obj['level']), | |
| 'Affective': sum(1 for obj in objectives if 'Affective' in obj['level']), | |
| 'Psychomotor': sum(1 for obj in objectives if 'Psychomotor' in obj['level']) | |
| } | |
| total_objs = len(objectives) | |
| print(f"๐ Domain Distribution:") | |
| for domain, count in domain_counts.items(): | |
| percentage = (count / total_objs) * 100 if total_objs > 0 else 0 | |
| print(f" โข {domain}: {count} ({percentage:.1f}%)") | |
| print() | |
| # Print first few objectives as examples | |
| print("๐ Sample Objectives (First 3):") | |
| print("โ" * 80) | |
| for i, obj in enumerate(objectives[:3], 1): | |
| print(f"\n{i}. Unit: {obj['unit']}") | |
| print(f" Axis: {obj['axis']}") | |
| print(f" Level: {obj['level']}") | |
| print(f" Verbs: {', '.join(obj['verbs'])}") | |
| print(f" Objective: {obj['objective']}") | |
| print() | |
| print("โ" * 80) | |
| # Save to file | |
| output_file = 'objectives_output.json' | |
| with open(output_file, 'w', encoding='utf-8') as f: | |
| json.dump(result, f, ensure_ascii=False, indent=2) | |
| print(f"๐พ Full output saved to: {output_file}") | |
| print() | |
| return result | |
| except Exception as e: | |
| print() | |
| print("โ" * 80) | |
| print("โ Error During Generation") | |
| print("โ" * 80) | |
| print(f"Error: {str(e)}") | |
| print() | |
| import traceback | |
| traceback.print_exc() | |
| return None | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # ๐ฏ Main Execution | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| if __name__ == "__main__": | |
| test_objectives_generator() | |