62 строки
1.2 KiB
Python
62 строки
1.2 KiB
Python
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from pydantic import BaseModel
|
|
|
|
from backend.config_store import (
|
|
get_openai_model,
|
|
has_openai_key,
|
|
set_setting,
|
|
)
|
|
|
|
app = FastAPI(title='DevConsole', version='0.1.0')
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=['*'],
|
|
allow_credentials=True,
|
|
allow_methods=['*'],
|
|
allow_headers=['*'],
|
|
)
|
|
|
|
|
|
class OpenAIConfigRequest(BaseModel):
|
|
api_key: str
|
|
model: str = 'gpt-5'
|
|
|
|
|
|
@app.get('/')
|
|
async def root():
|
|
return {
|
|
'project': 'DevConsole',
|
|
'version': '0.1.0',
|
|
'status': 'running',
|
|
'openai_configured': has_openai_key(),
|
|
}
|
|
|
|
|
|
@app.get('/health')
|
|
async def health():
|
|
return {
|
|
'status': 'ok',
|
|
'openai_configured': has_openai_key(),
|
|
}
|
|
|
|
|
|
@app.get('/api/settings/openai')
|
|
async def openai_status():
|
|
return {
|
|
'configured': has_openai_key(),
|
|
'model': get_openai_model(),
|
|
}
|
|
|
|
|
|
@app.post('/api/settings/openai')
|
|
async def save_openai_settings(payload: OpenAIConfigRequest):
|
|
set_setting('OPENAI_API_KEY', payload.api_key.strip())
|
|
set_setting('OPENAI_MODEL', payload.model.strip())
|
|
|
|
return {
|
|
'success': True,
|
|
'message': 'OpenAI settings saved',
|
|
}
|