diff --git a/babyagi/prompt.txt b/babyagi/prompt.txt
index 04c5aa54c120218379d00a99f5024138834ad3d0..ff7a51ccb22a75e59c23c1178fade095d0c1d532 100644
--- a/babyagi/prompt.txt
+++ b/babyagi/prompt.txt
@@ -1 +1 @@
- 電話番号の質問 についてチャットボットでよりよく対応するプランを日本語で作成して
\ No newline at end of file
+買取方法の質問 についてチャットボットでよりよく対応するプランを日本語で作成して
\ No newline at end of file
diff --git a/chat_history.db b/chat_history.db
index ea11d81f4aa36a49e7f4b0653534d468cb281951..21854ad4db3a6a38a091016085f420e8a5204233 100644
--- a/chat_history.db
+++ b/chat_history.db
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7d0345cd1ec2706ba828bc131b201c94b36b78d5bd33566cef1e237386724fb5
-size 1888256
+oid sha256:59bad515e34bfb94391ba97cedf672b3729509b15b2c02d0bf893bdd95a8ea3d
+size 2023424
diff --git a/controllers/gpt_enginner20240626095901 b/controllers/gpt_enginner20240626095901
new file mode 160000
index 0000000000000000000000000000000000000000..47ca97022a83b69c0ca2959d007d7b5a197477b8
--- /dev/null
+++ b/controllers/gpt_enginner20240626095901
@@ -0,0 +1 @@
+Subproject commit 47ca97022a83b69c0ca2959d007d7b5a197477b8
diff --git a/controllers/gpt_enginner20240626100137 b/controllers/gpt_enginner20240626100137
new file mode 160000
index 0000000000000000000000000000000000000000..d72fefa555c652367ace142685ee889bfefcf99c
--- /dev/null
+++ b/controllers/gpt_enginner20240626100137
@@ -0,0 +1 @@
+Subproject commit d72fefa555c652367ace142685ee889bfefcf99c
diff --git a/controllers/gpt_enginner20240626100428 b/controllers/gpt_enginner20240626100428
new file mode 160000
index 0000000000000000000000000000000000000000..ed1bc07ac5b6330a3ca36e8fc93588f41d684991
--- /dev/null
+++ b/controllers/gpt_enginner20240626100428
@@ -0,0 +1 @@
+Subproject commit ed1bc07ac5b6330a3ca36e8fc93588f41d684991
diff --git a/controllers/gpt_enginner20240626100734 b/controllers/gpt_enginner20240626100734
new file mode 160000
index 0000000000000000000000000000000000000000..fb97f1c3737da3592f6cf2e5dbd78ffe4fbf1285
--- /dev/null
+++ b/controllers/gpt_enginner20240626100734
@@ -0,0 +1 @@
+Subproject commit fb97f1c3737da3592f6cf2e5dbd78ffe4fbf1285
diff --git a/controllers/gpt_enginner20240626101148 b/controllers/gpt_enginner20240626101148
new file mode 160000
index 0000000000000000000000000000000000000000..7e86b7b877338a8ee49b22ec95ade97abadd108f
--- /dev/null
+++ b/controllers/gpt_enginner20240626101148
@@ -0,0 +1 @@
+Subproject commit 7e86b7b877338a8ee49b22ec95ade97abadd108f
diff --git a/controllers/gpt_enginner20240626101320 b/controllers/gpt_enginner20240626101320
new file mode 160000
index 0000000000000000000000000000000000000000..c1400e6f43a02ee7b29f5f27509e526a0ee585f5
--- /dev/null
+++ b/controllers/gpt_enginner20240626101320
@@ -0,0 +1 @@
+Subproject commit c1400e6f43a02ee7b29f5f27509e526a0ee585f5
diff --git a/controllers/gpt_enginner20240626101501 b/controllers/gpt_enginner20240626101501
new file mode 160000
index 0000000000000000000000000000000000000000..759e387fa0718a0f7d728abc433475a45e340adf
--- /dev/null
+++ b/controllers/gpt_enginner20240626101501
@@ -0,0 +1 @@
+Subproject commit 759e387fa0718a0f7d728abc433475a45e340adf
diff --git a/controllers/gpt_enginner20240626101746 b/controllers/gpt_enginner20240626101746
new file mode 160000
index 0000000000000000000000000000000000000000..9dff56141714de1bb7021a121863972d78f12f62
--- /dev/null
+++ b/controllers/gpt_enginner20240626101746
@@ -0,0 +1 @@
+Subproject commit 9dff56141714de1bb7021a121863972d78f12f62
diff --git a/controllers/gpt_enginner20240626102419 b/controllers/gpt_enginner20240626102419
new file mode 160000
index 0000000000000000000000000000000000000000..e6c6dd727b8c9d03bb1e9bfd835d72fab9555b8f
--- /dev/null
+++ b/controllers/gpt_enginner20240626102419
@@ -0,0 +1 @@
+Subproject commit e6c6dd727b8c9d03bb1e9bfd835d72fab9555b8f
diff --git a/controllers/gpt_enginner20240626102655 b/controllers/gpt_enginner20240626102655
new file mode 160000
index 0000000000000000000000000000000000000000..d659c2df11fc0a0f1b4d596578467aafcdaa48cc
--- /dev/null
+++ b/controllers/gpt_enginner20240626102655
@@ -0,0 +1 @@
+Subproject commit d659c2df11fc0a0f1b4d596578467aafcdaa48cc
diff --git a/controllers/gpt_enginner20240626102945 b/controllers/gpt_enginner20240626102945
new file mode 160000
index 0000000000000000000000000000000000000000..68a98cb7467ad4bda5bb485da8407b4c0ee18cd7
--- /dev/null
+++ b/controllers/gpt_enginner20240626102945
@@ -0,0 +1 @@
+Subproject commit 68a98cb7467ad4bda5bb485da8407b4c0ee18cd7
diff --git a/controllers/gpt_enginner20240626103116 b/controllers/gpt_enginner20240626103116
new file mode 160000
index 0000000000000000000000000000000000000000..75af004f94dd4182ae93e7a8078d525424dd33d9
--- /dev/null
+++ b/controllers/gpt_enginner20240626103116
@@ -0,0 +1 @@
+Subproject commit 75af004f94dd4182ae93e7a8078d525424dd33d9
diff --git a/controllers/gpt_enginner20240626103417 b/controllers/gpt_enginner20240626103417
new file mode 160000
index 0000000000000000000000000000000000000000..12096c2f4632209f1bfc83ec84ebb712ef81667f
--- /dev/null
+++ b/controllers/gpt_enginner20240626103417
@@ -0,0 +1 @@
+Subproject commit 12096c2f4632209f1bfc83ec84ebb712ef81667f
diff --git a/controllers/gpt_enginner20240626103600 b/controllers/gpt_enginner20240626103600
new file mode 160000
index 0000000000000000000000000000000000000000..4cb2326233a7dab2f77ff0d0eb96fe91be8a561d
--- /dev/null
+++ b/controllers/gpt_enginner20240626103600
@@ -0,0 +1 @@
+Subproject commit 4cb2326233a7dab2f77ff0d0eb96fe91be8a561d
diff --git a/controllers/gpt_enginner20240626103744 b/controllers/gpt_enginner20240626103744
new file mode 160000
index 0000000000000000000000000000000000000000..d956507fda5f20ae54c4917ceb432b5b41749f55
--- /dev/null
+++ b/controllers/gpt_enginner20240626103744
@@ -0,0 +1 @@
+Subproject commit d956507fda5f20ae54c4917ceb432b5b41749f55
diff --git "a/phone\350\257\204\344\274\260/manage.py" "b/phone\350\257\204\344\274\260/manage.py"
new file mode 100755
index 0000000000000000000000000000000000000000..c991c077c6b7f409fff622b53b1e1e90155036f3
--- /dev/null
+++ "b/phone\350\257\204\344\274\260/manage.py"
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phone评估.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git "a/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/__init__.py" "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/__init__.py"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/asgi.py" "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/asgi.py"
new file mode 100644
index 0000000000000000000000000000000000000000..c03325db42504ab4a25ac2d8f4f76541d09cea74
--- /dev/null
+++ "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/asgi.py"
@@ -0,0 +1,16 @@
+"""
+ASGI config for phone评估 project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phone评估.settings')
+
+application = get_asgi_application()
diff --git "a/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/settings.py" "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/settings.py"
new file mode 100644
index 0000000000000000000000000000000000000000..e6aec073ecc2ed46bff8f2be1aaebaeeb34e31a8
--- /dev/null
+++ "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/settings.py"
@@ -0,0 +1,123 @@
+"""
+Django settings for phone评估 project.
+
+Generated by 'django-admin startproject' using Django 5.0.4.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/5.0/ref/settings/
+"""
+
+from pathlib import Path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-u2b4i54$@bup4p7@w9#05leif!%8*fg!z6-i09k4o-j*y-cev%'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+]
+
+MIDDLEWARE = [
+ 'django.middleware.security.SecurityMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'phone评估.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'phone评估.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/5.0/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': BASE_DIR / 'db.sqlite3',
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/5.0/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/5.0/howto/static-files/
+
+STATIC_URL = 'static/'
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
diff --git "a/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/urls.py" "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/urls.py"
new file mode 100644
index 0000000000000000000000000000000000000000..fb64ba9ce221e72abaedd55c62c9de66dcc69d1f
--- /dev/null
+++ "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/urls.py"
@@ -0,0 +1,22 @@
+"""
+URL configuration for phone评估 project.
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/5.0/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.urls import include, path
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
+"""
+from django.contrib import admin
+from django.urls import path
+
+urlpatterns = [
+ path('admin/', admin.site.urls),
+]
diff --git "a/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/wsgi.py" "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/wsgi.py"
new file mode 100644
index 0000000000000000000000000000000000000000..33057016c5c8753eedbd984328b235adca2fb517
--- /dev/null
+++ "b/phone\350\257\204\344\274\260/phone\350\257\204\344\274\260/wsgi.py"
@@ -0,0 +1,16 @@
+"""
+WSGI config for phone评估 project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phone评估.settings')
+
+application = get_wsgi_application()
diff --git a/routers/webhook.py b/routers/webhook.py
index 4dc49dec584dea037963798bb37f0563b40a0fc3..5da02ce63520327f527e179647962291f5dff5d8 100644
--- a/routers/webhook.py
+++ b/routers/webhook.py
@@ -54,6 +54,27 @@ async def webhook(request: Request):
if event["type"] == "message" and event["message"]["type"] == "text":
user_id = event["source"]["userId"]
text = event["message"]["text"]
+ event_type = event.get('type')
+ webhook_event_id = event.get('webhookEventId')
+ delivery_context = event.get('deliveryContext', {})
+ timestamp = event.get('timestamp')
+ mode = event.get('mode')
+
+ # メッセージ情報を取得
+ message = event.get('message', {})
+ message_type = message.get('type')
+ message_id = message.get('id')
+ message_text = message.get('text')
+ quote_token = message.get('quoteToken')
+
+ # ソース情報を取得
+ source = event.get('source', {})
+ source_type = source.get('type')
+ user_id = source.get('userId')
+
+ # 応答トークンを取得
+ reply_token = event.get('replyToken')
+
user_name,thmbnail = get_user_profile(user_id,ChannelAccessToken)
logger.info("Received Headers: %s", user_name)
@@ -71,8 +92,23 @@ async def webhook(request: Request):
#\r\m
#########################################################################
#user_name,thmbnail#
- title = f""" {user_name}様から下記の質問があります"""
- subtitle = f"""ユーザーID {user_id}\r\n 質問内容\r\n {text}"""
+ subtitle = f""" {user_name}様から下記の質問があります"""
+ f"""Event Type: {event_type}
+ Webhook Event ID: {webhook_event_id}
+ Delivery Context: {delivery_context}
+ Timestamp: {timestamp}
+ Mode: {mode}
+ Message Type: {message_type}
+ Message ID: {message_id}
+ Text: {message_text}
+ Quote Token: {quote_token}
+ Source Type: {source_type}
+ User ID: {user_id}
+ Reply Token: {reply_token}
+ {text}
+ """
+
+ #subtitle = f"""ユーザーID {user_id}\r\n 質問内容\r\n {text}"""
link_text = "\r\nチャットボット設定用シート\r\n シート用のアプリはチャットから\r\n @リファペディア\r\n と打ち込むと開きます"
link_url = "https://docs.google.com/spreadsheets/d/13pqP-Ywo5eRlZBsYX2m3ChARG38EoIYOowFd3cWij1c/edit?gid=283940886#gid=283940886"
#test_set_lide(subtitle, text)
diff --git a/workspace/api/__init__.py b/workspace/api/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/api/admin.py b/workspace/api/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e
--- /dev/null
+++ b/workspace/api/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/workspace/api/apps.py b/workspace/api/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..66656fd29b2cc651c92dc03b2eaf6ef9a4397df0
--- /dev/null
+++ b/workspace/api/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ApiConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'api'
diff --git a/workspace/api/migrations/__init__.py b/workspace/api/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/api/models.py b/workspace/api/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..71a836239075aa6e6e4ecb700e9c42c95c022d91
--- /dev/null
+++ b/workspace/api/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/workspace/api/tests.py b/workspace/api/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6
--- /dev/null
+++ b/workspace/api/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/workspace/api/views.py b/workspace/api/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..91ea44a218fbd2f408430959283f0419c921093e
--- /dev/null
+++ b/workspace/api/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/workspace/backend_api/backend_api/__init__.py b/workspace/backend_api/backend_api/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/backend_api/backend_api/asgi.py b/workspace/backend_api/backend_api/asgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b725a180a222a3a4402e3470e4672f37febd5b0
--- /dev/null
+++ b/workspace/backend_api/backend_api/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for backend_api project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+
+application = get_asgi_application()
diff --git a/workspace/backend_api/backend_api/settings.py b/workspace/backend_api/backend_api/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..32beb5999404c658e1e85fb84a3b7ca7cf64c303
--- /dev/null
+++ b/workspace/backend_api/backend_api/settings.py
@@ -0,0 +1,123 @@
+"""
+Django settings for backend_api project.
+
+Generated by 'django-admin startproject' using Django 5.0.4.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/5.0/ref/settings/
+"""
+
+from pathlib import Path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-p^x*x-&fw*6suicb8u+15%&l=@aapo3lg&fgono&cp+(vol6$n'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+]
+
+MIDDLEWARE = [
+ 'django.middleware.security.SecurityMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'backend_api.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'backend_api.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/5.0/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': BASE_DIR / 'db.sqlite3',
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/5.0/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/5.0/howto/static-files/
+
+STATIC_URL = 'static/'
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
diff --git a/workspace/backend_api/backend_api/urls.py b/workspace/backend_api/backend_api/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..f11ffb244fa60841660c96e0be297925514e6b99
--- /dev/null
+++ b/workspace/backend_api/backend_api/urls.py
@@ -0,0 +1,22 @@
+"""
+URL configuration for backend_api project.
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/5.0/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.urls import include, path
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
+"""
+from django.contrib import admin
+from django.urls import path
+
+urlpatterns = [
+ path('admin/', admin.site.urls),
+]
diff --git a/workspace/backend_api/backend_api/wsgi.py b/workspace/backend_api/backend_api/wsgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..394dcf9268d53a54883a88dadc4aae16477e6dba
--- /dev/null
+++ b/workspace/backend_api/backend_api/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for backend_api project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+
+application = get_wsgi_application()
diff --git a/workspace/backend_api/manage.py b/workspace/backend_api/manage.py
new file mode 100755
index 0000000000000000000000000000000000000000..934281ec6ee27b24fbfb6209b1543a61fe6fe6ef
--- /dev/null
+++ b/workspace/backend_api/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/workspace/workspace/backend_api/api/__init__.py b/workspace/workspace/backend_api/api/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/workspace/backend_api/api/admin.py b/workspace/workspace/backend_api/api/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e
--- /dev/null
+++ b/workspace/workspace/backend_api/api/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/workspace/workspace/backend_api/api/apps.py b/workspace/workspace/backend_api/api/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..66656fd29b2cc651c92dc03b2eaf6ef9a4397df0
--- /dev/null
+++ b/workspace/workspace/backend_api/api/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ApiConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'api'
diff --git a/workspace/workspace/backend_api/api/migrations/__init__.py b/workspace/workspace/backend_api/api/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/workspace/backend_api/api/models.py b/workspace/workspace/backend_api/api/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..71a836239075aa6e6e4ecb700e9c42c95c022d91
--- /dev/null
+++ b/workspace/workspace/backend_api/api/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/workspace/workspace/backend_api/api/tests.py b/workspace/workspace/backend_api/api/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6
--- /dev/null
+++ b/workspace/workspace/backend_api/api/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/workspace/workspace/backend_api/api/views.py b/workspace/workspace/backend_api/api/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..91ea44a218fbd2f408430959283f0419c921093e
--- /dev/null
+++ b/workspace/workspace/backend_api/api/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/workspace/workspace/backend_api/backend_api/__init__.py b/workspace/workspace/backend_api/backend_api/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/workspace/workspace/backend_api/backend_api/asgi.py b/workspace/workspace/backend_api/backend_api/asgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b725a180a222a3a4402e3470e4672f37febd5b0
--- /dev/null
+++ b/workspace/workspace/backend_api/backend_api/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for backend_api project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+
+application = get_asgi_application()
diff --git a/workspace/workspace/backend_api/backend_api/settings.py b/workspace/workspace/backend_api/backend_api/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..fcc315793774414654ba98461d518b2b8f8c4763
--- /dev/null
+++ b/workspace/workspace/backend_api/backend_api/settings.py
@@ -0,0 +1,123 @@
+"""
+Django settings for backend_api project.
+
+Generated by 'django-admin startproject' using Django 5.0.4.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/5.0/ref/settings/
+"""
+
+from pathlib import Path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-)^lclxkaq^1tsq8ffo0dn9duvrcx_%sxe*5_%t)d3$8wzw#z@z'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+]
+
+MIDDLEWARE = [
+ 'django.middleware.security.SecurityMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'backend_api.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'backend_api.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/5.0/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': BASE_DIR / 'db.sqlite3',
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/5.0/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/5.0/howto/static-files/
+
+STATIC_URL = 'static/'
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
diff --git a/workspace/workspace/backend_api/backend_api/urls.py b/workspace/workspace/backend_api/backend_api/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..f11ffb244fa60841660c96e0be297925514e6b99
--- /dev/null
+++ b/workspace/workspace/backend_api/backend_api/urls.py
@@ -0,0 +1,22 @@
+"""
+URL configuration for backend_api project.
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/5.0/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.urls import include, path
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
+"""
+from django.contrib import admin
+from django.urls import path
+
+urlpatterns = [
+ path('admin/', admin.site.urls),
+]
diff --git a/workspace/workspace/backend_api/backend_api/wsgi.py b/workspace/workspace/backend_api/backend_api/wsgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..394dcf9268d53a54883a88dadc4aae16477e6dba
--- /dev/null
+++ b/workspace/workspace/backend_api/backend_api/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for backend_api project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+
+application = get_wsgi_application()
diff --git a/workspace/workspace/backend_api/manage.py b/workspace/workspace/backend_api/manage.py
new file mode 100755
index 0000000000000000000000000000000000000000..934281ec6ee27b24fbfb6209b1543a61fe6fe6ef
--- /dev/null
+++ b/workspace/workspace/backend_api/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_api.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/workspace/workspace/backend_api/workspace/main.py b/workspace/workspace/backend_api/workspace/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391