"""固定公开资料的回复草稿演示：python reply_assistant.py。无模型调用。"""

DOCUMENTS = [
    ("D01", "产品试用规则", "体验版试用期为 7 天，包含资料检索和回复草稿，不包含自动发送。", ("试用", "体验", "几天")),
    ("D02", "部署说明", "支持私有化部署，需要准备服务器和模型接口，具体配置按资料规模评估。", ("部署", "服务器", "私有化")),
    ("D03", "使用边界", "回复草稿需要人工确认，资料没有依据的问题应交给人工。", ("人工", "发送", "边界", "自动")),
]


def answer(question):
    question = question.strip()
    if not question or len(question) > 200:
        return {"status": "invalid", "draft": "请输入 1–200 字的问题。", "sources": []}
    matches = [doc for doc in DOCUMENTS if any(term in question for term in doc[3])]
    if not matches:
        return {"status": "missing", "draft": "资料不足，请补充资料或转交人工。", "sources": []}
    return {"status": "draft", "draft": "\n".join(doc[2] for doc in matches), "sources": [doc[0] for doc in matches]}


if __name__ == "__main__":
    assert answer("试用几天？")["sources"] == ["D01"]
    assert answer("价格是多少？")["status"] == "missing"
    assert answer(" ")["status"] == "invalid"
    assert answer("字" * 201)["status"] == "invalid"
    assert answer("部署后会自动发送吗？")["sources"] == ["D02", "D03"]
    print("示例检查通过。输入问题开始体验，输入 exit 退出。")
    while True:
        try:
            question = input("\n你的问题：")
        except (EOFError, KeyboardInterrupt):
            break
        if question.lower() == "exit":
            break
        result = answer(question)
        print(result["draft"])
        print("资料出处：", ", ".join(result["sources"]) or "无")
        print("请人工检查后使用。")
