https://github.com/eehwan/company-metadata-api
FastAPI-based rest API for multilingual company and tag search with PostgreSQL and Docker support
https://github.com/eehwan/company-metadata-api
backend docker fastapi multilingual-websites postgresql python rest-api sqlalchemy
Last synced: 11 months ago
JSON representation
FastAPI-based rest API for multilingual company and tag search with PostgreSQL and Docker support
- Host: GitHub
- URL: https://github.com/eehwan/company-metadata-api
- Owner: eehwan
- Created: 2025-06-04T07:34:13.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-12T17:49:32.000Z (about 1 year ago)
- Last Synced: 2025-06-13T12:11:09.215Z (about 1 year ago)
- Topics: backend, docker, fastapi, multilingual-websites, postgresql, python, rest-api, sqlalchemy
- Language: Python
- Homepage: http://company.eehwan.duckdns.org/docs
- Size: 29.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# company-metadata-api
회사 메타데이터 관리 API 서버
- [Git Repo](https://github.com/eehwan/company-metadata-api)
- [Swagger UI](http://company.eehwan.duckdns.org/docs)
- [ReDoc 문서](http://company.eehwan.duckdns.org/redoc)
## 작업 요약
요구사항을 기반으로 기업, 태그, 언어별 번역 정보를 분리하여 1차, 2차 정규화된 구조로 테이블을 설계했습니다.
테이블 간 관계를 적절하게 설정하여 다국어 확장이 가능하도록 구성했습니다.
검색 API에서는 회사 정보와 태그가 언어 우선순위로 정렬하여 사용자 언어에 맞는 결과가 노출되도록 처리했습니다.
마이그레이션 및 더미 데이터 입력은 app/scripts/ 디렉토리 스크립트로 자동화하였고,
test_senior_app.py 기준으로 모든 테스트가 정상적으로 통과됩니다.
## 1. 프로젝트 클론
```bash
git clone https://github.com/eehwan/company-metadata-api.git
cd company-metadata-api
```
## 2. .env 파일 생성 (필수)
```bash
cat < .env
POSTGRES_DB=your_db
POSTGRES_USER=your_user
POSTGRES_PASSWORD=your_password
POSTGRES_HOST=db
POSTGRES_PORT=5432
EOF
```
## 3. Docker 커테이너 빌드 및 실행
```bash
docker-compose build
docker-compose up -d
```
## 4. DB 초기화 및 데이터 삽입
```bash
docker exec -it company_api bash
python app/scripts/init_db.py
python app/scripts/generate_seed_data.py
```
## [추가] 검색 성능 최적화 (자동완성 검색)
회사명 자동완성 검색(`ILIKE '%query%'`)의 성능을 위해 PostgreSQL `pg_trgm` 확장과 GIN 인덱스를 추가
```bash
docker exec -it company_postgress psql -U $POSTGRES_USER -d $POSTGRES_DB
```
```sql
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX idx_company_name_trgm ON company_names USING gin (name gin_trgm_ops);
```
## [테스트 방법]
```bash
docker exec -it company_web bash
# 디비가 세팅되어있지 않다면 테스트 전, 아래의 작업 필요!
python app/scripts/init_db.py
python app/scripts/generate_seed_data.py
# pytest
pytest app/scripts/test_senior_app.py
```