#!/usr/bin/env python3
"""
mo_dsa_opinion.py — DSA 策略问股（第二意见）

用 DSA 的 15 种策略独立分析一只股票，和 MoFin 自己的分析做交叉验证。
不替代 MoFin，只做参考。

用法：
  # 分析一只股票
  python3 mo_dsa_opinion.py 00700 腾讯控股
  
  # 指定策略
  python3 mo_dsa_opinion.py 600519 贵州茅台 --skills ma_golden_cross,chan_theory
  
  # 作为 cron job 调用（静默模式，输出到文件）
  python3 mo_dsa_opinion.py 00700 腾讯控股 --quiet

输出格式：
  ## 🤖 DSA 策略参考
  - 评分: 72/100
  - 建议: 持有
  - 趋势: 看多
  - 策略: ma_golden_cross, bull_trend
  - 摘要: ...
  - 风险: ...
"""

import sys, os, json, argparse

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

def main():
    parser = argparse.ArgumentParser(description="DSA 策略问股")
    parser.add_argument("code", help="股票代码")
    parser.add_argument("name", nargs="?", default="", help="股票名称")
    parser.add_argument("--skills", default="ma_golden_cross,bull_trend",
                        help="策略列表，逗号分隔")
    parser.add_argument("--quiet", action="store_true", help="静默模式")
    parser.add_argument("--json", action="store_true", help="JSON 输出")
    args = parser.parse_args()

    skills = [s.strip() for s in args.skills.split(",") if s.strip()]
    
    if not args.quiet:
        print(f"🔍 DSA 分析 {args.code} {args.name}...", flush=True)
        print(f"   策略: {', '.join(skills)}", flush=True)
    
    from mo_bridge import get_stock_analysis, get_strategy_opinion_text
    
    # 先获取新闻和大盘上下文
    from mo_bridge import enrich_analysis_context
    ctx = enrich_analysis_context(args.code, args.name, region="cn")
    
    opinion = get_stock_analysis(args.code, args.name, skills=skills)
    
    if not opinion:
        print("❌ DSA 分析失败（LLM 超时或 DSA 不可用）")
        sys.exit(1)
    
    if args.json:
        print(json.dumps(opinion, ensure_ascii=False, indent=2))
    else:
        print()
        print(get_strategy_opinion_text(opinion))
        
        # MoFin 对比提示
        print()
        print("---")
        print("⚠️ 以上是 DSA 独立分析，仅供参考。")
        print("   MoFin 的分析以 strategy_lifecycle 为准。")
        print("   如果两方结论一致 → 增强信心")
        print("   如果两方结论冲突 → 关注分歧点，人工判断")

if __name__ == "__main__":
    main()
