Skip to content

RidiculousBuffal/BetterReport

Repository files navigation

用Pandoc帮助deepResearch更好的输出

成品

本次实验以LP报告为例 check here

架构

img_1.png

Start UP

本项目利用了mysql做持久化,表的结构可能有点冗余,那是为了便于之后扩展,本项目用Azure Blob Service以便于生成的pdf能被公网访问

环境变量

AZURE_DEPLOYMENT="gpt-4.1"
AZURE_ENDPOINT="https://xxx.openai.azure.com"
API_VERSION="2025-01-01-preview"
API_KEY=""
TAVILY_API_KEY=tvly-prod-
JINA_READER_API_KEY=
STORE_PATH=E:\\codes\\langchain-langgraph\\archive\\reportsArchive
MERGED_PATH=E:\\codes\\langchain-langgraph\\archive\\reportsArchiveMerged
AZURE_BLOB_CONNECT_STRING=
AZURE_BLOB_CONTAINER=
LOCAL_DB_HOST=localhost
LOCAL_DB_PORT=3306
LOCAL_DB_DATABASE=
LOCAL_DB_USER=
LOCAL_DB_PASSWORD=
PANDOC_RUNTIME=windows #windows表示是开发环境,意味着要通过docker容器连接到pandoc,container表是是在最终的docker镜像中,镜像中以预装了pandoc

数据库

database.sql

已预装中文字体的镜像:

docker push ridiculousbuffalo/pandocchinese:latest

希望加上自己想要的字体/自定义版式

修改pandoc.DockerFile,安装字体即可,可以在parseUtil.py处修改镜像名

FastAPI接口文档

1. 数据模型

1.1. Result 统一返回结构

字段 类型 说明
code int 0=成功, 1=失败
msg str 描述信息
data Any 返回的数据对象

示例

{
  "code": 0,
  "msg": "success",
  "data": {
    ...
  }
}

1.2. Report 对象

字段 类型 说明
id string 报告ID
groupId string 任务组ID
markdown string Markdown内容(可选)
downloadLink string 下载链接(可选)
zipDownloadLink string ZIP包下载链接(可选)

1.3. FrontEndFormDTO 对象(提交生成报告)

字段 类型 说明
choice string 选择的类型(如"LP")
detail string 详情(逗号分隔的公司等信息)
email string 接收报告的邮箱

2. 接口列表

2.1. 根接口

GET /

描述

测试服务是否可用。

请求参数

响应示例

{
  "Hello": "World"
}

2.2. 查询待发送任务

GET /task/getFinishTask

描述

查询所有需要发送的任务列表。

请求参数

响应示例

{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": "rpt1",
      "groupId": "grp1",
      "markdown": "...",
      "downloadLink": "http://xx",
      "zipDownloadLink": "http://xx.zip"
    },
    ...
  ]
}

响应失败示例

{
  "code": 1,
  "msg": "异常信息",
  "data": null
}

2.3. 生成报告

POST /report/gen

描述

异步生成报告并发送邮件(如有需要)。只支持 choice=="LP" 时处理,其他choice类型请扩展代码。

请求参数

请求体为FrontEndFormDTO

字段 类型 说明
choice string 请选择"LP"
detail string 支持逗号或中文逗号分隔的公司名,最多6个。
email string 接收报告的邮箱
请求示例
{
  "choice": "LP",
  "detail": "阿里巴巴,腾讯,华为,字节跳动,美团,小米",
  "email": "your@email.com"
}

响应

  • 成功响应
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 失败响应
    {
      "code": 1,
      "msg": "错误信息",
      "data": null
    }

3. 其他说明

  1. CORS: 已允许任意源跨域。
  2. 任务是异步的:生成报告接口并不会阻塞,任务会在后台异步处理。
  3. 最大公司数:当前逻辑最多处理6家公司,如超出将自动截断。
  4. choice 可拓展:当前仅识别"LP",如需支持更多类型请在代码中添加分支逻辑。

4. 错误码

code 说明
0 成功
1 失败/异常

Dockerfile

Dockerfile 提供一个在python镜像中安装pandoc环境的示例

About

use pandoc to make llm report better

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published