From c68df2f73396eb578a7f46a47d1ef639155b2156 Mon Sep 17 00:00:00 2001 From: Minseo-Jo Date: Wed, 29 Oct 2025 17:45:12 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8F=AC=ED=8A=B8=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=ED=86=B5=EC=9D=BC:=20ai-python=20=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=208087=20=ED=8F=AC=ED=8A=B8=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 포트 반영) 목적: 다른 개발자들의 테스트 환경 통일 및 혼란 방지 --- ai-python/.env.example | 2 +- ai-python/__pycache__/main.cpython-313.pyc | Bin 1862 -> 2465 bytes .../app/__pycache__/config.cpython-313.pyc | Bin 2523 -> 2523 bytes .../v1/__pycache__/__init__.cpython-313.pyc | Bin 581 -> 581 bytes .../__pycache__/suggestions.cpython-313.pyc | Bin 5575 -> 6308 bytes .../__pycache__/transcripts.cpython-313.pyc | Bin 2481 -> 2481 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 502 -> 502 bytes .../__pycache__/transcript.cpython-313.pyc | Bin 3617 -> 3617 bytes .../consolidate_prompt.cpython-313.pyc | Bin 4671 -> 4671 bytes .../claude_service.cpython-313.pyc | Bin 5885 -> 5885 bytes .../eventhub_service.cpython-313.pyc | Bin 5694 -> 6929 bytes .../transcript_service.cpython-313.pyc | Bin 5300 -> 5300 bytes ai-python/logs/ai-python.log | 213 +++++++++++++++++- develop/dev/ai-frontend-integration-guide.md | 16 +- meeting/src/main/resources/application.yml | 6 + 15 files changed, 227 insertions(+), 10 deletions(-) diff --git a/ai-python/.env.example b/ai-python/.env.example index 937a478..dc71b1a 100644 --- a/ai-python/.env.example +++ b/ai-python/.env.example @@ -1,5 +1,5 @@ # 서버 설정 -PORT=8086 +PORT=8087 HOST=0.0.0.0 # Claude API diff --git a/ai-python/__pycache__/main.cpython-313.pyc b/ai-python/__pycache__/main.cpython-313.pyc index f86462a8e2c1341fa8fced3b02f24ad91721a9aa..bf4e11c05af0c83217f9ba952eefd9444f523226 100644 GIT binary patch delta 1226 zcmaJ>O-vI(6rTO*w$LAuVkuB?Q`ArlARyKnLPW(F8$Ilph+#=n%F;H}wwc{xjE90h z0e=pX75^dz6XHb=8cEcIvsaB^OjbR5(3S*)7mWvJN|zR!ILW;C&G+8-_PuF$-`F16 zZEIF*Il#;QmWtlwrfp7oA3fc4IBoQsk6Vz12atla--@g`Z$mcGDl`zm=H&*M=QnfY z1WmBaNAo1=E{$SUWf!&1BfDsHgRXp18dZr54p#}yr7~C!&Cmj^&<3~oIOGr=LR)E; zXu#?{r97;FTidAIuJjpjYYw5aBr6TXa%hKDx!xUu-d0f_+@^O99km;MqdHv9SCp2A zuzDlgS(IHbR>GPC{Qv}e0T3ynTUVaa0RV0QYw;vK1x81hJ*eY?hZUGVR5}F zb>=!UbC?d(9+%3~gEbyXtCp1@QUcPL6jvgtp+GDuD^mQ$1-geyYsOqKl?>^1h-dM> zg!dZ4rV;R91`J@dz63@`1rI5GejW@Eb#4iqjtbrl2FmnP7f7$ef;dcjnGwpvr1s-T zc4ltn){V^Lr`g5v?Ce7J%3VHt{XzEOG;w?%nTJ1?8sbUDwfW5DseCwf^uOYkg7id@ zHuLQH_m{6Svy0jL3mNqRt~I}M`|3%LLE~bHa9Bbb8;y@7G-FUc9}h(nnmL4|pdtm7 zpgf9<_>ro>cKEIN3thi&v>o#;c+0!6`3AJdA3wSXB&77UU%5cM!8vePZyQHYMUk{cB8E zQgV;d7?g^mCX(nOW;ZsPA(l8Np?~`{b)QWPr(#kM!vB3hz5=pWZRTpZFQE4mu&GD5 lxds!U4U?`3*HmP3s}}VuH^`E~{{r0K1I_>d delta 622 zcmZ1|e2kCpGcPX}0}yoYX3XSdoyaG_^o4PvhBGIVH+K1|f2C1ML0OAF626F{-2lE8; z2J>066$!@(2WeueieUxn*1{AI<_{LoX9QzG%S2Y7TZDsjF_pz|1q%fWgWW0|q>m{d zECO?Qu&5Nm*%C4Q!D3bs3=D~m3=A=hK}JAdin@yfonnG%22j)tQ#6<#C~ko%9%Mb) zhDn-R!V>7_bf$DBP07hgOtG79G1)LqzQ;Oqaw4mdFi%EmVopg$d~!x=a(0m%&=9T3 zv)ED?qhr9lERAVL--%3+h6pHiBWYF7kuGbl2PMS$c7W=2NFn+z(q z8TjrpNZ(~Jy33$^mq8E6{lLb+$Z?%P_!5Kg4KBfcolcz_+>W1EnHiZT&*x}nWSi{3 J8Os7P9{}U2XT<;j diff --git a/ai-python/app/__pycache__/config.cpython-313.pyc b/ai-python/app/__pycache__/config.cpython-313.pyc index 24fa9a1bdc0fb6bc08e8bb129a288a39f63e5a31..624e3faafd840978137d790e295e248559dba4d7 100644 GIT binary patch delta 44 zcmcaDd|R0JGcPX}0}u$GXUx2^kvEQ&k$H0t>n|ow^$RSrGm0;>sBO;Y$YBHkBO?ta delta 44 zcmcaDd|R0JGcPX}0}yoYX3U(tkvEQ&k!y1f>n|owjSDQYGm0;>sBg~a$YBHkDIX0| diff --git a/ai-python/app/api/v1/__pycache__/__init__.cpython-313.pyc b/ai-python/app/api/v1/__pycache__/__init__.cpython-313.pyc index 82f3c7745ea792acc74c1a471c402fb5a9fa8d9b..8f61722ff30946f3bfb5de55eb15090f2dcb4c6d 100644 GIT binary patch delta 19 ZcmX@ga+HPZGcPX}0}u$G-^gXn1OPL+1dadz delta 19 ZcmX@ga+HPZGcPX}0}#C1yOGP92>>{O1y=w7 diff --git a/ai-python/app/api/v1/__pycache__/suggestions.cpython-313.pyc b/ai-python/app/api/v1/__pycache__/suggestions.cpython-313.pyc index d53786000c423335efe00b5ed4859731ba51a569..c812365ec87a58f2b2b04b89673db76e3aab013c 100644 GIT binary patch delta 2360 zcmZuyZA@F&89wKJ`P#nzwy`0>TqrR(!~{eFDPeR5Ard=Hif_=;!b%G-$H0#>MHO~f9hxOkI zz9G9LNDj#I>7+fs6YhM)QtIq6Q7jO@O-one*{2!1%NZ{ z!#~C7CIHiV-4@XQXzOw<0kA8W2L}uFNwyhZ!+V-;#KAF{1{T4LzhRLI>f5${7}EFI z+nVh&dm8d-s$o6Nq*`^4ttBK0y>z3_|B31gILs2AyFxRm5O(wFf3`P=aGPAD`T=Tp zvu48jQDHCB0VKEnCtK*W2qxi^qX6)DKY7xmF&><}jlZk-^R$DRa3jA|M*}_DEg+5a z$JIURKWT{%di1IgXzgrRV!L(#O6)GXE@Ef*k|GAEX;$*-p9}3Us&5I0P1@_sfp5`m zAP3DE@aq{zN7Y~!@FW@5j8ZDe8BNYcDT9?4<&tJF*|e4}lZcy_m%sk~^4)hoy7$Vm zxcP_cn?Ju!P)wYcWevL@&klj5#NluH_h`~h(R$&15cc^~$^_rupVU%5sc?q0dP zxpYz7yn6ZW+pn7LLl6DSWPlEcUoS6j{^~kD!;vn;)N(#At6D)RMQIemdV?xtQ8Nbm zJB}lKg-aI;i*iiA?Rc&~fXD%cye2sA`>^B zUyDqwi&H;weC2L>OL$$VwT<6M+!$FsUwb-NJCm>FmD<7&YD%>ZKsaupb^!2T!7f;|k!kru8 z&ZX}zovQ6UgwqLnaXKFFjsSw;x8~oNUy83aMb_PsnmclT3gR5^2Y_S${SatR!7VrF zo`qWi=t{$_KE2cPV)aAZiA(llF8E{L#0dBeoakfTehj0JIXE%Ed~AukFmtmBP7E?P zgK-OHJ_*B#Bg`jlV^++3+6^a$nNOoU!2^)cL6aUa>99#h4ov##&$_9}e(>3TE5QT7 zNf*6hV<)TqV8z8^(TbnO>Xo1mr?RpiPR5v(9**FC|1p7HW#KWNU*$N01scmMd`XFA z(wTFzL6wwB;GCu{3?DpLR5Iz}IYrfmkKko68Y;_Crs5bUma%cAq#>nP@tldpGa0!U z8>^OcIT_($uk0ZbRc+YB;>Du!LhKYOYLr23 zxT%O-F=QcxT>2=5yaW$nqT;~=&xvRdPkhzeTpht|fXGvrm=n1(Mgi9TQu1Q5<~{Vm zGasC&x#PE(u{tvj+1Rzwe*m)YoS=Zv_9Y)&_H7*ybNX^E*j_XZ|`gS@v{Ta6PUaQwuzD?2MhSAVMTGek4#7BSboDW{tj0P@E96Fn$C_DHr8YG=*gle`*brIt?NG5=3uoC<>l}+ccm8-#|0ie*gv! BN9+Iq delta 1692 zcmaJ>O>7%Q6n?XRUfXMXHX``(+G zH{Z;@nOmv*&pJ094ja&~_A{!U^IUUw&JQAh8=wIO4QX5sWjV}+80T|*R=|SEg`9{* z8WVC7mZ%kTmaL3rvro!dvo>rqxg}@MDp)bOoO5KI*lBWW&XrZM8iJyjkFfQ(KeDP= z=8Nt_R0aF6r^rR%(3S((TU2*>zM`_r^B2AO=bjGSWi*>+*A&g6IW?E2Y8^?GM4CIn zQS=N8nzz_F#A&{6xF~F|abXqY=3C?sxu&+WL?O*jp}0WKTkmq1CsEs3a>X`uc!DcP?H%OhHruh8 zUjWKC0p18_KBeqSfC?G@qMBZ_fs{_Vt zrJ@_nYNHuFUFUf(mdS!EL>{}2l8pL%hcw-w({M|u z)~6aRep)B9>LqK4s%jw}tJga|K6#Eh2BC%j_h0ZnJnD>o;k@El7n0V2HFt2u-S^Pl zx9pCuDDfpFzP7jb%BeNCe=T-!B{udjHul@a<=B~((3z_a;&vzbNBtRc(LFc#Sb{+B zXSM6KuSS;ru@yD8q{cQ*fG4nF1;>F61;Tl>;e`D~v>`)Z8Er&KzvtcgAE}hf_VG0O z#4{R&uhD3?aI=T9+h}x;@N0^)J4rO!E8I!#qx`NHjfRA~zLDe9x#vNn5#gTK!uTG< zu-C+pi4hZ{{bR@Y1(h4`f(5sg@t(j~nqL?cStLC#vd}S}IVU_+#-baI`-DZ0#CVr? ze28BhK;ubyF(ENN#M5|O!276d9AzLfVAn3rVU_Vg3I<2vds&O*Sr+N-fJ&*=Uw$s`LeT;13M2 zq%8|8mukI&W6YD9Z_hA?>1x@^Gc$==V^W_sutYin;du)SceAjeQmJUwz7b=qBmdNs!F+3s+Vhesbn5uOTy+8hRr?ovaviJi|O40^MK5K z;3Lc(rbqmAuktafYIa&bj$fud>;X3(P*~>?Lcc?N750+Vz=u6AA~g8zOPj##W&<7O Sxb-?>&U%)7&>0kHM)(&Y9b)$Y diff --git a/ai-python/app/api/v1/__pycache__/transcripts.cpython-313.pyc b/ai-python/app/api/v1/__pycache__/transcripts.cpython-313.pyc index 2c16c4537bbc8480872cec8798c17ce2ade132b9..0fc30f632c1e1f4a85aa2277f788b6713aebf12d 100644 GIT binary patch delta 19 Zcmdleyiu6zGcPX}0}u$G-^jI`696;D1or>{ delta 19 Zcmdleyiu6zGcPX}0}y2F-pI9_696?}1vmfz diff --git a/ai-python/app/models/__pycache__/__init__.cpython-313.pyc b/ai-python/app/models/__pycache__/__init__.cpython-313.pyc index 5d30b7f045648fae0d99a82170be99bcc86df33f..fdb4907fa3fe911ea22489083163256bf6d4e7f1 100644 GIT binary patch delta 19 Zcmeyy{EeCGGcPX}0}u$G-^lfb5db^f1)cx^ delta 19 Zcmeyy{EeCGGcPX}0}%A>+sO5X5dc1E1_%HE diff --git a/ai-python/app/models/__pycache__/transcript.cpython-313.pyc b/ai-python/app/models/__pycache__/transcript.cpython-313.pyc index 28e6f240deecf6e844632d5d4a80780d7b109337..18614597858af6f634793a0b4a9fd0945ab658f2 100644 GIT binary patch delta 19 ZcmZ1|vrvZXGcPX}0}u$G-^eA-2LLgh1YQ6D delta 19 ZcmZ1|vrvZXGcPX}0}y2F-pD1+2LLlS1fKu^ diff --git a/ai-python/app/prompts/__pycache__/consolidate_prompt.cpython-313.pyc b/ai-python/app/prompts/__pycache__/consolidate_prompt.cpython-313.pyc index 80653422861c9b57dadd8b5dc6e18de7fd3fc123..6ae76b4d3af3eacca5be349cb51deb27ac6ffa97 100644 GIT binary patch delta 19 Zcmdn5vR{SkGcPX}0}u$G-^gVu1OPWB1k3;c delta 19 Zcmdn5vR{SkGcPX}0}y2F-pFMt1OPa{1q}cI diff --git a/ai-python/app/services/__pycache__/claude_service.cpython-313.pyc b/ai-python/app/services/__pycache__/claude_service.cpython-313.pyc index 3580aa6f09bb9d15a42aa9d7a7e3a9b87f0d9815..ebcc1e325b5eaa6b7b7e183784044042666f806a 100644 GIT binary patch delta 19 ZcmeyX`&XCiGcPX}0}u$G-^le@3;;rp1{?qY delta 19 ZcmeyX`&XCiGcPX}0}!0tyOHa&7yw3j2EYIS diff --git a/ai-python/app/services/__pycache__/eventhub_service.cpython-313.pyc b/ai-python/app/services/__pycache__/eventhub_service.cpython-313.pyc index 25549bb0d8ba6e155eb38a28ef5718cb8f01d369..898073cda1bbfd673ecc75604d8eb1dbde03c4ba 100644 GIT binary patch delta 2166 zcmZuyeQZ-z6u-Cc^>giOySD50)|IzSgl_8?%rO}s1II_lV8|X%78WSawHqDV>v-+J zA#;SNK_RirlQ89LMvNpFQ$92#8nZtXYK-BPqQjS&5dSbDB@9`j3IBNSx)wxkll#s+ z=l473+;i@|{ibSUG4;@7G5|De*J0?M?ES}vsO-*<+HkmuL0oq0l?~6 zLyLaBUeGgu)1j4)1Oo&B{pSVa)68M)2vOfhR5ieG9r}Pxkkt#Or@=GWyeF`EIV|-| ztnmq~F^4sC`ZCadzWvAc`*qIQ!U~oS2X>DKXK8cd{;XzAUPQ`nP_S-V#_4ip$U|j# zOv#mDljpH^tG=xWJCfRscIgbE`=3Kj%~B2RnW}M`oa->kL7Q83qd-p`lR7h}p#W=n zV$-=kBE6NfqT`e6HiOR`XrrY)q-|+QW{*$KoQBhKRyKbL(F|DCF4U>L@EFmmHlp+T zbmS$rnaG(4WVSR6=vHNZI?!5P3Od|b|60I52Y`^@p^{FhOFZ@&wu8$@`H^e^>s+E@ zz#J4+$X}J;t;&46U>A^v)edbbV%jpy1%;dqUy1*4Y^!WD9Q4JU<-{D&1?!0}=qZv; z8gJJRRG~D|hey*##_k z(qjkHr$1rRN6y|mdXDijv;5{j12ceMmMUozRUkD`?qQEr$$K>%81(ZIeVU z3iv?49~F5a(kX`eqy9){uVNXFQH~~$UHXnl z%)mQWOu5SV5i1j$91QZJqV5X|(On7=;0G0QS9m~FG<_jqAR1IOkzi+72q>z+Y>Igz zu980}ieXWlYeRk`b~G`MhvYCXTDKB)?+!Q!rV4BH&G5FwmR)Z87jtTQ*U6-Sxfe2lqrX zpKRt+&7E>rPqMiuwPtrrKczuikW0KNv-iu2t5V$T9*!>`FB;FABA{aWu!$e zTbD45ACTFdGT$Tb+$}S`KiT`Hior{8EsR&lX72+F!v8aE1cjv!0kjTz;iR2DzF}m8 zT<%NI38TDahwSf>ckGr+d*ywv$2RAhr_Tzm zy4>p+aJ2!hbCXw>&O!1unnc!XZir>Z;G>9Z6|_%JBuEnB6FSUI=+#J{pa`t78hp!$ zM6uIXPb3zpv9(@}HOmMjcj6}@JJA1z6t^Vc3Te>#0*qYx+}a7@ektGf1#FWNwieAY zbu;|yfK+6^uilPGha{8Z#X|Jf14YY628GU0Skd-|ySvf5Al6CS9oy(F$e6jnMOf0} h2~)*wQqoZf1Ja+4Mn^w{iyr_yKiowSkQVV@@xReN7O4OL delta 1069 zcmYLI&u`;I6n>Mj9Vc;|q-mWW-85;_YMWA^qMPk5lx<3bP+-X+t|def#v41{pw=ml zyQ1R24{_kaVKrJI;IR8IpcN7qRx7pQh+0*s#it(NfCM7TR)Px>Go;Dd(l_sY^WOX3 z^Nep_elRaTjz+^kpXdf^{~&)Oza5Uu1ptarfIBcjPH4je4i7ouoEu#pQbCPV`RCsNFt!0Sezq?F#!c!8L+>4c4e@*n zNF}1oYrG63Q=-qxRK5tq#c5HWwr4%WY zLM}TEKe27NUfXMT9KA{YNXQFe>lSTYHx1A5&uwpa+j5^_nZw528R~XJ6v*cz&lO|z zs{IBZK`(tFR71aHa(A;|W$(RwJY7DVE+0)V9c8W%A^CJBJ#|<9Qoi@WQF`&S+G#9v zkSia>$`9s#B=OOSW)GvW@)^d7k)8yp@ndE7P?gf2e< NhL0;4qwN2o{{dzU^Zft- diff --git a/ai-python/app/services/__pycache__/transcript_service.cpython-313.pyc b/ai-python/app/services/__pycache__/transcript_service.cpython-313.pyc index 0b593a5cf8349b317c96d1f2d80229c872fb69b9..ef0535a29ba0db1c7ea3454a024f017cec29f31c 100644 GIT binary patch delta 19 Zcmdm@xkZ!fGcPX}0}u$G-^jH}1OPWL1vdZy delta 19 Zcmdm@xkZ!fGcPX}0}y2F-pI8|1OPb61$Y1e diff --git a/ai-python/logs/ai-python.log b/ai-python/logs/ai-python.log index 4bc9155..8b115ff 100644 --- a/ai-python/logs/ai-python.log +++ b/ai-python/logs/ai-python.log @@ -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 -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,531 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,532 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,532 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,545 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,595 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,647 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:52,698 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,699 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,750 - azure.eventhub._pyamqp.aio._cbs_async - INFO - CBS completed opening with status: +2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,955 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,967 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,976 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:52,977 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +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 -> +2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:53,068 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:53,069 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:53,083 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:53,134 - azure.eventhub._pyamqp.aio._connection_async - INFO - Connection state changed: -> +2025-10-29 17:40:53,185 - azure.eventhub._pyamqp.aio._session_async - INFO - Session state changed: -> +2025-10-29 17:40:53,236 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:53,236 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link receiver state changed: -> +2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._management_link_async - INFO - Management link sender state changed: -> +2025-10-29 17:40:53,288 - azure.eventhub._pyamqp.aio._cbs_async - INFO - CBS completed opening with status: +2025-10-29 17:40:53,491 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +2025-10-29 17:40:53,503 - azure.eventhub._pyamqp.aio._link_async - INFO - Link state changed: -> +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] diff --git a/develop/dev/ai-frontend-integration-guide.md b/develop/dev/ai-frontend-integration-guide.md index 7f106b1..c82766e 100644 --- a/develop/dev/ai-frontend-integration-guide.md +++ b/develop/dev/ai-frontend-integration-guide.md @@ -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 탭에서 실시간 데이터 확인 diff --git a/meeting/src/main/resources/application.yml b/meeting/src/main/resources/application.yml index 4756b62..660a68a 100644 --- a/meeting/src/main/resources/application.yml +++ b/meeting/src/main/resources/application.yml @@ -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}