Corin1998 commited on
Commit
07efc99
·
verified ·
1 Parent(s): f03ceb1

Update app/routers/content.py

Browse files
Files changed (1) hide show
  1. app/routers/content.py +10 -6
app/routers/content.py CHANGED
@@ -5,6 +5,7 @@ from app.database import get_db
5
  from app import models, schemas
6
  from app.ingest import extract_from_pdf, extract_from_url
7
  from app.tasks import task_generate_draft
 
8
 
9
  router = APIRouter(prefix="/content", tags=["content"])
10
 
@@ -29,7 +30,6 @@ async def create_draft(
29
  raw = text or ""
30
  source_ref = "text"
31
 
32
-
33
  draft = models.Draft(
34
  source_type=source_type, source_ref=source_ref,
35
  raw_text=raw[:20000], content_type=content_type, tone=tone,
@@ -37,12 +37,17 @@ async def create_draft(
37
  )
38
  db.add(draft); db.commit(); db.refresh(draft)
39
 
 
 
 
 
 
 
 
 
40
 
41
- task_generate_draft.delay(draft.id)
42
- # 生成完了後はstatus=pendingになる。UIはポーリングで取得。
43
  return draft
44
 
45
-
46
  @router.post("/{draft_id}/approve", response_model=schemas.DraftOut)
47
  async def approve_draft(draft_id: int, payload: schemas.ApproveInput, db: Session = Depends(get_db)):
48
  draft = db.get(models.Draft, draft_id)
@@ -60,10 +65,9 @@ async def approve_draft(draft_id: int, payload: schemas.ApproveInput, db: Sessio
60
  db.add(draft); db.commit(); db.refresh(draft)
61
  return draft
62
 
63
-
64
  @router.get("/{draft_id}", response_model=schemas.DraftOut)
65
  async def get_draft(draft_id: int, db: Session = Depends(get_db)):
66
  draft = db.get(models.Draft, draft_id)
67
  if not draft:
68
  raise RuntimeError("not found")
69
- return draft
 
5
  from app import models, schemas
6
  from app.ingest import extract_from_pdf, extract_from_url
7
  from app.tasks import task_generate_draft
8
+ from app.config import settings
9
 
10
  router = APIRouter(prefix="/content", tags=["content"])
11
 
 
30
  raw = text or ""
31
  source_ref = "text"
32
 
 
33
  draft = models.Draft(
34
  source_type=source_type, source_ref=source_ref,
35
  raw_text=raw[:20000], content_type=content_type, tone=tone,
 
37
  )
38
  db.add(draft); db.commit(); db.refresh(draft)
39
 
40
+ # Queue if broker exists, otherwise generate synchronously so Spaces demo works
41
+ try:
42
+ if settings.CELERY_BROKER_URL:
43
+ task_generate_draft.delay(draft.id)
44
+ else:
45
+ task_generate_draft(draft.id) # run inline
46
+ except Exception:
47
+ task_generate_draft(draft.id)
48
 
 
 
49
  return draft
50
 
 
51
  @router.post("/{draft_id}/approve", response_model=schemas.DraftOut)
52
  async def approve_draft(draft_id: int, payload: schemas.ApproveInput, db: Session = Depends(get_db)):
53
  draft = db.get(models.Draft, draft_id)
 
65
  db.add(draft); db.commit(); db.refresh(draft)
66
  return draft
67
 
 
68
  @router.get("/{draft_id}", response_model=schemas.DraftOut)
69
  async def get_draft(draft_id: int, db: Session = Depends(get_db)):
70
  draft = db.get(models.Draft, draft_id)
71
  if not draft:
72
  raise RuntimeError("not found")
73
+ return draft