포트 설정 통일: ai-python 서비스 8087 포트로 변경

- ai-python/.env: PORT를 8086에서 8087로 변경
- ai-python/.env.example: PORT를 8086에서 8087로 변경
- meeting/application.yml: AI Service 설정 추가 (기본 포트 8087)
- develop/dev/ai-frontend-integration-guide.md: 문서 업데이트 (8087 포트 반영)

목적: 다른 개발자들의 테스트 환경 통일 및 혼란 방지
This commit is contained in:
Minseo-Jo 2025-10-29 17:45:12 +09:00
parent 8dd830c25f
commit c68df2f733
15 changed files with 227 additions and 10 deletions

View File

@ -1,5 +1,5 @@
# 서버 설정
PORT=8086
PORT=8087
HOST=0.0.0.0
# Claude API

View File

@ -1,2 +1,213 @@
/Users/jominseo/HGZero/ai-python/main.py:45: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
@app.on_event("startup")
INFO: Will watch for changes in these directories: ['/Users/jominseo/HGZero/ai-python']
ERROR: [Errno 48] Address already in use
INFO: Uvicorn running on http://0.0.0.0:8086 (Press CTRL+C to quit)
INFO: Started reloader process [83849] using WatchFiles
INFO: Started server process [83852]
INFO: Waiting for application startup.
2025-10-29 17:40:52,272 - main - INFO - 애플리케이션 시작 - Event Hub 리스너 백그라운드 실행
2025-10-29 17:40:52,272 - app.services.eventhub_service - INFO - Event Hub 리스너 시작
INFO: Application startup complete.
2025-10-29 17:40:52,370 - app.services.redis_service - INFO - Redis 연결 성공
2025-10-29 17:40:52,370 - azure.eventhub.aio._eventprocessor.event_processor - INFO - EventProcessor 'e4acf592-7d23-4eed-bfc5-79f73d26adbb' is being started
2025-10-29 17:40:52,504 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: None -> <ConnectionState.START: 0>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.START: 0> -> <ConnectionState.HDR_SENT: 2>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.HDR_SENT: 2>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.OPEN_PIPE: 4>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.UNMAPPED: 0> -> <SessionState.BEGIN_SENT: 1>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,532 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,532 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,545 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.OPEN_PIPE: 4> -> <ConnectionState.OPEN_SENT: 7>
2025-10-29 17:40:52,595 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.OPEN_SENT: 7> -> <ConnectionState.OPENED: 9>
2025-10-29 17:40:52,647 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.BEGIN_SENT: 1> -> <SessionState.MAPPED: 3>
2025-10-29 17:40:52,698 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,699 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._cbs_async - INFO - CBS completed opening with status: <ManagementOpenResult.OK: 1>
2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.MAPPED: 3> -> <SessionState.END_SENT: 4>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.OPENED: 9> -> <ConnectionState.CLOSE_SENT: 11>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.CLOSE_SENT: 11> -> <ConnectionState.END: 13>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.END_SENT: 4> -> <SessionState.DISCARDING: 6>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2025-10-29 17:40:52,977 - azure.eventhub.aio._eventprocessor.event_processor - INFO - EventProcessor 'e4acf592-7d23-4eed-bfc5-79f73d26adbb' has claimed partition '0'
2025-10-29 17:40:52,977 - azure.eventhub.aio._eventprocessor.event_processor - INFO - start ownership '0', checkpoint None
2025-10-29 17:40:53,043 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: None -> <ConnectionState.START: 0>
2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.START: 0> -> <ConnectionState.HDR_SENT: 2>
2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.HDR_SENT: 2>
2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.OPEN_PIPE: 4>
2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.UNMAPPED: 0> -> <SessionState.BEGIN_SENT: 1>
2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:53,083 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.OPEN_PIPE: 4> -> <ConnectionState.OPEN_SENT: 7>
2025-10-29 17:40:53,134 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: <ConnectionState.OPEN_SENT: 7> -> <ConnectionState.OPENED: 9>
2025-10-29 17:40:53,185 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: <SessionState.BEGIN_SENT: 1> -> <SessionState.MAPPED: 3>
2025-10-29 17:40:53,236 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:53,236 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._cbs_async - INFO - CBS completed opening with status: <ManagementOpenResult.OK: 1>
2025-10-29 17:40:53,491 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2025-10-29 17:40:53,503 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2025-10-29 17:40:53,592 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","text”:”오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.”,”speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,592 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","text”:”오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.”,”speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,593 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798e”,”recordingId":"test-meeting-001","meetingId":"test-meeting-001","text”:”오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.”,”speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,593 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 144 (char 143)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 144 (char 143)
2025-10-29 17:40:53,597 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfe9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798e”,”recordingId":"test-meeting-001","meetingId":"test-meeting-001","text”:”오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.”,”speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,597 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 144 (char 143)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 144 (char 143)
2025-10-29 17:40:53,598 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","text":"신제품 개발 일정에 대해 논의하고 있습니다.","speakerId":"UNKNOWN","speakerName":"참석자","timestamp":[2025,10,29,10,25,
2025-10-29 17:40:53,598 - app.services.eventhub_service - INFO - STT 텍스트 수신 - meetingId: test-meeting-001, 텍스트 길이: 24, timestamp: 1761701136000
2025-10-29 17:40:53,618 - app.services.eventhub_service - INFO - ✅ Redis 저장 완료 - meetingId: test-meeting-001, timestamp: 1761701136000
2025-10-29 17:40:53,618 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","text":"오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,618 - app.services.eventhub_service - INFO - STT 텍스트 수신 - meetingId: test-meeting-001, 텍스트 길이: 42, timestamp: 1761701137000
2025-10-29 17:40:53,637 - app.services.eventhub_service - INFO - ✅ Redis 저장 완료 - meetingId: test-meeting-001, timestamp: 1761701137000
2025-10-29 17:40:53,638 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001”,”sessionId”:”meeting-123”,“text":"오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","speak
2025-10-29 17:40:53,638 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 227 (char 226)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 227 (char 226)
2025-10-29 17:40:53,639 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001”,”sessionId”:”meeting-123”,“text":"오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","speak
2025-10-29 17:40:53,639 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 227 (char 226)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 227 (char 226)
2025-10-29 17:40:53,640 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","text":"오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","speakerName":"참석자","timestamp":
2025-10-29 17:40:53,641 - app.services.eventhub_service - INFO - STT 텍스트 수신 - meetingId: test-meeting-001, 텍스트 길이: 42, timestamp: 1761701137000
2025-10-29 17:40:53,660 - app.services.eventhub_service - INFO - ✅ Redis 저장 완료 - meetingId: test-meeting-001, timestamp: 1761701137000
2025-10-29 17:40:53,661 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001”,”sessionId”:”meeting-123”,“text":"오늘은 OFDM 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","speak
2025-10-29 17:40:53,661 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 227 (char 226)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 227 (char 226)
2025-10-29 17:40:53,662 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001”,”sessionId”:”meeting-123”,“text":"오늘은 OFDM. 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","spea
2025-10-29 17:40:53,662 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 227 (char 226)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 227 (char 226)
2025-10-29 17:40:53,663 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7cfd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bba798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001”,”sessionId”:”meeting-123”,“text":"오늘은 OFDM. 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","spea
2025-10-29 17:40:53,663 - app.services.eventhub_service - ERROR - 이벤트 처리 오류: Expecting ',' delimiter: line 1 column 227 (char 226)
Traceback (most recent call last):
File "/Users/jominseo/HGZero/ai-python/app/services/eventhub_service.py", line 71, in on_event
event_data = json.loads(raw_body)
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py", line 361, in raw_decode
obj, end = self.scan_once(s, idx)
~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 227 (char 226)
2025-10-29 17:40:53,664 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7dgd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bdg798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","sessionId":"meeting-123","text":"오늘은 OFDM. 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","spea
2025-10-29 17:40:53,664 - app.services.eventhub_service - INFO - STT 텍스트 수신 - meetingId: test-meeting-001, 텍스트 길이: 43, timestamp: 1761701137000
2025-10-29 17:40:53,685 - app.services.eventhub_service - INFO - ✅ Redis 저장 완료 - meetingId: test-meeting-001, timestamp: 1761701137000
INFO: 127.0.0.1:49558 - "GET /health HTTP/1.1" 200 OK
2025-10-29 17:42:22,649 - app.services.eventhub_service - INFO - 수신한 이벤트 원본 (처음 300자): {"eventId":"7436b96c-3a60-418b-848d-727770d7dgd9","eventType":"SegmentCreated","segmentId":"9483cf8a-e41e-49e9-b2c0-28519bdg798d","recordingId":"test-meeting-001","meetingId":"test-meeting-001","sessionId":"meeting-123","text":"오늘은 OFDM. 기술 적용방안과 AICC 구축 협의에 대해 논의해보겠습니다.","speakerId":"UNKNOWN","spea
2025-10-29 17:42:22,649 - app.services.eventhub_service - INFO - STT 텍스트 수신 - meetingId: test-meeting-001, 텍스트 길이: 43, timestamp: 1761701137000
2025-10-29 17:42:22,667 - app.services.eventhub_service - INFO - ✅ Redis 저장 완료 - meetingId: test-meeting-001, timestamp: 1761701137000
2025-10-29 17:42:52,639 - watchfiles.main - INFO - 3 changes detected
2025-10-29 17:42:55,136 - watchfiles.main - INFO - 3 changes detected
INFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
INFO: Finished server process [83852]
INFO: Stopping reloader process [83849]

View File

@ -8,7 +8,7 @@
### Endpoint
```
GET http://localhost:8086/api/ai/suggestions/meetings/{meeting_id}/stream
GET http://localhost:8087/api/v1/ai/suggestions/meetings/{meeting_id}/stream
```
### Parameters
@ -68,7 +68,7 @@ data: {"suggestions":[...]}
```javascript
const meetingId = 'your-meeting-id';
const aiServiceUrl = 'http://localhost:8086';
const aiServiceUrl = 'http://localhost:8087';
let eventSource = null;
// SSE 연결
@ -245,10 +245,10 @@ interface RealtimeSuggestionsResponse {
### 1. 로컬 환경 테스트
```bash
# AI Service 실행 확인
curl http://localhost:8086/health
curl http://localhost:8087/health
# SSE 연결 테스트 (3초 후 자동 종료)
timeout 30 curl -N http://localhost:8086/api/ai/suggestions/meetings/test-meeting-001/stream
# SSE 연결 테스트 (30초 후 자동 종료)
timeout 30 curl -N http://localhost:8087/api/v1/ai/suggestions/meetings/test-meeting-001/stream
```
### 2. 브라우저 테스트
@ -265,8 +265,8 @@ timeout 30 curl -N http://localhost:8086/api/ai/suggestions/meetings/test-meetin
## ⚙️ 환경 설정
### Backend (Python AI Service)
- **Port**: 8086
- **Endpoint**: `/api/ai/suggestions/meetings/{meeting_id}/stream`
- **Port**: 8087
- **Endpoint**: `/api/v1/ai/suggestions/meetings/{meeting_id}/stream`
- **CORS**: `http://localhost:8888` 허용
### 임계값 설정
@ -304,7 +304,7 @@ console.log('Ping received:', 'alive-3');
- Transfer-Encoding: `chunked`
### 문제 발생 시 확인
1. AI Service 실행 여부: `curl http://localhost:8086/health`
1. AI Service 실행 여부: `curl http://localhost:8087/health`
2. CORS 헤더: Network 탭 → Headers → Response Headers
3. 이벤트 수신: EventStream 탭에서 실시간 데이터 확인

View File

@ -151,3 +151,9 @@ azure:
storage:
connection-string: ${AZURE_STORAGE_CONNECTION_STRING:}
container: ${AZURE_STORAGE_CONTAINER:hgzero-checkpoints}
# AI Service Configuration
ai:
service:
url: ${AI_SERVICE_URL:http://localhost:8087}
timeout: ${AI_SERVICE_TIMEOUT:30000}