백엔드 폴더 입력 → 경로와 파일 내용 함께 가져와 하나의 파일로 저장

# 3. 수집할 파일 확장자 
TARGET_EXTENSIONS = ['.mjs', '.js', '.ts', '.py', '.java', '.go', '.json', '.yaml', '.yml', '.sh', '.rb', '.php', '.html', '.css', '.scss', '.md', '.jsx', '.tsx']

# 4. 제외할 폴더
IGNORE_DIRS = {
    'node_modules', 'venv', '.git', '__pycache__', 
    'dist', 'build', '.idea', '.vscode', 'coverage',
}

# 5. 제외할 파일 (파일 이름만 정확히)
IGNORE_FILES = {
    'package-lock.json',
    'yarn.lock',
    '.DS_Store'
}

문제 사항: 하나의 파일로 저장하는 건 쉬웠으나, 어떤 파일, 폴더를 넣고, 제외할지 명확하게 정해야 된다.

  1. 제외할 ‘폴더’만 코드를 작성했을 땐 패키지 파일 등도 통합되는 이슈가 있어서, 제외할 ‘파일’들 도 제거할 코드를 추가했다.
for root, dirs, files in os.walk(root_dir):
                # 제외할 폴더 건너뛰기
                dirs[:] = [d for d in dirs if d not in IGNORE_DIRS]

                for file in files:
                    # 여기서 먼저 파일 이름을 검사해서 쫓아냅니다
                    if file in IGNORE_FILES:
                        continue

                    _, ext = os.path.splitext(file)
                    
                    if ext in TARGET_EXTENSIONS:
                        file_path = os.path.join(root, file)
                        try:
                            with open(file_path, 'r', encoding='utf-8') as f_in:
                                content = f_in.read()
                                f_out.write(f"### FILE: {file_path}\\n")
                                f_out.write("-" * 30 + "\\n")
                                f_out.write(content)
                                f_out.write(f"\\n\\n{'='*60}\\n\\n")
                                file_count += 1

진행 중 궁금했던 것:

진행하기 전에 묻고 싶은게 있는데,

대상 폴더 경로 설정(실제 백엔드 경로로 변경 필요)

TARGET_FOLDER_PATH = r"C:\Pyg\REACT\6_todolist"

지금은 이렇게 파일 주소를 직접 입력해줘서 테스트 중인데 나중에 프론트엔드, 백엔드, AI 가 통합된 사이트가 만들어졌을 땐, 사용자가 파일들을 그냥 사이트에 드래그로 넣거나 업로드 할 건데 그 주소를 바로 알아내게 만들고 있는 거지?

지금은 개발 초기 단계라 "로직(엔진)이 잘 돌아가는지" 확인하기 위해 우리가 알고 있는 내 컴퓨터의 고정된 주소(C:\\...)를 억지로 넣어주는 것입니다.

지금 작성하신 코드는 나중에 웹 서버(API) 코드로 이식될 때, 입력받는 부분만 살짝 바뀝니다.

미래 (웹 서비스용 - 예: Flask/FastAPI)

# 사용자가 업로드 버튼을 누르면, 서버가 그 파일을 받음
@app.route('/upload', methods=['POST'])
def upload_files():
    uploaded_file = request.files['file'] # 1. 사용자가 보낸 파일 받기
    
    # 2. 서버의 임시 공간에 저장 (자동으로 주소 생성됨)
    save_path = f"./temp_uploads/{uploaded_file.filename}" 
    uploaded_file.save(save_path)
    
    # 3. 우리가 만든 로직 실행! (경로만 임시 경로로 교체)
    collect_backend_code(save_path)

지금 C:\\... 경로로 하드코딩해서 테스트하는 것은 아주 필수적인 과정입니다. 핵심 기능(파일 읽기, 통합하기, 분석하기)을 먼저 완성해 놓아야, 나중에 웹이랑 연결할 때 그 기능만 쏙 갖다 끼우면 되거든요.