핫트레이딩

AI 기반 자동 프로그래밍 시스템 – 전체 설계도 (8) 본문

IT 정보/인공지능 Ai

AI 기반 자동 프로그래밍 시스템 – 전체 설계도 (8)

HOTT 2025. 8. 26. 19:13

Git 자동화(코드 저장 → Commit & Push) 단계로 진행하겠습니다.
이 단계가 끝나면 AI가 제안한 코드를 자동으로 저장 → GitHub에 버전 관리할 수 있습니다.


1. 목표

  1. FastAPI 백엔드가 AI가 생성한 코드를 파일로 저장
  2. 저장된 파일을 Git에 Commit & Push 자동 실행
  3. React에서 “코드 저장 & Git Push” 버튼 클릭 → 모든 과정 완료

2. Git 사전 준비

  1. Git 설치 여부 확인:
    bash
    git --version
  2. 프로젝트 디렉토리(backend)에서 Git 초기화:
    bash
    cd backend
    git init
    git remote add origin https://github.com/사용자명/저장소명.git
  3. GitHub Personal Access Token 생성 (비밀번호 대신 사용)
    https://github.com/settings/tokens

3. 백엔드 기능 추가 (코드 저장 & Git Commit/Push)

backend/main.py에 추가:

python
import subprocess
from datetime import datetime

CODE_SAVE_PATH = "generated_code.py"

@app.post("/save_and_push")
def save_and_push(note: DeveloperNote):
    """
    1) AI 코드 생성
    2) 코드 저장
    3) Git Commit & Push
    """
    try:
        # (1) AI에게 코드 요청
        prompt = f"""
        프로젝트 이름: {note.projectName}
        필수 기능: {', '.join(note.mustHave)}
        제외 기능: {', '.join(note.mustNotHave)}
        승인 필요한 변경사항: {', '.join(note.reviewRequired)}

        위 정보를 기반으로 Python(FastAPI) 예제 코드를 작성해 주세요.
        """
        response = openai.ChatCompletion.create(
            model="gpt-4o-mini",
            messages=[{"role": "system", "content": "당신은 전문 개발 보조 AI입니다."},
                      {"role": "user", "content": prompt}],
            max_tokens=500
        )
        ai_code = response.choices[0].message["content"].strip()

        # (2) 코드 저장
        with open(CODE_SAVE_PATH, "w", encoding="utf-8") as f:
            f.write(ai_code)

        # (3) Git Commit & Push
        subprocess.run(["git", "add", CODE_SAVE_PATH], check=True)
        commit_msg = f"Auto commit: {note.projectName} ({datetime.now()})"
        subprocess.run(["git", "commit", "-m", commit_msg], check=True)
        subprocess.run(["git", "push", "origin", "main"], check=True)

        return {"message": "코드 생성 및 Git Push 완료", "file": CODE_SAVE_PATH}

    except subprocess.CalledProcessError as git_error:
        return {"error": f"Git 명령 실행 실패: {git_error}"}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
 

4. 프론트엔드(React) 버튼 추가

frontend/src/App.js:

javascript
const handleSaveAndPush = async () => {
  const note = {
    projectName,
    mustHave: mustHave.split(",").map(item => item.trim()),
    mustNotHave: mustNotHave.split(",").map(item => item.trim()),
    reviewRequired: reviewRequired.split(",").map(item => item.trim())
  };

  try {
    const res = await fetch("http://127.0.0.1:8000/save_and_push", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(note)
    });

    const data = await res.json();
    if (data.message) {
      alert(data.message + "\n저장 파일: " + data.file);
    } else {
      alert("실패: " + JSON.stringify(data));
    }
  } catch (err) {
    console.error("저장 & Git Push 실패:", err);
  }
};
 
 

UI 버튼 추가:

javascript
<button
  onClick={handleSaveAndPush}
  className="bg-purple-500 text-white px-4 py-2 rounded-lg hover:bg-purple-600 mt-2"
>
  코드 저장 & Git Push
</button>
 

5. 동작 흐름

  1. React에서 “코드 저장 & Git Push” 클릭
  2. FastAPI → AI 호출 → 코드 생성 → generated_code.py 저장
  3. Git Commit & Push → GitHub 저장소로 자동 반영

6. 이로써 가능한 것

  • 프론트에서 노트 입력 → AI 코드 생성 → GitHub 저장소 업데이트
  • 초보 개발자도 “기능 정의 → 자동 코드 생성 → 버전 관리” 파이프라인 구축 가능

다음 단계 제안 (최종 단계):

  1. 전체 시스템 설계도(프론트-백-AI-Git 흐름도) 작성
  2. 운영 시 주의사항(보안, 개선점) 정리
반응형