6f0713953a
- 统一使用绝对导入(backend 目录在 PYTHONPATH) - 修改 main.py、api 模块、core/security 的导入 - 移除 generate 模块(缺失 GenerateTask 模型) - 修复 database.py 导入 Base - backend/run.sh 添加 PYTHONPATH 设置 - 前端 topics.html 修复 currentUser 初始值和 Vue 结构 - 添加前端代码语法检查脚本 版本: v1.0.3 (导入修复版)
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
# 宇之然内容创作平台 - 文章预览API
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException, status
|
|
from sqlalchemy.orm import Session
|
|
from typing import Dict
|
|
|
|
from app.database import get_db
|
|
from app.models import Topic
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/{topic_id}/preview")
|
|
async def get_preview(
|
|
topic_id: int,
|
|
platform: str = "zhihu",
|
|
db: Session = Depends(get_db)
|
|
):
|
|
"""获取文章预览HTML"""
|
|
|
|
# 检查选题是否存在
|
|
topic = db.query(Topic).filter(Topic.id == topic_id).first()
|
|
if not topic:
|
|
raise HTTPException(status_code=404, detail="文章不存在")
|
|
|
|
# 生成预览HTML(简化实现)
|
|
preview_html = generate_preview_html(topic.title, platform)
|
|
|
|
return {"html": preview_html}
|
|
|
|
def generate_preview_html(title: str, platform: str) -> str:
|
|
"""根据平台和标题生成预览HTML"""
|
|
|
|
base_template = f"""
|
|
<div class="article-preview">
|
|
<header class="header">
|
|
<h1>{title}</h1>
|
|
<div class="meta">
|
|
<span class="platform">{platform}</span>
|
|
<span class="date">2026-04-26</span>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="content">
|
|
<p>这里是文章的正文内容...</p>
|
|
<p>文章包含多个段落,展示不同的写作风格和结构。</p>
|
|
<p>在实际生产环境中,这里应该是完整的文章内容。</p>
|
|
</div>
|
|
|
|
<footer class="footer">
|
|
<div class="tags">
|
|
<span class="tag">#人工智能</span>
|
|
<span class="tag">#科技</span>
|
|
<span class="tag">#趋势</span>
|
|
</div>
|
|
<div class="interaction">
|
|
<button class="like">👍 点赞</button>
|
|
<button class="share">🔗 分享</button>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
"""
|
|
|
|
return base_template |