File size: 3,476 Bytes
efe8b67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import streamlit as st
import pandas as pd
from typing import Dict, Any


def render_analyzer_results(result: Dict[str, Any]) -> None:
    """Render AdAnalysis results in Streamlit UI (table format)."""

    # --- Headline ---
    if "copywriting_breakdown" in result:
        headline = result["copywriting_breakdown"].get("headline", "Ad Analysis Result")
        st.header(f" {headline}")

    # --- Visual Layout ---
    if "visual_structure_layout" in result:
        st.subheader(" Visual Structure Layout")
        vsl = result["visual_structure_layout"]

        table_data = [
            ["Background", vsl.get("background_color")],
            ["Psychological Association", vsl.get("psychological_association")],
            ["Minimalism Level", vsl.get("minimalism_level")],
            ["Flow Summary", vsl.get("hierarchy", {}).get("flow_summary")],
            ["Key Elements Order", ", ".join(vsl.get("hierarchy", {}).get("key_elements_order", []))],
        ]
        df = pd.DataFrame(table_data, columns=["Property", "Value"])
        st.table(df)


    # --- Psychological Triggers ---
    if "psychological_behavioral_triggers" in result:
        st.subheader(" Psychological & Behavioral Triggers")
        df = pd.DataFrame(result["psychological_behavioral_triggers"].items(), columns=["Trigger", "Description"])
        st.table(df)

    # --- Storytelling ---
    if "story_creative_tells" in result:
        st.subheader(" Storytelling Elements")
        df = pd.DataFrame(result["story_creative_tells"].items(), columns=["Element", "Content"])
        st.table(df)

    # --- Strengths & Weaknesses ---
    if "strengths" in result or "weaknesses" in result:
        col1, col2 = st.columns(2)

        with col1:
            st.subheader("Strengths")
            strengths = result.get("strengths", [])
            if strengths:
                df = pd.DataFrame(strengths)
                df.rename(columns={"point": "Point", "why_it_matters": "Why It Matters"}, inplace=True)
                st.table(df)
            else:
                st.info("No strengths found.")

        with col2:
            st.subheader("Weaknesses")
            weaknesses = result.get("weaknesses", [])
            if weaknesses:
                df = pd.DataFrame(weaknesses)
                df.rename(columns={"point": "Point", "why_it_matters": "Why It Matters"}, inplace=True)
                st.table(df)
            else:
                st.info("No weaknesses found.")

    # --- Risks ---
    if "risks_in_arbitrage_context" in result:
        st.subheader(" Risks in Arbitrage Context")
        df = pd.DataFrame(result["risks_in_arbitrage_context"].items(), columns=["Risk", "Level"])
        st.table(df)

    # --- Optimization Next Steps ---
    if "optimization_next_steps" in result:
        st.subheader(" Optimization Next Steps")
        opt = result["optimization_next_steps"]

        if "creative_variants" in opt:
            st.markdown("**Creative Variants**")
            df = pd.DataFrame(opt["creative_variants"])
            df.rename(
                columns={
                    "hypothesis": "Hypothesis",
                    "change": "Change",
                    "expected_effect": "Expected Effect",
                    "metric_to_watch": "Metric to Watch",
                },
                inplace=True,
            )
            st.table(df)



    with st.expander(" Raw JSON Result", expanded=False):
        st.json(result)