
    >i                        d Z ddlmZ ddlmZ ddlmZmZ  G d de          Z G d de          Z	 G d	 d
e          Z
 G d de          ZdS )u   Pydantic models for the QA (智能问答) API.

智能问答接口的请求数据模型。
响应复用 research 模块的 ResearchChunk，通过 SSE 流式返回。
QA 材料检索接口返回结构化 JSON 结果。
    )annotations)Any)	BaseModelFieldc                      e Zd ZU dZ edddd          Zded<    ed	d
          Zded<    ed	d          Zded<   d	S )	QARequestzPayload for ``POST /qa``..        问答问题
min_length
max_lengthdescriptionstrquestionNu   可选的问答会话 IDr   
str | None
session_id   显式导入的文档 ID 列表list[str] | Noneseed_doc_ids)	__name__
__module____qualname____doc__r   r   __annotations__r   r        ,D:\work\zm-rag\backend\app\api\schemas\qa.pyr   r      s~         ##E#!.YYYHYYYY"U45OPPPJPPPP%*U4=^%_%_%_L______r   r   c                  `    e Zd ZU dZ edddd          Zded<    ed	d
          Zded<   d	S )QASearchRequestuS   Payload for ``POST /qa/search`` — 仅检索材料，不调用 LLM 生成回答。.r	   r
   r   r   r   r   Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r!   r!      s]         ]]E#!.YYYHYYYY%*U4=^%_%_%_L______r   r!   c                     e Zd ZU dZ edd          Zded<    edd	          Zded
<    edd          Zded<    edd          Z	ded<    edd          Z
ded<    edd          Zded<    edd          Zded<    eed          Zded<    edd	          Zded<    edd          Zded <    edd!          Zded"<    edd#          Zd$ed%<    edd&          Zd$ed'<    edd(          Zded)<   dS )*QASearchDocumentu$   检索命中的单篇文档信息。.u	   文档 IDr   r   doc_id u   文档标题defaultr   titleNu   文号r   
doc_numberu   发文机关issuing_orgu   公文种类doc_typeu   发布日期publish_dateu   相关性得分zfloat | Nonescoreu   匹配的文本摘录default_factoryr   	list[str]passagessearchu+   来源类型: search | seed | graph | guidesource_typeu   来源中文标签source_labelu-   办事指南 profile ID（仅 guide 类型）
profile_idu+   匹配的指南字段（仅 guide 类型）r   matched_fieldsu1   匹配字段的中文标签（仅 guide 类型）matched_field_labelsu(   办事指南摘要（仅 guide 类型）summary)r   r   r   r   r   r$   r   r(   r)   r*   r+   r,   r-   listr1   r3   r4   r5   r6   r7   r8   r   r   r   r#   r#      s        ..%555F5555r~>>>E>>>>"U4X>>>J>>>>#eDnEEEKEEEE 5>BBBHBBBB$uT~FFFLFFFF%2CDDDEDDDD%BYZZZHZZZZuX;hiiiKiiii$uT7KLLLLLLLL"U45deeeJeeee',uT?l'm'm'mNmmmm-2U4Ex-y-y-yyyyy%2\]]]G]]]]]]r   r#   c                  4   e Zd ZU dZ edd          Zded<    eed          Zd	ed
<    edd          Z	ded<    edd          Z
ded<    eed          Zded<    edd          Zded<    edd          Zded<    edd          Zded<   dS )QASearchResponseu@   ``POST /qa/search`` 的响应 — 检索阶段的完整结果。.u   原始问题r   r   r   u   LLM 提取的关键词r.   r0   keywordsGENERALu   图谱意图分类r&   intentr   u   命中文档总数inttotalu   检索到的文档列表zlist[QASearchDocument]	documentsr%   u>   格式化的参考材料文本（可直接用于 LLM 输入）context_textu   图谱结构化证据文本graph_evidence_textu   办事指南证据文本guide_evidence_textN)r   r   r   r   r   r   r   r9   r<   r>   r@   rA   rB   rC   rD   r   r   r   r;   r;   1   s!        JJE#>:::H::::%BZ[[[H[[[[%	7KLLLFLLLLq.BCCCECCCC(-dPj(k(k(kIkkkkb6vwwwLwwww$uR=Z[[[[[[[$uR=WXXXXXXXXXr   r;   N)r   
__future__r   typingr   pydanticr   r   r   r!   r#   r;   r   r   r   <module>rH      s!    # " " " " "       % % % % % % % %` ` ` ` `	 ` ` `` ` ` ` `i ` ` `^ ^ ^ ^ ^y ^ ^ ^&
Y 
Y 
Y 
Y 
Yy 
Y 
Y 
Y 
Y 
Yr   