File size: 2,712 Bytes
9625f38
96692cf
6fe0d0c
 
a3830f2
6fe0d0c
7cfe55a
6fe0d0c
 
 
 
 
 
 
 
 
a88e1d8
7cfe55a
6fe0d0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7cfe55a
 
dde6bd9
7cfe55a
 
9625f38
7cfe55a
9625f38
 
 
dde6bd9
3eb99bc
dde6bd9
6fe0d0c
 
 
 
 
 
 
 
 
 
 
 
dde6bd9
 
 
 
 
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
# portfolio/app.py
from flask import Flask, render_template, url_for, redirect
# from npc_social_network.routes.npc_route import npc_bp
# from npc_social_network import simulation_core
# from stock.routes.stock_route import stock_bp
import threading

# -------------------------------------------------------------------
# ํŒŒ์ผ 1: portfolio/app.py (์ˆ˜์ •)
# ์—ญํ• : ์ „์ฒด ํฌํŠธํด๋ฆฌ์˜ค์˜ ์ง„์ž…์ .
#      NPC ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ๊ด€๋ จ URL ๊ทธ๋ฃน(Blueprint)์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
# -------------------------------------------------------------------

# ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž ๊ธˆ ์žฅ์น˜
init_lock = threading.Lock()
simulation_initialized = False

def create_app():
    """Flask ์•ฑ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•„์š”ํ•œ Blueprint๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜."""
    app = Flask(__name__,
                template_folder='templates') # static/template ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ณธ๊ฐ’

    try:
        from npc_social_network.routes.npc_route import npc_bp
        app.register_blueprint(npc_bp)
        print("โœ… 'npc_social' Blueprint๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")
        # app.register_blueprint(stock_bp)
    except Exception as e:
        import traceback
        print("="*60)
        print("โŒ CRITICAL ERROR: Blueprint ๋“ฑ๋ก ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค!")
        print(f"   ์—๋Ÿฌ ๋ฉ”์‹œ์ง€: {e}")
        print("="*60)
        traceback.print_exc() # ์—๋Ÿฌ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
        print("="*60)
        # ์ด ์—๋Ÿฌ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„๋Š” ์ •์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        # --- FINAL DEBUGGING TOOL END ---


    # ํฌํŠธํด๋ฆฌ์˜ค์˜ ๋ฉ”์ธ ๋žœ๋”ฉ ํŽ˜์ด์ง€
    @app.route("/")
    def index():
        return render_template("main.html")
    
    return app

if __name__ == '__main__':
    # 1. flask ์•ฑ ์‹คํ–‰
    app = create_app()
    # 2. NPC ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ดˆ๊ธฐํ™” ๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ ์‹œ์ž‘
    try:
        from npc_social_network import simulation_core
        simulation_core.initialize_simulation()
        print("โœ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")
    except Exception as e:
        import traceback
        print("="*60)
        print("โŒ CRITICAL ERROR: ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ดˆ๊ธฐํ™” ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค!")
        print(f"   ์—๋Ÿฌ ๋ฉ”์‹œ์ง€: {e}")
        print("="*60)
        traceback.print_exc()
        print("="*60)
    
    # 3. Flask ์›น ์„œ๋ฒ„ ์‹คํ–‰
    # use_reloader=False๋Š” ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์•ฑ์ด ๋‘ ๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ,
    # ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‘ ๋ฒˆ ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    app.run(debug=True, use_reloader=False, port=5000)