文件预览

main.py

查看 parents-homework 技能包中的文件内容。

文件内容

scripts/main.py

#!/usr/bin/env python3
"""
still-growing 家庭教育技能主入口
Main Entry Point for Still-Growing Family Education Skill

整合所有模块,提供统一的命令行界面。
"""

import sys
import os

# 添加当前目录到路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from parenting_assessment import ParentingAssessment
from mood_tracker import MoodTracker
from goal_tracker import GoalTracker
from communication_analyzer import CommunicationAnalyzer

def print_banner():
    """打印横幅"""
    banner = """
╔══════════════════════════════════════════════════════════════╗
║                                                              ║
║          still-growing 家庭教育技能系统 v1.0                 ║
║                                                              ║
║   整合心理学评估、情绪追踪、目标管理、沟通分析               ║
║                                                              ║
╚══════════════════════════════════════════════════════════════╝
    """
    print(banner)

def print_menu():
    """打印菜单"""
    menu = """
请选择功能模块:

  1. 📋 父母教养风格评估
     - 基于心理学研究的自我评估问卷
     - 了解自己的教养风格类型

  2. 💭 亲子互动情绪追踪
     - 记录每日情绪变化
     - 识别触发因素和模式

  3. 🎯 教育目标追踪
     - 设定和追踪家庭教育目标
     - 记录里程碑和进度

  4. 💬 沟通分析器
     - 分析亲子对话模式
     - 识别沟通问题并给出建议

  5. 📊 查看仪表板
     - 查看所有模块的汇总数据

  0. 🚪 退出
"""
    print(menu)

def run_assessment():
    """运行评估模块"""
    print("\n" + "="*50)
    print("启动父母教养风格评估模块...")
    print("="*50)
    
    assessor = ParentingAssessment()
    history = assessor.get_history()
    
    if history:
        print(f"\n发现 {len(history)} 条历史评估记录")
        compare = assessor.compare_progress()
        if "message" not in compare:
            print("\n与上次评估比较:")
            for style, data in compare['changes'].items():
                print(f"  {data['name']}: {data['direction']} ({data['change']:+d}分)")
    
    # 运行评估
    scores = assessor.run_questionnaire()
    results = assessor.calculate_results(scores)
    assessor.print_results(results)
    
    # 保存结果
    filepath = assessor.save_results(results)
    print(f"\n✅ 评估结果已保存: {filepath}")
    
    return results

def run_mood_tracker():
    """运行情绪追踪模块"""
    print("\n" + "="*50)
    print("启动亲子互动情绪追踪模块...")
    print("="*50)
    
    tracker = MoodTracker()
    
    # 显示今日摘要
    summary = tracker.get_daily_summary()
    print(f"\n今日状态: {summary}")
    
    # 添加记录
    tracker.interactive_add()
    
    # 分析模式
    analysis = tracker.analyze_patterns(days=30)
    if "message" not in analysis:
        tracker.print_analysis(analysis)
    
    return tracker

def run_goal_tracker():
    """运行目标追踪模块"""
    print("\n" + "="*50)
    print("启动教育目标追踪模块...")
    print("="*50)
    
    tracker = GoalTracker()
    
    # 显示仪表板
    summary = tracker.get_dashboard_summary()
    tracker.print_dashboard(summary)
    
    # 询问操作
    print("\n" + "-"*40)
    print("可选操作:")
    print("  1. 创建新目标")
    print("  2. 查看目标列表")
    print("  3. 更新目标进度")
    print("  4. 返回主菜单")
    
    choice = input("\n请选择(1-4): ").strip()
    
    if choice == "1":
        tracker.interactive_create()
    elif choice == "2":
        goals = tracker.load_goals()
        print("\n【所有目标】:")
        for goal in goals:
            status_icon = "✅" if goal['status'] == "已完成" else "⏳" if goal['status'] == "进行中" else "❌"
            print(f"  {status_icon} [{goal['status']}] {goal['title']} - {goal['progress']}%")
    elif choice == "3":
        goals = tracker.load_goals()
        if goals:
            print("\n【选择要更新的目标】:")
            for i, goal in enumerate(goals, 1):
                print(f"  {i}. {goal['title']}")
            try:
                idx = int(input("\n请选择(1-" + str(len(goals)) + "): ").strip())
                if 1 <= idx <= len(goals):
                    goal = goals[idx-1]
                    delta = int(input("进度变化(+/-): ").strip())
                    notes = input("备注: ").strip()
                    tracker.add_progress(goal['id'], delta, notes)
                    print("✅ 进度已更新")
            except ValueError:
                print("无效选择")
    elif choice == "4":
        return
    
    return tracker

def run_communication_analyzer():
    """运行沟通分析模块"""
    print("\n" + "="*50)
    print("启动沟通分析模块...")
    print("="*50)
    
    analyzer = CommunicationAnalyzer()
    return analyzer.interactive_analyze()

def show_dashboard():
    """显示仪表板"""
    print("\n" + "="*50)
    print("家庭教育技能系统 - 综合仪表板")
    print("="*50)
    
    # 评估数据
    assessor = ParentingAssessment()
    assessment_history = assessor.get_history()
    if assessment_history:
        latest = assessment_history[-1]
        print(f"\n📋 最新教养风格评估: {latest.get('dominant_name', 'N/A')}")
        print(f"   评估时间: {latest.get('timestamp', 'N/A')[:10]}")
    
    # 情绪追踪数据
    tracker = MoodTracker()
    today_summary = tracker.get_daily_summary()
    print(f"\n💭 今日情绪追踪: {today_summary}")
    
    analysis = tracker.analyze_patterns(days=7)
    if "message" not in analysis:
        print(f"   本周记录: {analysis.get('total_records', 0)}条")
        print(f"   平均强度: {analysis.get('avg_intensity', 0)}/10")
    
    # 目标数据
    goal_tracker = GoalTracker()
    goal_summary = goal_tracker.get_dashboard_summary()
    print(f"\n🎯 目标进度:")
    print(f"   总目标数: {goal_summary.get('total', 0)}")
    print(f"   平均进度: {goal_summary.get('avg_progress', 0)}%")
    if goal_summary.get('upcoming_deadlines'):
        print(f"   即将到期: {len(goal_summary['upcoming_deadlines'])}个")
    
    print()

def main():
    """主函数"""
    print_banner()
    
    while True:
        print_menu()
        choice = input("请选择(0-5): ").strip()
        
        if choice == "1":
            run_assessment()
        elif choice == "2":
            run_mood_tracker()
        elif choice == "3":
            run_goal_tracker()
        elif choice == "4":
            run_communication_analyzer()
        elif choice == "5":
            show_dashboard()
        elif choice == "0":
            print("\n感谢使用!再见!👋\n")
            break
        else:
            print("\n无效选择,请重试")
        
        input("\n按回车继续...")

if __name__ == "__main__":
    main()