메일 분석시스템 보완
This commit is contained in:
69
server.py
Normal file
69
server.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user