import sys import os sys.path.append(os.path.join(os.path.dirname(__file__), '..')) from pocketflow import Flow from nodes import ( LoadQuestionnaireNode, PresentQuestionsNode, AnalyzeResponsesBatchNode, TraditionalScoringNode, LLMAnalysisNode, DetermineMBTITypeNode, GenerateReportNode, ExportDataNode ) def create_mbti_flow(): """Create and return the complete MBTI questionnaire flow""" # Create all nodes load_questionnaire = LoadQuestionnaireNode() present_questions = PresentQuestionsNode() analyze_responses = AnalyzeResponsesBatchNode() traditional_scoring = TraditionalScoringNode() llm_analysis = LLMAnalysisNode() determine_type = DetermineMBTITypeNode() generate_report = GenerateReportNode() export_data = ExportDataNode() # Connect nodes in sequence load_questionnaire >> present_questions present_questions >> analyze_responses analyze_responses >> traditional_scoring traditional_scoring >> determine_type determine_type >> llm_analysis llm_analysis >> generate_report generate_report >> export_data # Create and return flow return Flow(start=load_questionnaire) def create_shared_store(config=None): """Create initial shared store with default configuration""" default_config = { "output_format": "html", "analysis_method": "both", "ui_mode": "cli", "import_file": None } if config: default_config.update(config) return { # --- Inputs --- "questionnaire": { "questions": [], "responses": {}, "metadata": { "version": "1.0", "created_at": None, "user_id": None } }, "config": default_config, # --- Intermediate/Output Data --- "analysis": { "traditional_scores": {}, "llm_analysis": "", "confidence_scores": {} }, "results": { "mbti_type": "", "type_description": "", "strengths": [], "weaknesses": [], "career_suggestions": [], "relationship_insights": "" }, "exports": { "questionnaire_json": "", "report_path": "" } } if __name__ == "__main__": # Test the flow creation flow = create_mbti_flow() shared = create_shared_store() print("MBTI Flow created successfully!") print(f"Shared store initialized with config: {shared['config']}")