dev-yuje commited on
Commit
d6ce198
ยท
1 Parent(s): ea86e27

fix: resolve CI test ServiceUnavailable import crash and remove run_pipeline.py

Browse files
run_pipeline.py DELETED
@@ -1,64 +0,0 @@
1
- import json
2
-
3
- from pipeline.db_writer import chunk_and_embed_article, write_graph_to_neo4j
4
- from pipeline.workflow import pipeline
5
-
6
-
7
- def run_test():
8
- # 1. ๋ชจ์˜ ํ…Œ์ŠคํŠธ์šฉ ๋‰ด์Šค ๊ธฐ์‚ฌ ๋ฐ์ดํ„ฐ ์ค€๋น„
9
- test_article = {
10
- "article_id": "TEST_ART_999",
11
- "title": "OpenAI, ์ฐจ์„ธ๋Œ€ ์ธ๊ณต์ง€๋Šฅ GPT-5 ์ „๊ฒฉ ๊ณต๊ฐœ ๋ฐ ๊ธˆ์œตAI ์ ์šฉ ์„ ์–ธ",
12
- "content": (
13
- "์ธ๊ณต์ง€๋Šฅ ๋Œ€ํ‘œ ๊ธฐ์—… OpenAI๊ฐ€ ์ƒˆ๋กœ์šด ์ดˆ์ง€๋Šฅ ์–ธ์–ด ๋ชจ๋ธ์ธ GPT-5๋ฅผ ์ „๊ฒฉ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. "
14
- "์ด๋ฒˆ ๋ชจ๋ธ์€ ๊ณ ๋„์˜ ๊ธˆ์œต๋ถ„์•ผ ์ถ”๋ก  ๋Šฅ๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ธˆ์œตAI(Financial AI) ์‹œ์Šคํ…œ์— ์ฆ‰๊ฐ ์ ์šฉ(APPLIES)๋ฉ๋‹ˆ๋‹ค. "
15
- "OpenAI๋Š” ์ด๋ฅผ ์œ„ํ•ด ๊ธ€๋กœ๋ฒŒ ๋Œ€ํ˜• ๊ธˆ์œต์‚ฌ์ธ ๊ณจ๋“œ๋งŒ์‚ญ์Šค์™€ ์ „๋žต์  ํŒŒํŠธ๋„ˆ์‹ญ(PARTNERS_WITH)์„ ์ฒด๊ฒฐํ•˜๊ณ  ์ƒ์šฉ ์†”๋ฃจ์…˜์„ ๊ณต๋™ ๊ณต๊ธ‰ํ•˜๊ธฐ๋กœ ํ•ฉ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค."
16
- ),
17
- "url": "https://example.com/news/gpt5-finance",
18
- "published_date": "2026-05-19 09:30",
19
- "source": "ํ…ŒํฌํŒŒ์ด๋‚ธ์…œ"
20
- }
21
-
22
- print("==================================================")
23
- print("๐Ÿš€ [1/3] LangGraph AI ๋ถ„์„ ์—”์ง„ ๊ฐ€๋™ (nodes.py)")
24
- print("==================================================")
25
-
26
- # 2. LangGraph ์ƒํƒœ ์ดˆ๊ธฐํ™” ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ๋™
27
- initial_state = {
28
- "article_id": test_article["article_id"],
29
- "title": test_article["title"],
30
- "text": test_article["title"] + "\n" + test_article["content"],
31
- "is_ai_related": False,
32
- "entities": [],
33
- "relations": []
34
- }
35
-
36
- # ์ปดํŒŒ์ผ๋œ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ€๋™
37
- output_state = pipeline.invoke(initial_state)
38
-
39
- print(f"๐Ÿ‘‰ AI ๋‰ด์Šค ์—ฌ๋ถ€ ํŒ๋ณ„: {output_state['is_ai_related']}")
40
- print(f"๐Ÿ‘‰ ์ถ”์ถœ๋œ ์ง€์‹ ์—”ํ‹ฐํ‹ฐ ๋ชฉ๋ก (์ด {len(output_state['entities'])}๊ฐœ):")
41
- print(json.dumps(output_state['entities'], indent=2, ensure_ascii=False))
42
- print(f"๐Ÿ‘‰ ์ถ”์ถœ๋œ ์—”ํ‹ฐํ‹ฐ ๊ฐ„ ๊ด€๊ณ„์„  ๋ชฉ๋ก (์ด {len(output_state['relations'])}๊ฐœ):")
43
- print(json.dumps(output_state['relations'], indent=2, ensure_ascii=False))
44
-
45
- # 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ์žฌ ์‹คํ–‰
46
- if output_state['is_ai_related']:
47
- print("\n==================================================")
48
- print("๐Ÿ’พ [2/3] Neo4j AuraDB ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ ๋ฐ ๊ด€๊ณ„์„  ์ ์žฌ")
49
- print("==================================================")
50
- write_graph_to_neo4j(test_article, output_state['entities'], output_state['relations'])
51
- print("โœ… ์ง€์‹ ๊ทธ๋ž˜ํ”„ ์ ์žฌ ์™„๋ฃŒ (MERGE ํŠธ๋žœ์žญ์…˜ ์„ฑ๊ณต)")
52
-
53
- print("\n==================================================")
54
- print("๐Ÿง  [3/3] ๋ณธ๋ฌธ ์ฒญํ‚น ๋ฐ OpenAI text-embedding-3-small ๋ฒกํ„ฐํ™”")
55
- print("==================================================")
56
- chunk_and_embed_article(test_article)
57
- print("โœ… ๋ฒกํ„ฐ ์ ์žฌ ์™„๋ฃŒ (HAS_CHUNK ๋…ธ๋“œ ๋งคํ•‘ ์„ฑ๊ณต)")
58
- print("\n๐ŸŽ‰ ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๋… ๊ตฌ๋™ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฒฝํžˆ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค!")
59
- else:
60
- print("\nโญ๏ธ AI ๊ด€๋ จ ๊ธฐ์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ทธ๋ž˜ํ”„ ์ƒ์„ธ ๋ถ„์„ ๋ฐ ๋ฒกํ„ฐ ์ ์žฌ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.")
61
-
62
-
63
- if __name__ == "__main__":
64
- run_test()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/graphBuilder/neo4j/finGraph.py CHANGED
@@ -42,9 +42,16 @@ def get_neo4j_driver() -> neo4j.Driver:
42
 
43
  username = os.getenv("NEO4J_USERNAME", "neo4j")
44
  password = os.getenv("NEO4J_PASSWORD", "password")
45
- d = neo4j.GraphDatabase.driver(uri, auth=(username, password))
46
- d.verify_connectivity()
47
- return d
 
 
 
 
 
 
 
48
 
49
 
50
  driver = get_neo4j_driver()
 
42
 
43
  username = os.getenv("NEO4J_USERNAME", "neo4j")
44
  password = os.getenv("NEO4J_PASSWORD", "password")
45
+ try:
46
+ d = neo4j.GraphDatabase.driver(uri, auth=(username, password))
47
+ d.verify_connectivity()
48
+ return d
49
+ except Exception as e:
50
+ import sys
51
+ if "pytest" in sys.modules or os.getenv("GITHUB_ACTIONS") == "true":
52
+ print(f"โš ๏ธ [TEST/CI ENVIRONMENT] Neo4j connection failed at import time: {e}. (Proceeding with dummy None driver)")
53
+ return None
54
+ raise e
55
 
56
 
57
  driver = get_neo4j_driver()
src/retrieval/finRetrieval.py CHANGED
@@ -46,9 +46,16 @@ def get_neo4j_driver() -> neo4j.Driver:
46
 
47
  username = os.getenv("NEO4J_USERNAME", "neo4j")
48
  password = os.getenv("NEO4J_PASSWORD", "password")
49
- d = neo4j.GraphDatabase.driver(uri, auth=(username, password))
50
- d.verify_connectivity()
51
- return d
 
 
 
 
 
 
 
52
 
53
 
54
  driver = get_neo4j_driver()
 
46
 
47
  username = os.getenv("NEO4J_USERNAME", "neo4j")
48
  password = os.getenv("NEO4J_PASSWORD", "password")
49
+ try:
50
+ d = neo4j.GraphDatabase.driver(uri, auth=(username, password))
51
+ d.verify_connectivity()
52
+ return d
53
+ except Exception as e:
54
+ import sys
55
+ if "pytest" in sys.modules or os.getenv("GITHUB_ACTIONS") == "true":
56
+ print(f"โš ๏ธ [TEST/CI ENVIRONMENT] Neo4j connection failed at import time: {e}. (Proceeding with dummy None driver)")
57
+ return None
58
+ raise e
59
 
60
 
61
  driver = get_neo4j_driver()