'commit'
This commit is contained in:
@@ -9,7 +9,7 @@ from sqlalchemy.sql import text
|
||||
|
||||
from Util.BananaClient import BananaClient
|
||||
from Util.LlmUtil import get_llm_response
|
||||
from DbKit.Db import Db
|
||||
from Model.HaiBaoModel import HaiBaoModel
|
||||
|
||||
router = APIRouter(prefix="/haibao")
|
||||
logger = logging.getLogger("HaiBaoController")
|
||||
@@ -21,43 +21,8 @@ class GenerateRequest(BaseModel):
|
||||
|
||||
@router.on_event("startup")
|
||||
async def startup_event():
|
||||
"""初始化时检查并创建表"""
|
||||
db = Db()
|
||||
await db.init_db()
|
||||
|
||||
# Doris 建表语句
|
||||
create_table_sql = """
|
||||
CREATE TABLE IF NOT EXISTS haibao_history (
|
||||
id VARCHAR(50) COMMENT "ID",
|
||||
prompt TEXT COMMENT "提示词",
|
||||
image_url VARCHAR(500) COMMENT "图片URL",
|
||||
scheme_content TEXT COMMENT "文案方案",
|
||||
created_at DATETIME COMMENT "创建时间"
|
||||
)
|
||||
DUPLICATE KEY(id)
|
||||
DISTRIBUTED BY HASH(id) BUCKETS 1
|
||||
PROPERTIES (
|
||||
"replication_num" = "1"
|
||||
);
|
||||
"""
|
||||
try:
|
||||
# 使用 engine 直接执行 DDL
|
||||
async with db.engine.begin() as conn:
|
||||
await conn.execute(text(create_table_sql))
|
||||
|
||||
# 尝试添加列(如果表已存在但列不存在)
|
||||
# Doris 不支持 IF NOT EXISTS for ADD COLUMN directly nicely in all versions without error if exists
|
||||
# 所以这里简单捕获异常,如果列已存在则忽略
|
||||
try:
|
||||
alter_sql = "ALTER TABLE haibao_history ADD COLUMN scheme_content TEXT COMMENT '文案方案'"
|
||||
await conn.execute(text(alter_sql))
|
||||
except Exception as e:
|
||||
# 忽略列已存在的错误
|
||||
pass
|
||||
|
||||
logger.info("海报历史表检查/更新成功")
|
||||
except Exception as e:
|
||||
logger.error(f"海报历史表创建/更新失败: {e}")
|
||||
"""初始化时逻辑"""
|
||||
logger.info("海报控制器启动成功")
|
||||
|
||||
class RefineRequest(BaseModel):
|
||||
prompt: str
|
||||
@@ -184,26 +149,11 @@ async def generate_poster(req: GenerateRequest):
|
||||
image_url, scheme_content = await asyncio.gather(generate_image_task(), generate_text_task())
|
||||
|
||||
# 4. 保存到数据库
|
||||
db = Db()
|
||||
model = HaiBaoModel()
|
||||
record_id = str(uuid.uuid4())
|
||||
created_at = datetime.now()
|
||||
|
||||
insert_sql = """
|
||||
INSERT INTO haibao_history (id, prompt, image_url, scheme_content, created_at)
|
||||
VALUES (:id, :prompt, :image_url, :scheme_content, :created_at)
|
||||
"""
|
||||
|
||||
params = {
|
||||
"id": record_id,
|
||||
"prompt": req.prompt,
|
||||
"image_url": image_url,
|
||||
"scheme_content": scheme_content,
|
||||
"created_at": created_at
|
||||
}
|
||||
|
||||
async with await db.get_session() as session:
|
||||
async with session.begin():
|
||||
await session.execute(text(insert_sql), params)
|
||||
await model.insert_record(record_id, req.prompt, image_url, scheme_content, created_at)
|
||||
|
||||
return {
|
||||
"id": record_id,
|
||||
@@ -220,10 +170,9 @@ async def generate_poster(req: GenerateRequest):
|
||||
@router.get("/history")
|
||||
async def get_history():
|
||||
"""获取海报生成历史"""
|
||||
db = Db()
|
||||
sql = "SELECT * FROM haibao_history ORDER BY created_at DESC LIMIT 50"
|
||||
try:
|
||||
result = await db.find(sql)
|
||||
model = HaiBaoModel()
|
||||
result = await model.get_history(50)
|
||||
|
||||
formatted_result = []
|
||||
for item in result:
|
||||
|
||||
Reference in New Issue
Block a user