다른 이야기들

홈페이지 만드는 중

Goodday290 2025. 4. 18. 22:34

클로드한테 줬던 프롬프트.

홈페이지를 만들고 싶은데, 어떻게 구현해야할지 도와줘. 파이썬을 사용하고 싶고, 프론트엔드나 HTML은 내가 잘 몰라서, 어떤 구조로 만들어야할지 모르겠네. 일단 기본적인 틀과 구조를 먼저 만들어줘. 한번에 모든 걸 다 구현할 수는 없으니 큰 그림을 그린다고 생각하고, 일단 대략적인 구조만 잡아줘.

#개요
홈페이지를 만들꺼야. AI 뉴스를 볼 수 있는 홈페이지야. 홈페이지 첫 화면을 보면 "오늘 뉴스"라는 글자가 있고 그 밑에 3~5개 정도의 뉴스가 간략히 정리되어 있어. 화면 하단에는 질문을 할 수 있는 질문창이 있어.

#작동 방식
이 홈페이지는 이렇게 작동해.
1. 뉴스는 데이터베이스에 저장한다.
2. 크롤링봇들이 한 시간에 한 번씩 주요 출처들이 될 페이지를 방문해서 새로운 글이나 기사가 올라오면 그걸 크롤링해서 데이터로 저장한다. 저장할 항목으로는 제목, 출처, url, 내용 3가지를 저장한다.
3. 새로운 데이터가 저장이 되면, LLM을 호출하여 이 데이터베이스에서 제목과 내용을 주고 뉴스에 대한 키워드 뽑기와 3줄 요약을 시킨다.
4. 키워드와 요약을 데이터베이스에 저장을 한다.
5. 저장된 뉴스의 제목과 요약문은 최신순서로 홈페이지에서 노출한다.
6. 하단에 있는 채팅창은 챗봇과 연결되어서, 사용자가 뉴스에 대한 자세한 내용에 대해 질문을 하면API로 LLM을 불러와 데이터베이스의 뉴스를 검색하는 RAG를 사용해 답변한다.

 

AI_News_portal 폴더를 만들고 가상환경 만들어서 작업 시작.

웹 프레임워크: Django (기능이 많음) 사용.

프론트엔드: 템플릿 엔진 Django 템플릿, CSS 프레임워크: Bootstrap (쉽게 깔끔한 디자인 구현), JavaScript: 기본 JavaScript나 jQuery (채팅 인터페이스용)

 

구조

Django는 기능별로 분리된 앱으로 구성됩니다:

  • news: 뉴스 표시 및 조회 기능
  • chatbot: 챗봇 인터페이스 및 API
  • crawler: 뉴스 크롤링 및 처리 기능

 

AI_News_portal/                  # 프로젝트 루트 디렉토리

├── manage.py                    # Django 프로젝트 관리 스크립트
├── requirements.txt             # 필요한 패키지 목록

├── ai_news_portal/              # 프로젝트 메인 패키지
│   ├── __init__.py
│   ├── settings.py              # 프로젝트 설정
│   ├── urls.py                  # 메인 URL 설정
│   ├── asgi.py                  # ASGI 설정
│   └── wsgi.py                  # WSGI 설정

├── news/                        # 뉴스 관련 앱
│   ├── __init__.py
│   ├── admin.py                 # 관리자 인터페이스 설정
│   ├── apps.py                  # 앱 설정
│   ├── models.py                # 데이터베이스 모델
│   ├── views.py                 # 뷰 함수 및 클래스
│   ├── urls.py                  # 앱 URL 설정
│   ├── tests.py                 # 테스트
│   ├── migrations/              # 데이터베이스 마이그레이션
│   └── templates/               # 앱 템플릿
│       └── news/
│           ├── index.html       # 홈페이지 템플릿
│           └── detail.html      # 뉴스 상세 템플릿

├── chatbot/                     # 챗봇 관련 앱
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── views.py
│   ├── urls.py
│   └── tests.py

├── crawler/                     # 크롤링 관련 앱
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── services/
│   │   ├── __init__.py
│   │   ├── crawlers.py          # 크롤링 서비스
│   │   └── llm_service.py       # LLM 서비스
│   ├── management/              # 커스텀 명령어
│   │   └── commands/
│   │       ├── __init__.py
│   │       ├── crawl_news.py    # 뉴스 크롤링 명령어
│   │       └── process_news.py  # 뉴스 처리 명령어
│   └── tests.py

├── static/                      # 전역 정적 파일
│   ├── css/
│   ├── js/
│   └── images/

└── templates/                   # 전역 템플릿
    └── base.html                # 기본 템플릿

 

 

다음에 다시 시작할 때:

터미널에서 폴더 들어가서 가상환경 먼저 키고,

source venv/bin/activate

터미널 두개 열어서 아래 서버 실행 및 테스트

python manage.py runserver

python manage.py livereload