sakamomo554101 / YouyakuAI

日本語用の要約を行うデモサービス
0 stars 0 forks source link

DBをBigQueryを利用するように修正 #21

Closed sakamomo554101 closed 2 years ago

sakamomo554101 commented 3 years ago

概要

DBをBQに保存するように対応 現状は、(別コンテナ化しているが)MySQLへ保存するように対応している。

上記のDBヘルパー的なインスタンスをBQ用にも作成し、データを保存できるようにする。

sakamomo554101 commented 2 years ago

summarize_job_logもレコードがないのはおかしいな・・。 要約処理のリクエストがきたら、かならず登録されるはずなんだが、、

sakamomo554101 commented 2 years ago

job_idをuuidで入れてるのが問題かも・・。 色々と統一感ないな

sakamomo554101 commented 2 years ago

とりあえず、uuidをstringに変換して、BQに入れ直す

sakamomo554101 commented 2 years ago

なるほど、、BQの場合、insertのタイミングでuuid付与しているから、BodyInfoのインスタンス作ったタイミングでは、まだidがない状態なんだ・・。

MySQLの場合、かってにIDが割り振られる前提だからOK

sakamomo554101 commented 2 years ago

方針

sakamomo554101 commented 2 years ago

あれ、、SQLAlchemyのcolumnに対して、初期化が聞いてないような・・。 dataclassだから?

sakamomo554101 commented 2 years ago

https://docs.python.org/ja/3/library/dataclasses.html#post-init-processing __post_init__でuuidの初期化すれば良いかも。試す。

sakamomo554101 commented 2 years ago

summarize_job_infoとsummarize_job_logのidに差分がある・・

sakamomo554101 commented 2 years ago
sakamomo554101 commented 2 years ago

MySQL側、BQ側、両方要約処理のレスポンス変えることを確認!

IFの型を整理したら、コミット整理して、PR作る!

sakamomo554101 commented 2 years ago

テストも見た方がいいな。 特にMySQL側はこけそう

sakamomo554101 commented 2 years ago

うーむ、テストコード動かん・・。

とりあえずAPI_Gatewayから見ていく。

======================================================================
ERROR: test_get_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "api_gateway/test/test_api.py", line 84, in test_get_summarize_result_complete
    response = client.get(
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 468, in request
    return super().request(
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 266, in send
    raise exc
  File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 263, in send
    portal.call(self.app, scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/anyio/from_thread.py", line 230, in call
    return cast(T_Retval, self.start_task_soon(func, *args).result())
  File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 432, in result
    return self.__get_result()
  File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.8/site-packages/anyio/from_thread.py", line 177, in _call_func
    retval = await retval
  File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 208, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    raise exc
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    raise exc
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    await self.app(scope, receive, sender)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 656, in __call__
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 259, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 61, in app
    response = await func(request)
  File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 226, in app
    raw_response = await run_endpoint_function(
  File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 159, in run_endpoint_function
    return await dependant.call(**values)
  File "api_gateway/test/../api.py", line 96, in get_summarize_result
    return await self.__get_summarize_result(job_id=job_id)
  File "api_gateway/test/../api.py", line 126, in __get_summarize_result
    job_log = self.__db_instance.fetch_summarize_job_log_by_id(job_id=job_id)
  File "api_gateway/test/test_api.py", line 196, in fetch_summarize_job_log_by_id
    return [job_log for job_log in self.__job_logs if job_log.job_id == job_id][0]
IndexError: list index out of range

======================================================================
FAIL: test_request_summarize (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "api_gateway/test/test_api.py", line 59, in test_request_summarize
    self.assertEqual(len(queue), 1)
AssertionError: 0 != 1

======================================================================
FAIL: test_set_correct_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "api_gateway/test/test_api.py", line 119, in test_set_correct_summarize_result_complete
    self.assertEqual(response.status_code, 200)
AssertionError: 422 != 200

----------------------------------------------------------------------
Ran 3 tests in 0.069s

FAILED (failures=2, errors=1)
sakamomo554101 commented 2 years ago

結構まえのキューの実装修正した際のテストコードの修正ミスっぽいな・・。 やっぱりちゃんとテストを毎回全部実行したい・・

sakamomo554101 commented 2 years ago

test_apiは書き直す

======================================================================
FAIL: test_set_correct_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test/test_api.py", line 125, in test_set_correct_summarize_result_complete
    self.assertEqual(response.status_code, 200)
AssertionError: 422 != 200
sakamomo554101 commented 2 years ago

CorrectInputDataにstatus_codeは不要そうなので、削除する。 api.jsonも修正する(これどうやって作ったっけ・・)

sakamomo554101 commented 2 years ago

test_db_wrapper.pyもこけているので修正する。 ※これはBQ対応が関連してそう

sakamomo554101 commented 2 years ago

test_bq_db_wrapperもこけてるな・・。

sakamomo554101 commented 2 years ago

各idをfetch時に入れ直す必要がある

sakamomo554101 commented 2 years ago

一通りテストパスしたので、コミット整理して、マージする。 テスト追加するissueは作っておこ・・

sakamomo554101 commented 2 years ago

対応済み。クローズ。