mirror of
https://github.com/spbleadersofdigtal/backend.git
synced 2024-11-21 11:06:33 +03:00
major fixes
This commit is contained in:
parent
d784e04ff5
commit
aa82f1d956
5
.env
5
.env
|
@ -1,5 +0,0 @@
|
|||
DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pitch_deck_generator
|
||||
CELERY_BROKER_URL=redis://localhost:6379/0
|
||||
REDIS_URL=redis://localhost:6379/1
|
||||
USE_DOCKER=no
|
||||
OPENAI_KEY=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
|
17
.envs/.local/.django
Normal file
17
.envs/.local/.django
Normal file
|
@ -0,0 +1,17 @@
|
|||
# General
|
||||
# ------------------------------------------------------------------------------
|
||||
USE_DOCKER=yes
|
||||
IPYTHONDIR=/app/.ipython
|
||||
DJANGO_READ_DOT_ENV_FILE=no
|
||||
# Redis
|
||||
# ------------------------------------------------------------------------------
|
||||
REDIS_URL=redis://redis:6379/1
|
||||
REDIS_CACHE=rediscache://redis:6379/1
|
||||
CELERY_BROKER_URL=redis://redis:6379/0
|
||||
|
||||
# Celery
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Flower
|
||||
CELERY_FLOWER_USER=debug
|
||||
CELERY_FLOWER_PASSWORD=debug
|
7
.envs/.local/.postgres
Normal file
7
.envs/.local/.postgres
Normal file
|
@ -0,0 +1,7 @@
|
|||
# PostgreSQL
|
||||
# ------------------------------------------------------------------------------
|
||||
POSTGRES_HOST=postgres
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_DB=akarpov
|
||||
POSTGRES_USER=debug
|
||||
POSTGRES_PASSWORD=debug
|
16
.envs/.production/.django
Normal file
16
.envs/.production/.django
Normal file
|
@ -0,0 +1,16 @@
|
|||
# General
|
||||
# CHANGE ON REAL SERVER
|
||||
# ------------------------------------------------------------------------------
|
||||
USE_DOCKER=yes
|
||||
DJANGO_READ_DOT_ENV_FILE=no
|
||||
# Redis
|
||||
# ------------------------------------------------------------------------------
|
||||
REDIS_URL=redis://redis:6379/0
|
||||
CELERY_BROKER_URL=redis://localhost:6379/0
|
||||
|
||||
# Celery
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Flower
|
||||
CELERY_FLOWER_USER=debug
|
||||
CELERY_FLOWER_PASSWORD=debug
|
7
.envs/.production/.postgres
Normal file
7
.envs/.production/.postgres
Normal file
|
@ -0,0 +1,7 @@
|
|||
# PostgreSQL
|
||||
# ------------------------------------------------------------------------------
|
||||
POSTGRES_HOST=postgres
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_DB=akarpov
|
||||
POSTGRES_USER=debug
|
||||
POSTGRES_PASSWORD=debug
|
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
|
@ -77,4 +77,3 @@ updates:
|
|||
# Check for updates to GitHub Actions every weekday
|
||||
schedule:
|
||||
interval: "daily"
|
||||
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
!.gitkeep
|
||||
.idea
|
||||
.env
|
||||
|
||||
### Python template
|
||||
# Byte-compiled / optimized / DLL files
|
||||
|
|
8
.idea/.gitignore
vendored
8
.idea/.gitignore
vendored
|
@ -1,8 +0,0 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
|
@ -1,24 +0,0 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyMethodMayBeStaticInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredPackages">
|
||||
<value>
|
||||
<list size="9">
|
||||
<item index="0" class="java.lang.String" itemvalue="pytest-instafail" />
|
||||
<item index="1" class="java.lang.String" itemvalue="cookiecutter" />
|
||||
<item index="2" class="java.lang.String" itemvalue="binaryornot" />
|
||||
<item index="3" class="java.lang.String" itemvalue="isort" />
|
||||
<item index="4" class="java.lang.String" itemvalue="PyGithub" />
|
||||
<item index="5" class="java.lang.String" itemvalue="pytest-cookies" />
|
||||
<item index="6" class="java.lang.String" itemvalue="gitpython" />
|
||||
<item index="7" class="java.lang.String" itemvalue="tox" />
|
||||
<item index="8" class="java.lang.String" itemvalue="django" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
|
@ -1,6 +0,0 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Poetry (pitch_deck_generator)" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/pitch_deck_generator.iml" filepath="$PROJECT_DIR$/.idea/pitch_deck_generator.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -1,27 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="django" name="Django">
|
||||
<configuration>
|
||||
<option name="rootFolder" value="$MODULE_DIR$" />
|
||||
<option name="settingsModule" value="config/settings/local.py" />
|
||||
<option name="manageScript" value="$MODULE_DIR$/manage.py" />
|
||||
<option name="environment" value="<map/>" />
|
||||
<option name="doNotUseTestRunner" value="false" />
|
||||
<option name="trackFilePattern" value="migrations" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="PyDocumentationSettings">
|
||||
<option name="format" value="PLAIN" />
|
||||
<option name="myDocStringFormat" value="Plain" />
|
||||
</component>
|
||||
<component name="TemplatesService">
|
||||
<option name="TEMPLATE_CONFIGURATION" value="Django" />
|
||||
</component>
|
||||
</module>
|
|
@ -21,7 +21,7 @@ repos:
|
|||
- id: black
|
||||
|
||||
- repo: https://github.com/PyCQA/isort
|
||||
rev: 5.11.4
|
||||
rev: 5.12.0
|
||||
hooks:
|
||||
- id: isort
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
from django.conf.urls.static import static
|
||||
from django.contrib import admin
|
||||
from django.urls import include, path
|
||||
from django.views import defaults as default_views
|
||||
from django.views.generic import TemplateView
|
||||
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
|
||||
from rest_framework.authtoken.views import obtain_auth_token
|
||||
|
||||
|
|
|
@ -1,28 +1,32 @@
|
|||
import openai
|
||||
import datetime
|
||||
from ast import literal_eval
|
||||
|
||||
import openai
|
||||
from django.conf import settings
|
||||
|
||||
KEY = settings.OPENAI_KEY
|
||||
|
||||
description = """
|
||||
🍀 Что такое Pitch-Deck?
|
||||
Pitch-Deck представляет собой презентацию-тизер проекта/компании для инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного финансирования (инвестиций).
|
||||
Почему это проблема?
|
||||
description = """🍀 Что такое Pitch-Deck? Pitch-Deck представляет собой презентацию-тизер проекта/компании для
|
||||
инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного
|
||||
финансирования (инвестиций). Почему это проблема?
|
||||
|
||||
🍀 Проблема #1. Недостаток средств:
|
||||
Для многих стартапов ограниченные финансы создают преграду при разработке качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и малоинформативной презентации, что затрудняет привлечение инвестиций.
|
||||
🍀 Проблема #1. Недостаток средств: Для многих стартапов ограниченные финансы создают преграду при разработке
|
||||
качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и
|
||||
копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и
|
||||
малоинформативной презентации, что затрудняет привлечение инвестиций.
|
||||
|
||||
🍀 Проблема #2. Недостаток экспертизы:
|
||||
Проблемой для стартапов является недостаток экспертизы для проведения необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной презентации для привлечения инвестиций.
|
||||
🍀 Проблема #2. Недостаток экспертизы: Проблемой для стартапов является недостаток экспертизы для проведения
|
||||
необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные
|
||||
знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной
|
||||
презентации для привлечения инвестиций.
|
||||
|
||||
🍀 Проблема #3. Недостаток времени
|
||||
Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью погружены в процесс разработки и улучшения продукта или сервиса.
|
||||
🍀 Проблема #3. Недостаток времени Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет
|
||||
документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая
|
||||
команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью
|
||||
погружены в процесс разработки и улучшения продукта или сервиса.
|
||||
|
||||
🍀 ИДЕЯ:
|
||||
Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под создание Pitch-Deck.
|
||||
"""
|
||||
🍀 ИДЕЯ: Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под
|
||||
создание Pitch-Deck."""
|
||||
|
||||
names_prompt = """
|
||||
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
||||
|
@ -45,11 +49,11 @@
|
|||
"""
|
||||
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
||||
{
|
||||
'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей',
|
||||
'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты',
|
||||
'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год},
|
||||
'investments_sold': 'На что потратить инвестиции под проект',
|
||||
'financial_indicators': 'Напиши финансовые показатели проекта'
|
||||
'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей',
|
||||
'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты',
|
||||
'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год},
|
||||
'investments_sold': 'На что потратить инвестиции под проект',
|
||||
'financial_indicators': 'Напиши финансовые показатели проекта'
|
||||
}
|
||||
""",
|
||||
"""
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import pickle
|
||||
|
||||
from annoy import AnnoyIndex
|
||||
from sentence_transformers import SentenceTransformer
|
||||
import pickle
|
||||
|
||||
model = None
|
||||
data = None
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
from django.db import models
|
||||
|
||||
from pitch_deck_generator.utils.files import user_file_upload_mixin
|
||||
from pitch_deck_generator.utils.generators import generate_charset
|
||||
from pitch_deck_generator.common.signals import (
|
||||
create_cropped_model_image,
|
||||
delete_cropped_model_image,
|
||||
update_cropped_model_image,
|
||||
)
|
||||
from pitch_deck_generator.utils.files import user_file_upload_mixin
|
||||
from pitch_deck_generator.utils.generators import generate_charset
|
||||
|
||||
|
||||
class BaseImageModel(models.Model):
|
||||
|
|
|
@ -7,7 +7,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs):
|
|||
model = sender
|
||||
if created:
|
||||
if instance.image:
|
||||
|
||||
|
||||
crop_model_image.apply_async(
|
||||
kwargs={
|
||||
"pk": instance.pk,
|
||||
|
@ -16,7 +16,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs):
|
|||
},
|
||||
countdown=2,
|
||||
)
|
||||
|
||||
|
||||
|
||||
def update_cropped_model_image(sender, instance, **kwargs):
|
||||
model = sender
|
||||
|
@ -30,7 +30,7 @@ def update_cropped_model_image(sender, instance, **kwargs):
|
|||
# run task to create new cropped image
|
||||
if kwargs["update_fields"] != frozenset({"image_cropped"}) and instance:
|
||||
if instance.image:
|
||||
|
||||
|
||||
crop_model_image.apply_async(
|
||||
kwargs={
|
||||
"pk": instance.pk,
|
||||
|
@ -39,7 +39,7 @@ def update_cropped_model_image(sender, instance, **kwargs):
|
|||
},
|
||||
countdown=2,
|
||||
)
|
||||
|
||||
|
||||
else:
|
||||
instance.image_cropped = None
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from pitch_deck_generator.decks.models import Question, PitchDeck
|
||||
from pitch_deck_generator.decks.models import PitchDeck, Question
|
||||
|
||||
admin.site.register(PitchDeck)
|
||||
admin.site.register(Question)
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
from pitch_deck_generator.decks.models import (
|
||||
PitchDeck,
|
||||
Question,
|
||||
QuestionDeckHint,
|
||||
QuestionAnswer,
|
||||
QuestionAnswerPhoto,
|
||||
QuestionDeckHint,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
from django.urls import path
|
||||
|
||||
from pitch_deck_generator.decks.api.views import (
|
||||
CreateQuestionAnswerApiView,
|
||||
GetDeckQuestionApiView,
|
||||
GetDeckQuestionHintApiView,
|
||||
GetFirstQuestionApiView,
|
||||
ListDecksApiView,
|
||||
RetrievePitchApiView,
|
||||
GetFirstQuestionApiView,
|
||||
GetDeckQuestionApiView,
|
||||
GetDeckQuestionHintApiView, CreateQuestionAnswerApiView,
|
||||
)
|
||||
|
||||
app_name = "decks"
|
||||
|
@ -15,6 +16,9 @@
|
|||
path("<int:id>", RetrievePitchApiView.as_view()),
|
||||
path("question/<int:deck_id>", GetFirstQuestionApiView.as_view()),
|
||||
path("question/<int:deck_id>/<int:question_id>", GetDeckQuestionApiView.as_view()),
|
||||
path("question/<int:deck_id>/<int:question_id>/", CreateQuestionAnswerApiView.as_view()),
|
||||
path(
|
||||
"question/<int:deck_id>/<int:question_id>/",
|
||||
CreateQuestionAnswerApiView.as_view(),
|
||||
),
|
||||
path("hint/<int:deck_id>/<int:question_id>", GetDeckQuestionHintApiView.as_view()),
|
||||
]
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
from rest_framework import generics, status
|
||||
from rest_framework.generics import get_object_or_404
|
||||
from rest_framework.parsers import FormParser, JSONParser, MultiPartParser
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
|
||||
|
||||
from pitch_deck_generator.decks.api.serializers import (
|
||||
AnswerSerializer,
|
||||
BasePitchDeckSerializer,
|
||||
HintSerializer,
|
||||
PitchDeckSerializer,
|
||||
QuestionSerializer,
|
||||
HintSerializer,
|
||||
AnswerSerializer,
|
||||
)
|
||||
from pitch_deck_generator.decks.models import PitchDeck, QuestionDeckHint, Question
|
||||
from pitch_deck_generator.decks.models import PitchDeck, Question, QuestionDeckHint
|
||||
|
||||
|
||||
class ListDecksApiView(generics.ListCreateAPIView):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import requests
|
||||
from celery import shared_task
|
||||
|
||||
from ml.openai_handle import create_name_hint, create_hints
|
||||
from ml.openai_handle import create_hints, create_name_hint
|
||||
from pitch_deck_generator.decks.models import PitchDeck, Question, QuestionDeckHint
|
||||
|
||||
data_types = {
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -1,3 +0,0 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
|
@ -1,5 +1,5 @@
|
|||
from django.core.cache import cache
|
||||
from django.db.models.signals import post_save, post_delete, pre_save
|
||||
from django.db.models.signals import post_delete, post_save, pre_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
from pitch_deck_generator.tickets.models import Ticket
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import os
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from pitch_deck_generator.users.models import User
|
||||
|
|
12
poetry.lock
generated
12
poetry.lock
generated
|
@ -1428,18 +1428,18 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa
|
|||
|
||||
[[package]]
|
||||
name = "isort"
|
||||
version = "5.12.0"
|
||||
version = "5.11.5"
|
||||
description = "A Python utility / library to sort Python imports."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.8.0"
|
||||
python-versions = ">=3.7.0"
|
||||
files = [
|
||||
{file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
|
||||
{file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
|
||||
{file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"},
|
||||
{file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
colors = ["colorama (>=0.4.3)"]
|
||||
colors = ["colorama (>=0.4.3,<0.5.0)"]
|
||||
pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
|
||||
plugins = ["setuptools"]
|
||||
requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
||||
|
@ -3298,4 +3298,4 @@ multidict = ">=4.0"
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "981198feadb63083b31387f32ef93f2ded7098868fe9cd40a9e505a057cf9d1b"
|
||||
content-hash = "31ce390d9b50a16455803f012bd6f7eca984fbec0d0e60404edaea07b5523792"
|
||||
|
|
|
@ -48,6 +48,7 @@ django-coverage-plugin = "^3.0.0"
|
|||
pytest-django = "^4.5.2"
|
||||
sentry-sdk = "^1.12.0"
|
||||
openai = "^0.27.9"
|
||||
isort = "5.11.5"
|
||||
|
||||
|
||||
[build-system]
|
||||
|
|
Loading…
Reference in New Issue
Block a user