백엔드 폴더 입력 → 경로와 파일 내용 함께 가져와 하나의 파일로 저장
# 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'
}
문제 사항: 하나의 파일로 저장하는 건 쉬웠으나, 어떤 파일, 폴더를 넣고, 제외할지 명확하게 정해야 된다.
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:\\... 경로로 하드코딩해서 테스트하는 것은 아주 필수적인 과정입니다. 핵심 기능(파일 읽기, 통합하기, 분석하기)을 먼저 완성해 놓아야, 나중에 웹이랑 연결할 때 그 기능만 쏙 갖다 끼우면 되거든요.