Files
test-mcp/server.py
2026-02-27 17:52:34 +09:00

70 lines
1.9 KiB
Python

import os
import sys
# 한글 환경 및 Tesseract 경로 강제 설정
os.environ["PYTHONIOENCODING"] = "utf-8"
os.environ["TESSDATA_PREFIX"] = r"C:\Users\User\AppData\Local\Programs\Tesseract-OCR\tessdata"
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse, FileResponse
from fastapi.staticfiles import StaticFiles
from analyze import analyze_file_content
from crawler_service import run_crawler_service
app = FastAPI(title="Project Master Overseas API")
# 정적 파일 및 미들웨어 설정
app.mount("/style", StaticFiles(directory="style"), name="style")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=False,
allow_methods=["*"],
allow_headers=["*"],
)
# --- HTML 라우팅 ---
@app.get("/")
async def root():
return FileResponse("index.html")
@app.get("/dashboard")
async def get_dashboard():
return FileResponse("dashboard.html")
@app.get("/mailTest")
@app.get("/mailTest.html")
async def get_mail_test():
return FileResponse("mailTest.html")
# --- 데이터 API ---
@app.get("/attachments")
async def get_attachments():
sample_path = "sample"
if not os.path.exists(sample_path):
os.makedirs(sample_path)
files = []
for f in os.listdir(sample_path):
f_path = os.path.join(sample_path, f)
if os.path.isfile(f_path):
files.append({
"name": f,
"size": f"{os.path.getsize(f_path) / 1024:.1f} KB"
})
return files
@app.get("/analyze-file")
async def analyze_file(filename: str):
"""
분석 서비스(analyze.py) 호출
"""
return analyze_file_content(filename)
@app.get("/sync")
async def sync_data():
"""
크롤링 서비스(crawler_service.py) 호출
"""
return StreamingResponse(run_crawler_service(), media_type="text_event-stream")