Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
250 commits
Select commit Hold shift + click to select a range
ba4fbd3
refactor: main.py에서 헬스체크 분리
apaals2 Jul 20, 2025
8d1fad2
refactor: main.py에서 동적 포트 할당 분리
apaals2 Jul 20, 2025
012fec0
Merge pull request #26 from Queryus/feature/refactor-healthcheck-port
apaals2 Jul 22, 2025
5f22d10
style: app 쪽 커밋 메시지 영어로 수정
ChoiSeungWoo98 Jul 24, 2025
a5267aa
feat: 테스트 가능하도록 수정
ChoiSeungWoo98 Jul 24, 2025
0fcc1a0
feat: Skip deployment jobs on manual trigger
ChoiSeungWoo98 Jul 25, 2025
349b8d3
Merge pull request #28 from Queryus/feature/pipeline
apaals2 Jul 27, 2025
a611e0d
feat: 리뷰 알림 구현
ChoiSeungWoo98 Jul 30, 2025
1fd34bf
style: 줄바꿈 추가
ChoiSeungWoo98 Jul 30, 2025
a80ce49
Merge pull request #29 from Queryus/feature/pipeline
apaals2 Jul 30, 2025
5e36934
feat: api router 도입
ChoiSeungWoo98 Jul 31, 2025
3233496
Merge pull request #31 from Queryus/feature/router
apaals2 Aug 2, 2025
1e71b6e
feat: response 공통으로 분리해서 사용하도록 생성 및 테스트 router 생성
ChoiSeungWoo98 Jul 31, 2025
547a7cb
docs: 가상환경 활성화 부분 수정
ChoiSeungWoo98 Jul 31, 2025
d059b53
refactor: api router 과 합치면서 발생한 안맞는 부분 endpoint 부분 수정
ChoiSeungWoo98 Aug 2, 2025
38c1cbe
docs: cd app을 프로젝트 이름으로 수정
ChoiSeungWoo98 Aug 2, 2025
77d505a
Merge pull request #30 from Queryus/feature/common-response
apaals2 Aug 2, 2025
4a0cf80
chore: 의존성 추가 (pydantic, sqlalchemy), dev 의존성 추가 (pytest, httpx, pyte…
apaals2 Jul 21, 2025
27a9b99
feat: Python import로 DB 드라이버 설치 여부 확인 기능 구현
apaals2 Jul 22, 2025
ad8d138
test: DB 드라이버 설치 상태 조회 API 및 단위 테스트 코드 추가
apaals2 Jul 22, 2025
aa32a8d
feat: Python 실행 환경 존재 여부 확인 함수 추가
apaals2 Jul 22, 2025
bede728
test: Python 환경 존재 여부 API 테스트 코드 추가
apaals2 Jul 22, 2025
57c1092
feat: macOS 및 Windows 환경에서 OS 레벨 드라이버 설치 여부 확인 기능 추가
apaals2 Jul 22, 2025
e8694a5
fix: 드라이버명이 단일 문자열일 때 발생하는 오류 수정 — 모든 드라이버명을 리스트로 통일
apaals2 Jul 22, 2025
59256f9
test: OS 레벨 드라이버 설치 확인 기능 테스트 코드 추가
apaals2 Jul 24, 2025
929b567
chore: DB 드라이버 의존성 추가 (PostgreSQL, MySQL, Oracle 등)
apaals2 Jul 24, 2025
8adb031
feat: 지원 DB 드라이버 사전 설치로 파이썬 환경, OS레벨 드라이버 체크 생략 및 드라이버 정보 간소화
apaals2 Jul 24, 2025
5dd1832
test: 드라이버 정보 확인에 대한 단위테스트, api 테스트 진행
apaals2 Jul 24, 2025
26b9c64
test: 코드 커버리지 측정
apaals2 Jul 24, 2025
a589add
feat: 동적 포트 할당 -> 고정 포트
apaals2 Jul 26, 2025
8283e13
feat: API에서 지원 드라이버 목록 검증 추가 (DriverEnum)
apaals2 Jul 26, 2025
65b9a52
feat: DriverEnum 및 DriverInfo 응답 모델 추가
apaals2 Jul 26, 2025
36fb86b
refactor: 드라이버 정보 응답을 dict → 모델 기반으로 전환
apaals2 Jul 26, 2025
0d1a86f
refactor: 파일명 변경(connectioins.py -> connect_driver.py)
apaals2 Jul 26, 2025
d4475db
refactor: 변경된 구조에 맞게 테스트 코드 리팩토링
apaals2 Jul 26, 2025
1450d66
docs: Health 라우터에 Swagger 태그 지정
apaals2 Jul 26, 2025
2170ad9
docs: README.md 수정 (동적 포트 할당-> 고정포트)
apaals2 Jul 26, 2025
c0e7651
docs: README.md 수정 (동적 포트 할당-> 고정포트)
apaals2 Jul 26, 2025
c63189a
refactor: connect_driver router -> api_router로 이동
apaals2 Aug 2, 2025
4c3b761
feat: 422 상태코드 추가
apaals2 Aug 2, 2025
e3fbb4b
refactor: 공통 응답으로 수정
apaals2 Aug 2, 2025
a5d622a
feat: 서비스 로직 정리를 위한 모델 팩토리 메서드 생성 및 Enum 변수-> 객체
apaals2 Aug 2, 2025
4b3927b
refactor: driver_enum.py /core 아래로 이동
apaals2 Aug 2, 2025
5fa9358
refactor: 422 상태코드 메시지 범위 좁게 변경
apaals2 Aug 2, 2025
2250308
refactor: 변수담아서 반환했던 걸 변수 제거하고 반환
apaals2 Aug 2, 2025
a988e61
feat: 드라이버 정보 처리를 객체 기반으로 변경
apaals2 Aug 3, 2025
21bf04f
refactor: DB 드라이버 Enum 값 단일화
apaals2 Aug 3, 2025
6120bc2
refactor: 라우터에서 from_enum 팩토리 메서드 사용하도록 변경
apaals2 Aug 3, 2025
aa7d8c1
feat: from_enum 메서드 추가
apaals2 Aug 3, 2025
3252541
refactor: 객체 새생성이 아닌 기존 객체 수정으로 변경 및 파일명 api, service 의미 동일하게 수정
apaals2 Aug 3, 2025
c1fc742
refactor: driver_info 에서 return 누락 부분 추가
apaals2 Aug 3, 2025
eecd380
Merge pull request #27 from Queryus/feature/db-connection-wizard
ChoiSeungWoo98 Aug 3, 2025
7d66003
feat: 앱 전용 디비 생성 코드 작성(ConnectionProfile, APICredential)
ChoiSeungWoo98 Jul 31, 2025
2011e7f
feat: 자주 사용되는 db 파일 위치 및 uuid 부분 util로 빼서 사용 하도록 util 파일 생성
ChoiSeungWoo98 Jul 31, 2025
10565b2
chore: AES256 암호화를 위한 패키지 추가
ChoiSeungWoo98 Jul 31, 2025
c33a2ec
feat: 디비 저장 시 암호화를 위한 암호화 파일 생성
ChoiSeungWoo98 Jul 31, 2025
8a9644f
feat: local db 생성 구현 및 경로 설정
ChoiSeungWoo98 Aug 3, 2025
9167bc7
feat: sqllite 실행 되도록 설정
ChoiSeungWoo98 Aug 3, 2025
416235e
refactor: key를 git에서 받아서 사용 하도록 수정
ChoiSeungWoo98 Aug 3, 2025
b8d50d3
refactor: response 폴더 이동
ChoiSeungWoo98 Aug 3, 2025
bb14bce
refactor: enum 폴더 구조 변경
ChoiSeungWoo98 Aug 3, 2025
4271628
Merge pull request #32 from Queryus/feature/local-db-setup
apaals2 Aug 3, 2025
5170282
fix: pycryptodome 추가시 발생한 대괄호 및 [[package]] 누락 해결
nahyeongjin1 Aug 3, 2025
447f621
fix: legacy alias로 인해 린팅되지 않는 문제 해결
nahyeongjin1 Aug 4, 2025
ae41f96
chore: ruff에서 권장하는 exception chaining 적용
nahyeongjin1 Aug 4, 2025
6698a70
style: 프로젝트 전체 파일 ruff로 linting
nahyeongjin1 Aug 4, 2025
474202d
Merge pull request #33 from Queryus/hotfix/install-dependencies
ChoiSeungWoo98 Aug 4, 2025
13a6fee
Merge pull request #35 from Queryus/hotfix/lint-pre-commit
ChoiSeungWoo98 Aug 4, 2025
0d282b1
style: 객체를 만들고 넘기도록 수정
ChoiSeungWoo98 Aug 4, 2025
8409647
feat: 필수 값 핸들러 추가 및 상태 부분 추가
ChoiSeungWoo98 Aug 4, 2025
cc27d95
refactor: 형식 수정 및 sqlite3 부분 값 가져오는 게 달라 안되던 부분 수정
ChoiSeungWoo98 Aug 5, 2025
6900329
chore: 사용자 pc에 드라이버가 설치 되어야 하는 sql server 제거 및 oracle 기본 버전으로 변경
ChoiSeungWoo98 Aug 5, 2025
9fa2ec2
refactor: exception이 발생한 경우 코드 메시지만 담도록 수정
ChoiSeungWoo98 Aug 5, 2025
df07f0b
fix: 에러 발생 시 9999만 발생시키던 문제 해결
ChoiSeungWoo98 Aug 5, 2025
8bca2e6
feat: db 조회 테스트 부분 작업 완료
ChoiSeungWoo98 Aug 5, 2025
fc8e819
refactor: health check api 파일 명 수정
ChoiSeungWoo98 Aug 6, 2025
db0ecd9
refactor: driver랑 user db connection 분리
ChoiSeungWoo98 Aug 6, 2025
87d2b6c
refactor: 코드 스타일 및 폴더, 파일 구조 개선 및 상태 코드 명확하게 수정
ChoiSeungWoo98 Aug 6, 2025
118e144
Merge pull request #37 from Queryus/feature/db-connect
nahyeongjin1 Aug 7, 2025
d114fb4
fix: ai_credential 테이블의 service_name을 UNIQUE로
nahyeongjin1 Aug 4, 2025
b160093
feat: api key 추가시에 사용될 스키마 생성
nahyeongjin1 Aug 4, 2025
e52450d
feat: DB_BUSY를 다룰 status 추가
nahyeongjin1 Aug 4, 2025
50d2c6c
feat: 서비스 로직 구현
nahyeongjin1 Aug 4, 2025
99d83dc
feat: AI 서비스 제공사 enum 도입
nahyeongjin1 Aug 4, 2025
62744fd
feat: api 로직 구현
nahyeongjin1 Aug 4, 2025
3712106
feat: 라우터 등록
nahyeongjin1 Aug 4, 2025
8ef0deb
refactor: 반환 타입 매칭
nahyeongjin1 Aug 6, 2025
c68c7ed
refactor: 검증 로직을 모델에 위치
nahyeongjin1 Aug 6, 2025
f69b4a2
refactor: 명확한 실패 코드 적용
nahyeongjin1 Aug 6, 2025
f8f1927
refactor: 파일 이름 및 폴더 구조 컨벤션 적용
nahyeongjin1 Aug 7, 2025
492ab25
refactor: repository -> service -> api & 의존성 주입
nahyeongjin1 Aug 7, 2025
3e920e4
refactor: 서비스 계층과 구분하기 위해 llm_service 파일 이름 변경
nahyeongjin1 Aug 7, 2025
3fb1906
refactor: method를 통한 검증
nahyeongjin1 Aug 7, 2025
ef61630
feat: api 로직 구현
nahyeongjin1 Aug 4, 2025
075da11
feat: 라우터 등록
nahyeongjin1 Aug 4, 2025
8937397
feat: API Key 전체 & 단일 조회
nahyeongjin1 Aug 5, 2025
e8d4812
refactor: 불필요한 파일 삭제 & 기존 코드를 변경된 구조에 통합
nahyeongjin1 Aug 7, 2025
492a1fb
feat: API Key 전체 & 단일 조회
nahyeongjin1 Aug 5, 2025
f5b0422
feat: 업데이트 전용 스키마 추가
nahyeongjin1 Aug 5, 2025
ecc53a6
feat: 업데이트 서비스 로직
nahyeongjin1 Aug 5, 2025
f78cfc8
feat: 업데이트 api 추가
nahyeongjin1 Aug 5, 2025
1b0e04a
refactor: 다른 서비스 로직들에 DB_BUSY 예외처리
nahyeongjin1 Aug 5, 2025
89924e2
chore: 경로 수정
nahyeongjin1 Aug 5, 2025
98a4822
refactor: 불필요한 파일 삭제 & 구조 통합
nahyeongjin1 Aug 7, 2025
a542692
refactor: update_model에도 method 방식 검증 적용
nahyeongjin1 Aug 7, 2025
06e106d
feat: API Key 전체 & 단일 조회
nahyeongjin1 Aug 5, 2025
d0082fc
refactor: 불필요한 파일 삭제 & 구조 통합
nahyeongjin1 Aug 7, 2025
ffdc443
feat: 삭제 서비스 로직
nahyeongjin1 Aug 5, 2025
b306166
feat: API Key 삭제 프레젠테이션 로직
nahyeongjin1 Aug 5, 2025
cd9c4e5
refactor: 불필요한 파일 삭제 & 구조 통합
nahyeongjin1 Aug 7, 2025
94335b4
refactor: 모호하던 변수명을 api_key prefix로 통합
nahyeongjin1 Aug 7, 2025
7fdb844
Merge pull request #36 from Queryus/feature/save-api-key
apaals2 Aug 7, 2025
c501d73
Merge pull request #38 from Queryus/feature/select-api-key
apaals2 Aug 7, 2025
4af7eac
Merge pull request #39 from Queryus/feature/update-api-key
apaals2 Aug 7, 2025
4727b23
Merge pull request #40 from Queryus/feature/delete-api-key
apaals2 Aug 7, 2025
a694826
feat: api router 등록
apaals2 Aug 7, 2025
6877834
feat: api 로직 구현
apaals2 Aug 7, 2025
bd87aa5
feat: ai chat status 추가
apaals2 Aug 7, 2025
954b3a9
feat: ai chat tab 생성에서 사용될 스키마 생성
apaals2 Aug 7, 2025
6666998
feat: repository 로직 구현
apaals2 Aug 7, 2025
2343076
feat: 서비스 로직 구현
apaals2 Aug 7, 2025
85a1a52
feat: ai chat tab 생성 시 이름 유효성 검사
apaals2 Aug 7, 2025
826ab10
refactor: 직관적인 이름으로 변경(ai_chat -> chat_tab)
apaals2 Aug 9, 2025
84ffa96
refactor: 채팅 탭 길이 제한 수정(255 -> 128)
apaals2 Aug 9, 2025
d970fa0
Merge pull request #41 from Queryus/feature/create-ai-chat-tab
apaals2 Aug 10, 2025
8fc6ced
feat: 어노테이션에 사용될 DB 구성
nahyeongjin1 Aug 8, 2025
c4abbaf
feat: 제약, 인덱스를 위한 테이블 및 컬럼 추가
nahyeongjin1 Aug 10, 2025
365c927
feat: db key prefix 이름을 담고있는 enum 생성
ChoiSeungWoo98 Aug 8, 2025
ca197f5
feat: db profile 저장 시 사용되는 코드 추가 및 문구가 오류인걸 에러로 수정
ChoiSeungWoo98 Aug 8, 2025
ac0445a
refactor: 컬럼 설정 변경 및 추가, 제거 시 업데이트 되도록 수정
ChoiSeungWoo98 Aug 8, 2025
b23b8c1
refactor: result를 공통으로 사용 하도록 수정
ChoiSeungWoo98 Aug 8, 2025
c6ad827
refactor: db_profile을 공통으로 사용하도록 수정
ChoiSeungWoo98 Aug 8, 2025
5b457ad
style: name을 view_name으로 변수 명칭 수정
ChoiSeungWoo98 Aug 8, 2025
be92d22
feat: db profile 저장하는 부분 추가
ChoiSeungWoo98 Aug 8, 2025
ad016e1
feat: 전체 방생하는 로그를 찍어주는 logging 추가
ChoiSeungWoo98 Aug 8, 2025
a24d3da
feat: db 전체 조회 상태 값 추가
ChoiSeungWoo98 Aug 8, 2025
2df2757
refactor: 조회 결과 부분 result 모델로 이동
ChoiSeungWoo98 Aug 8, 2025
dd07df6
feat: db 전체 조회 기능 구현
ChoiSeungWoo98 Aug 8, 2025
05b5030
feat: 반환 상태 값 추가
ChoiSeungWoo98 Aug 10, 2025
846a7e7
feat: 반환 타입 추가
ChoiSeungWoo98 Aug 10, 2025
e746eed
feat: 스키마, 테이블, 컬럼 조회 로직 구현
ChoiSeungWoo98 Aug 10, 2025
21930f9
feat: 업데이트 시 사용되는 상태 값 추가
ChoiSeungWoo98 Aug 10, 2025
27ebc1f
refactor: save 시 사용되는 모델 공통으로 사용하도록 수정
ChoiSeungWoo98 Aug 10, 2025
08ad1e5
feat: profile 정보 업데이트 하는 로직 생성
ChoiSeungWoo98 Aug 10, 2025
61f0e71
feat: 제거 시 사용되는 상태 값 추가
ChoiSeungWoo98 Aug 10, 2025
fdb0160
refactor: save 및 update 시 사용되는 모델 공통으로 사용하도록 수정
ChoiSeungWoo98 Aug 10, 2025
7c2b1e3
feat: 삭제 하는 로직 생성
ChoiSeungWoo98 Aug 10, 2025
e1188d8
style: modify 부분 네이밍 일치시키는 작업 진행
ChoiSeungWoo98 Aug 10, 2025
e8329fd
style: delete 부분 네이밍 일관성 유지하도록 수정
ChoiSeungWoo98 Aug 10, 2025
7dc1301
style: create 부분 네이밍 일관성 있게 수정
ChoiSeungWoo98 Aug 10, 2025
da28d28
refactor: 연결 테스트에서 메서드로 뺀 부분을 사용하도록 수정
ChoiSeungWoo98 Aug 10, 2025
6ad7745
refactor: 쿼리 생성 부분 service 쪽으로 빼서 작업하도록 개선
ChoiSeungWoo98 Aug 10, 2025
0e62b2e
Merge pull request #43 from Queryus/feature/annotation-db-setup
ChoiSeungWoo98 Aug 10, 2025
ab5e32e
Merge pull request #44 from Queryus/feature/user-db
ChoiSeungWoo98 Aug 11, 2025
31cee5a
refactor: 도메인 별 구분을 위해 prefix 수정
nahyeongjin1 Aug 8, 2025
dc52073
refactor: 성공 상태 코드 추가 및 반영
nahyeongjin1 Aug 8, 2025
dd87625
refactor: prefixed_uuid에 enum 적용
nahyeongjin1 Aug 12, 2025
02cb92f
refactor: init_db 코드 스타일 적용 & 마이그레이션시 외래키 체크 비활성화
nahyeongjin1 Aug 12, 2025
76336db
Merge pull request #42 from Queryus/refactor/api-key
nahyeongjin1 Aug 12, 2025
7a88e1b
refactor: chat_tab 유효성 검사 utils 분리
apaals2 Aug 10, 2025
d98aade
refactor: 변수명 변경이 덜 된 부분 완료
apaals2 Aug 10, 2025
7f5e139
feat: api 로직 구현
apaals2 Aug 10, 2025
a8ddacc
feat: chat tab status 추가
apaals2 Aug 10, 2025
1df9969
feat: repository update 로직 추가
apaals2 Aug 10, 2025
6296ad4
feat: update 스키마 추가
apaals2 Aug 10, 2025
55ea26a
feat: update 서비스 로직 추가
apaals2 Aug 10, 2025
a6950f8
refactor: 공백일 때 무시되던 오류 수정
apaals2 Aug 10, 2025
4005daf
Merge pull request #45 from Queryus/feature/update-ai-chat-tab
apaals2 Aug 12, 2025
ce502f1
feat: delete api 로직 추가
apaals2 Aug 10, 2025
40c31d6
feat: delete 성공 status 추가
apaals2 Aug 10, 2025
6dae64f
feat: delete repository 로직 추가
apaals2 Aug 10, 2025
681bbfc
feat: delete 서비스 로직 추가
apaals2 Aug 10, 2025
7e76067
Merge pull request #46 from Queryus/feature/delete-ai-chat-tab
apaals2 Aug 12, 2025
6328730
feat: prefix_uuid enum 추가
apaals2 Aug 12, 2025
e697869
feat: chat_tab 전체 조회 상태코드 추가 및 수정
apaals2 Aug 12, 2025
5f7afd7
feat: 전체 조회 api 로직 추가
apaals2 Aug 12, 2025
7444198
feat: 전체 조회 repository 로직 추가
apaals2 Aug 12, 2025
20322d1
feat: 전체 조회 서비스 로직 추가
apaals2 Aug 12, 2025
039c20b
Merge pull request #47 from Queryus/feature/list-ai-chat-tab
apaals2 Aug 12, 2025
418eeba
refactor: enum 하이픈(-)으로 수정
apaals2 Aug 12, 2025
132d7f5
feat: chat_tab, message 상태코드 추가
apaals2 Aug 12, 2025
a1b5d8d
feat: chat_tab_message api 추가
apaals2 Aug 12, 2025
bf4755d
feat: chat_message repository 생성
apaals2 Aug 12, 2025
1661b03
feat: chat_tab 단일 조회 추가
apaals2 Aug 12, 2025
8ea9608
feat: chat_tab 서비스 로직 추가
apaals2 Aug 12, 2025
7ee0f4b
feat: chat_tab 스키마 추가
apaals2 Aug 12, 2025
9038c99
feat: chat_tab ID 유효성 검증 추가
apaals2 Aug 12, 2025
19ed9c6
style: 코드 포맷 자동 적용
apaals2 Aug 12, 2025
667553e
refactor: api 엔드포인트 수정
apaals2 Aug 13, 2025
9007dc7
refactor: 사용안하는 스키마 삭제 및 실제 호출이 안되던 부분 수정
apaals2 Aug 13, 2025
77efca3
refactor: chat_tab_name 유효성 검증 basemodel로 이동
apaals2 Aug 13, 2025
3aca1ce
Merge pull request #48 from Queryus/feature/list-ai-chat-tab-messages
apaals2 Aug 14, 2025
aafdb9b
feat(user_db): 어노테이션 생성시 사용할 API 추가
nahyeongjin1 Aug 13, 2025
8de7545
feat: 상태 코드 추가
nahyeongjin1 Aug 13, 2025
f20516f
feat: UUID prefix 추가
nahyeongjin1 Aug 13, 2025
8d0df0c
feat: 어노테이션에서 사용될 모델 추가
nahyeongjin1 Aug 13, 2025
676301c
feat: constraints, index 제외 sqlite 어노테이션 구현
nahyeongjin1 Aug 13, 2025
beb5189
feat: mock data로 sqlite 어노테이션 구현 완료 (AI와 소통 필요)
nahyeongjin1 Aug 13, 2025
9c42c7a
refactor: constraint types를 enum으로
nahyeongjin1 Aug 13, 2025
842e54e
chore: 상태 코드 추가
nahyeongjin1 Aug 13, 2025
74f62f7
refactor: 과도한 메서드 책임 분배
nahyeongjin1 Aug 13, 2025
dd302dc
chore: 생성 actions -> create
nahyeongjin1 Aug 14, 2025
aabe0d8
Merge pull request #49 from Queryus/feature/annotation-sqlite
nahyeongjin1 Aug 14, 2025
1d4fe6e
feat: postgresql 스키마 디테일 조회 구현
nahyeongjin1 Aug 14, 2025
86642b2
refactor: 원본 스키마와 AI 응답을 모두 활용하도록 처리
nahyeongjin1 Aug 14, 2025
55ea5f1
fix: DB에 저장되지만 응답에서 누락된 필드 추가
nahyeongjin1 Aug 14, 2025
ac431f6
feat: postgre 전용 컬럼 조회 메서드 생성 & ordinal 정보 포함 반환
nahyeongjin1 Aug 14, 2025
a0e82e6
fix: on_update & on_delete 누락 해결
nahyeongjin1 Aug 14, 2025
675bd1a
fix: postgres 조회시 columns가 빈 리스트로 반환되던 문제 해결
nahyeongjin1 Aug 14, 2025
8b76713
feat: postgresql이 내부적으로 NOT NULL을 CHECK로 관리하여 이를 필터링
nahyeongjin1 Aug 14, 2025
356109c
feat: constraints에 description 추가
nahyeongjin1 Aug 14, 2025
d122a2e
docs: 주석 추가
nahyeongjin1 Aug 14, 2025
18328af
feat: AI request에 사용될 모델 추가
nahyeongjin1 Aug 15, 2025
9015ae6
feat: AI 팀에서 요청한 sample_rows 조회 추가
nahyeongjin1 Aug 15, 2025
f615ce6
feat: AI 요청 본문 생성 메서드 추가 & relationships 리스트 추가
nahyeongjin1 Aug 15, 2025
422addc
feat: db_profile_id로 어노테이션 조회 API 추가
nahyeongjin1 Aug 15, 2025
a322197
chore: path 변경
nahyeongjin1 Aug 15, 2025
b3fc678
feat: 에러 코드 추가 & 에러 핸들링 개선
nahyeongjin1 Aug 16, 2025
1e6d9ad
Merge pull request #50 from Queryus/feature/annotation-postgres
ChoiSeungWoo98 Aug 18, 2025
c872e1f
Merge pull request #51 from Queryus/feature/connect-ai-annotation
ChoiSeungWoo98 Aug 18, 2025
94a577d
Merge pull request #52 from Queryus/refactor/db-annotation-one-to-one
ChoiSeungWoo98 Aug 18, 2025
be2d470
feat: router에 추가
ChoiSeungWoo98 Aug 16, 2025
3f907f3
feat: db key name 추가
ChoiSeungWoo98 Aug 16, 2025
2f79c65
feat: query 실행 시 사용되는 커스텀 코드 추가
ChoiSeungWoo98 Aug 16, 2025
3087319
refactor: 쿼리 수행 시 저장되는 부분 변경
ChoiSeungWoo98 Aug 16, 2025
ea4de3f
feat: query 수행 시 사용되는 모델 생성
ChoiSeungWoo98 Aug 16, 2025
83e9423
feat: query 수행 로직 생성
ChoiSeungWoo98 Aug 16, 2025
6e0f50c
feat: query 조회 시 사용되는 커스텀 코드 추가
ChoiSeungWoo98 Aug 16, 2025
0e9fcf7
feat: query 조회 시 사용되는 모델 추가
ChoiSeungWoo98 Aug 16, 2025
ff6c6b8
feat: query 조회 시 사용되는 로직 생성
ChoiSeungWoo98 Aug 16, 2025
3fb3f3a
feat: query test 상태 메시지 추가
ChoiSeungWoo98 Aug 17, 2025
79dc12f
feat: query test 모델 추가 및 수정
ChoiSeungWoo98 Aug 17, 2025
0a6e845
feat: query test 기능 구현
ChoiSeungWoo98 Aug 17, 2025
d622e9c
Merge pull request #53 from Queryus/feature/query
ChoiSeungWoo98 Aug 18, 2025
7ff4778
feat: query test 결과를 직접 담아 반환 하도록 수정
ChoiSeungWoo98 Aug 18, 2025
2407349
Merge pull request #54 from Queryus/feature/query
ChoiSeungWoo98 Aug 18, 2025
9b92574
feat: 랭체인에 사용될 API KEY 관련 API 구현
nahyeongjin1 Aug 18, 2025
4b52c37
chore: 상태 코드 적용
nahyeongjin1 Aug 18, 2025
b0e4af8
chore: path 변경
nahyeongjin1 Aug 18, 2025
8182755
Merge pull request #55 from Queryus/feature/decrypted-api-key
ChoiSeungWoo98 Aug 18, 2025
b6ca7a7
feat: chat_message API 로직 추가
apaals2 Aug 18, 2025
698f771
feat: chat_message 상태코드 추가
apaals2 Aug 18, 2025
bd0ff9b
feat: chat_message enum 추가
apaals2 Aug 18, 2025
14b952c
feat: chat_message 스키마 모델 추가
apaals2 Aug 18, 2025
26240b0
feat: chat_message 서비스 로직 추가
apaals2 Aug 18, 2025
240a65b
feat: chat_message repository 로직 추가
apaals2 Aug 18, 2025
8f83e3e
refactor: chat_tab에 남아있던 chat_message 로직 분리
apaals2 Aug 18, 2025
721de87
refactor: prefix_name 하이픈(-) 수정
apaals2 Aug 18, 2025
5398a1b
refactor: AI서버주소 환경변수 처리
apaals2 Aug 18, 2025
9c62aa9
Merge pull request #56 from Queryus/feature/ai-chat-message
apaals2 Aug 18, 2025
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
11 changes: 7 additions & 4 deletions .github/workflows/build_release_and_notify.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# .github/workflows/build_release_and_notify.yml

name: Build and Deploy Executables

on:
release:
types: [published] # Release가 'published' 상태가 될 때 트리거
workflow_dispatch:

jobs:
# ==================================
# 파이프라인 시작 알림
# ==================================
start:
if: github.event_name == 'release'
runs-on: ubuntu-latest
steps:
- name: Send Pipeline Start Notification
Expand All @@ -28,7 +29,6 @@ jobs:
# 실행 파일 빌드
# ==================================
build:
needs: start
strategy:
matrix:
os: [macos-latest, windows-latest]
Expand Down Expand Up @@ -75,6 +75,8 @@ jobs:
# 6. PyInstaller를 사용해 파이썬 코드를 실행 파일로 만듭니다.
- name: Build executable with PyInstaller
shell: bash
env:
ENV_AES256_KEY: ${{ secrets.ENV_AES256_KEY }}
run: poetry run pyinstaller --clean --additional-hooks-dir ./hooks --add-data "app/assets:assets" --onefile --name ${{ env.EXE_NAME }} app/main.py

# 7. 빌드된 실행 파일을 다음 단계(deploy)에서 사용할 수 있도록 아티팩트로 업로드합니다.
Expand All @@ -90,6 +92,7 @@ jobs:
# ==================================
deploy:
needs: build
if: github.event_name == 'release'
runs-on: ubuntu-latest

steps:
Expand Down Expand Up @@ -119,7 +122,7 @@ jobs:
if git diff-index --quiet HEAD; then
echo "No changes to commit to QGenie APP repository."
else
git commit -m "feat: API 실행 파일 업데이트 (${{ github.ref_name }})"
git commit -m "feat: Update API executable (${{ github.ref_name }})"
git push
fi

Expand All @@ -129,7 +132,7 @@ jobs:
finish:
needs: deploy
runs-on: ubuntu-latest
if: always()
if: always() && github.event_name == 'release'

steps:
- name: Send Success Notification
Expand Down
44 changes: 43 additions & 1 deletion .github/workflows/pr_bot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ on:
types: [opened, closed, reopened, synchronize]
issue_comment:
types: [created]
pull_request_review:
types: [submitted]
pull_request_review_comment:
types: [created]

jobs:
notify:
Expand All @@ -23,7 +27,7 @@ jobs:
"username": "GitHub PR 봇",
"embeds": [{
"title": "Pull Request #${{ github.event.pull_request.number }}: ${{ github.event.pull_request.title }}",
"description": "**${{ github.actor }}**님이 Pull Request를 생성하거나 업데이트했습니다.",
"description": "**${{ github.actor }}**님이 Pull Request를 생성 또는 업데이트했습니다.",
"url": "${{ github.event.pull_request.html_url }}",
"color": 2243312
}]
Expand Down Expand Up @@ -84,3 +88,41 @@ jobs:
}]
}' \
${{ secrets.DISCORD_WEBHOOK_URL }}

# ----------------------------
# 리뷰 제출(Submit Review) 알림
# ----------------------------
- name: Send Review Submitted Notification
if: github.event_name == 'pull_request_review' && github.event.action == 'submitted'
run: |
REVIEW_BODY=$(echo "${{ github.event.review.body }}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
curl -X POST -H "Content-Type: application/json" \
-d "{
\"username\": \"GitHub 리뷰 봇\",
\"embeds\": [{
\"title\": \"New Review on PR #${{ github.event.pull_request.number }}\",
\"description\": \"**${{ github.actor }}**님이 리뷰를 남겼습니다: \\n${REVIEW_BODY}\",
\"url\": \"${{ github.event.review.html_url }}\",
\"color\": 16776960
}]
}" \
${{ secrets.DISCORD_WEBHOOK_URL }}

# -------------------------
# 리뷰 댓글에 대한 답글 알림
# -------------------------
- name: Send Review Comment Notification
if: github.event_name == 'pull_request_review_comment' && github.event.action == 'created'
run: |
COMMENT_BODY=$(echo "${{ github.event.comment.body }}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
curl -X POST -H "Content-Type: application/json" \
-d "{
\"username\": \"GitHub 댓글 봇\",
\"embeds\": [{
\"title\": \"New Reply on PR #${{ github.event.pull_request.number }}\",
\"description\": \"**${{ github.actor }}**님의 새 답글: \\n${COMMENT_BODY}\",
\"url\": \"${{ github.event.comment.html_url }}\",
\"color\": 15105570
}]
}" \
${{ secrets.DISCORD_WEBHOOK_URL }}
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: "v0.12.2" # ruff 버전에 맞게 수정
hooks:
- id: ruff
- id: ruff-check
args: ["--fix"] # 자동 수정 적용

- repo: https://github.com/psf/black
Expand Down
19 changes: 9 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

```bash
git clone https://github.com/Queryus/QGenie_api.git
cd app # 복제된 저장소 디렉토리로 이동
cd QGenie_api

```

Expand Down Expand Up @@ -88,13 +88,13 @@

```bash
poetry shell
uvicorn main:app --reload
uvicorn app.main:app --host 0.0.0.0 --port 39722 --reload
```

또는 Poetry Run을 사용하여 직접 실행할 수 있습니다.

```bash
poetry run uvicorn main:app --reload
poetry run uvicorn main:app --host 0.0.0.0 --port 39722 --reload
```

### **코드 컨벤션 (PEP 8, Ruff, Black)**
Expand Down Expand Up @@ -141,24 +141,23 @@

1. **브라우저 확인**

- 기본 루트 엔드포인트: <http://localhost:8000/>
- 헬스 체크 엔드포인트: <http://127.0.0.1:8000/health>
- API 문서: <http://127.0.0.1:8000/docs>
- 기본 루트 엔드포인트: <http://localhost:39722/>
- 헬스 체크 엔드포인트: <http://127.0.0.1:39722/health>
- API 문서: <http://127.0.0.1:39722/docs>

2. **CLI로 접속 확인하기**

FastAPI 앱이 poetry run uvicorn main:app --reload 명령어로 실행 중인 상태에서, 새로운 터미널을 열고 다음 curl 명령어를 입력하여 각 엔드포인트의 응답을 확인할 수 있습니다.

- 기본 루트 엔드포인트:
```bash
curl http://localhost:8000/
curl http://localhost:39722/
```
- 헬스 체크 엔드포인트:
```bash
curl http://localhost:8000/health
curl http://localhost:39722/health
```
- API 문서:
```bash
curl http://localhost:8000/openapi.json
curl http://localhost:39722/openapi.json
```

75 changes: 75 additions & 0 deletions app/api/annotation_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from fastapi import APIRouter, Depends

from app.core.response import ResponseMessage
from app.core.status import CommonCode
from app.schemas.annotation.request_model import AnnotationCreateRequest
from app.schemas.annotation.response_model import AnnotationDeleteResponse, FullAnnotationResponse
from app.services.annotation_service import AnnotationService, annotation_service

annotation_service_dependency = Depends(lambda: annotation_service)

router = APIRouter()


@router.post(
"/create",
response_model=ResponseMessage[FullAnnotationResponse],
summary="새로운 어노테이션 생성",
)
async def create_annotation(
request: AnnotationCreateRequest,
service: AnnotationService = annotation_service_dependency,
) -> ResponseMessage[FullAnnotationResponse]:
"""
`db_profile_id`를 받아 AI를 통해 DB 스키마를 분석하고 어노테이션을 생성하여 반환합니다.
"""
new_annotation = await service.create_annotation(request)
return ResponseMessage.success(value=new_annotation, code=CommonCode.SUCCESS_CREATE_ANNOTATION)


@router.get(
"/find/{annotation_id}",
response_model=ResponseMessage[FullAnnotationResponse],
summary="특정 어노테이션 상세 정보 조회",
)
def get_annotation(
annotation_id: str,
service: AnnotationService = annotation_service_dependency,
) -> ResponseMessage[FullAnnotationResponse]:
"""
`annotation_id`에 해당하는 어노테이션의 전체 상세 정보를 조회합니다.
"""
annotation = service.get_full_annotation(annotation_id)
return ResponseMessage.success(value=annotation, code=CommonCode.SUCCESS_FIND_ANNOTATION)


@router.get(
"/find/db/{db_profile_id}",
response_model=ResponseMessage[FullAnnotationResponse],
summary="DB 프로필 ID로 어노테이션 조회",
)
def get_annotation_by_db_profile_id(
db_profile_id: str,
service: AnnotationService = annotation_service_dependency,
) -> ResponseMessage[FullAnnotationResponse]:
"""
`db_profile_id`에 연결된 어노테이션의 전체 상세 정보를 조회합니다.
"""
annotation = service.get_annotation_by_db_profile_id(db_profile_id)
return ResponseMessage.success(value=annotation, code=CommonCode.SUCCESS_FIND_ANNOTATION)


@router.delete(
"/remove/{annotation_id}",
response_model=ResponseMessage[AnnotationDeleteResponse],
summary="특정 어노테이션 삭제",
)
def delete_annotation(
annotation_id: str,
service: AnnotationService = annotation_service_dependency,
) -> ResponseMessage[AnnotationDeleteResponse]:
"""
`annotation_id`에 해당하는 어노테이션 및 하위 데이터를 모두 삭제합니다.
"""
result = service.delete_annotation(annotation_id)
return ResponseMessage.success(value=result, code=CommonCode.SUCCESS_DELETE_ANNOTATION)
Loading