Добавлено управление OpenAI API ключом через web API
Этот коммит содержится в:
+35
-2
@@ -1,5 +1,12 @@
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
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 = FastAPI(title='DevConsole', version='0.1.0')
|
||||||
|
|
||||||
@@ -12,17 +19,43 @@ app.add_middleware(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OpenAIConfigRequest(BaseModel):
|
||||||
|
api_key: str
|
||||||
|
model: str = 'gpt-5'
|
||||||
|
|
||||||
|
|
||||||
@app.get('/')
|
@app.get('/')
|
||||||
async def root():
|
async def root():
|
||||||
return {
|
return {
|
||||||
'project': 'DevConsole',
|
'project': 'DevConsole',
|
||||||
'version': '0.1.0',
|
'version': '0.1.0',
|
||||||
'status': 'running'
|
'status': 'running',
|
||||||
|
'openai_configured': has_openai_key(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get('/health')
|
@app.get('/health')
|
||||||
async def health():
|
async def health():
|
||||||
return {
|
return {
|
||||||
'status': 'ok'
|
'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',
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user