Skip to content
Merged

Dev #29

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[flake8]
exclude = .venv,venv,env,__pycache__,site-packages,dailydevq/lib
max-line-length = 120
62 changes: 62 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# .github/workflows/ci.yml

name: CI Pipeline # GitHub Actions 워크플로우 이름

on:
push:
branches:
- master # master에 push되면 실행
- dev # dev 브랜치에 push되면 실행
pull_request:
branches:
- master # master로 PR이 생성되면 실행
- dev # dev로 PR이 생성되면 실행

jobs:
build:
runs-on: ubuntu-latest # 최신 Ubuntu 환경에서 실행

steps:
- name: Checkout repository
uses: actions/checkout@v3
# 최신 코드 가져오기 (GitHub Actions에서 실행되는 CI 환경으로 코드 다운로드)

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10" # Python 3.10 환경 설정

- name: Install dependencies
run: |
python -m pip install --upgrade pip # 최신 pip 설치
pip install -e .[dev,test] # pyproject.toml 기반 패키지 설치

- name: Run Lint (flake8)
run: flake8 .
# 코드 스타일 체크

- name: Run Formatting Check (black)
run: black --check .
# 코드 포맷 검사

- name: Run Tests (pytest)
run: pytest --cov=src
# 테스트 실행 및 커버리지 측정

- name: Upload Coverage Report
uses: codecov/codecov-action@v3
# 테스트 커버리지 리포트 업로드

deploy:
needs: build
if: github.ref == 'refs/heads/master' # master 브랜치에 push될 때만 실행
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Deploy to Production
run: |
echo "Deploying application..."
# 여기에 배포 스크립트 추가 (예: AWS S3, Lambda, ECS 등)
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,5 @@ Thumbs.db
config.local.py
*.env.local
node_modules/

dailydevq/
7 changes: 0 additions & 7 deletions backend/functions/email_sender/handler.py

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
64 changes: 64 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# ./pyproject.toml

# 빌드 시스템 설정 (Python 패키징 표준 PEP 518)
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

# 패키지 디스커버리 설정 (setuptools.find_packages 사용)
[tool.setuptools.packages.find]
where = ["src"] # src 폴더 내부에서 패키지 탐색

# 프로젝트 기본 정보
[project]
name = "dailydevq"
version = "0.1.0"
description = "A technical interview preparation tool"
dependencies = [
"Flask==3.1.0",
"blinker==1.9.0",
"click==8.1.7",
"itsdangerous==2.2.0",
"Jinja2==3.1.5",
"MarkupSafe==3.0.2",
"Werkzeug==3.1.3",
"python-dotenv==1.0.1",
"typing_extensions==4.12.2",
"boto3==1.35.63",
"botocore==1.35.63",
"jmespath==1.0.1",
"python-dateutil==2.9.0.post0",
"six==1.16.0",
"s3transfer==0.10.3",
"flask-bootstrap==3.3.7",
"flask_login==0.6.3",
"openai==1.58.1"
]

# 선택적 의존성 그룹 (개발 및 테스트 환경)
[project.optional-dependencies]
dev = [
"black==24.10.0",
"flake8==7.1.1",
"mccabe==0.7.0",
"mypy-extensions==1.0.0",
"packaging==24.2",
"pathspec==0.12.1",
"platformdirs==4.3.6",
"pycodestyle==2.12.1",
"pyflakes==3.2.0"
]
test = [
"pytest==8.3.4",
# "pytest==7.2.0",
"exceptiongroup==1.2.2",
"iniconfig==2.0.0",
"pytest-cov==6.0.0",
# "pytest-cov==5.0.0",
"pluggy==1.5.0",
"tomli==2.1.0"
]

# CLI 실행 파일 설정 (패키지 설치 후 실행 가능)
[project.scripts]
dailydevq = "dailydevq.cli:main"
3 changes: 3 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[pytest]
testpaths = tests
pythonpath = .
1 change: 0 additions & 1 deletion requirements.txt

This file was deleted.

18 changes: 0 additions & 18 deletions requirements/base.txt

This file was deleted.

10 changes: 0 additions & 10 deletions requirements/dev.txt

This file was deleted.

6 changes: 0 additions & 6 deletions requirements/test.txt

This file was deleted.

62 changes: 0 additions & 62 deletions requirements_split.py

This file was deleted.

File renamed without changes.
File renamed without changes.
16 changes: 16 additions & 0 deletions src/backend/functions/email_sender/handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# backend/functions/email_sender/handler.py

import boto3


def lambda_handler(event, context):
ses_client = boto3.client("ses")
response = ses_client.send_email(
Source="no-reply@example.com",
Destination={"ToAddresses": [event["to_email"]]},
Message={
"Subject": {"Data": event["subject"]},
"Body": {"Text": {"Data": event["body"]}},
},
)
return {"statusCode": 200, "body": response["MessageId"]}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@

# DynamoDB 클라이언트 생성
dynamodb = boto3.resource(
"dynamodb",
"dynamodb",
region_name="ap-northeast-2",
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY')
aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
)
users_table = dynamodb.Table("Users") # 테이블 이름 확인


def save_user(email, name, profile_url, login_type):
"""
DynamoDB에 사용자 정보를 저장합니다.
Expand Down Expand Up @@ -67,6 +68,7 @@ def save_user(email, name, profile_url, login_type):

return user_data


def get_user_from_db(user_id):
"""
DynamoDB에서 사용자 정보를 검색합니다.
Expand Down Expand Up @@ -111,6 +113,7 @@ def get_user_by_id(user_id):
print(f"사용자 정보를 검색하는 중 오류가 발생했습니다: {e}")
return None


def delete_user(user_id):
"""
사용자 ID를 기준으로 사용자 정보를 삭제합니다.
Expand Down
Empty file added src/frontend/app/__init__.py
Empty file.
Loading