"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import { Alert, AlertDescription } from "@/components/ui/alert" import { Loader2, FileText, AlertTriangle } from "lucide-react" import { generateDocx } from "@/lib/documentation/docx-generator" interface DocumentSection { title: string path: string description: string screenshot: string } interface DocumentGeneratorProps { pages: Array<{ path: string; title: string; description: string }> screenshots: Record onDocumentGenerated: (url: string) => void } export default function DocumentGenerator({ pages, screenshots, onDocumentGenerated }: DocumentGeneratorProps) { const [isGenerating, setIsGenerating] = useState(false) const [error, setError] = useState(null) const [sections, setSections] = useState([]) const [descriptions, setDescriptions] = useState>({}) // 初始化页面描述 useEffect(() => { const initialDescriptions: Record = {} pages.forEach((page) => { initialDescriptions[page.path] = page.description || "" }) setDescriptions(initialDescriptions) }, [pages]) // 更新页面描述 const updateDescription = (path: string, description: string) => { setDescriptions((prev) => ({ ...prev, [path]: description, })) } // 准备文档部分 useEffect(() => { const newSections = pages .filter((page) => screenshots[page.path]) .map((page) => ({ title: page.title, path: page.path, description: descriptions[page.path] || page.description || "", screenshot: screenshots[page.path], })) setSections(newSections) }, [pages, screenshots, descriptions]) // 生成文档 const generateDocument = async () => { if (sections.length === 0) { setError("没有可用的截图,请先捕获页面截图") return } setIsGenerating(true) setError(null) try { console.log("开始生成文档...") console.log("文档部分数量:", sections.length) // 准备文档数据 const documentData = { title: "用户数据资产中台使用手册", author: "系统管理员", date: new Date().toLocaleDateString("zh-CN"), sections: sections, } console.log("文档数据准备完成") // 生成Word文档 const docxUrl = await generateDocx(documentData) console.log("文档生成成功:", docxUrl) // 调用回调函数 onDocumentGenerated(docxUrl) } catch (error) { console.error("生成文档时出错:", error) setError(`生成文档时出错: ${error instanceof Error ? error.message : String(error)}`) } finally { setIsGenerating(false) } } return (

文档内容编辑

{error && ( {error} )} {sections.length === 0 ? (

没有可用的截图

请先捕获页面截图

) : (

已捕获 {sections.length} 个页面的截图。您可以编辑每个页面的描述,然后生成文档。

{sections.map((section) => (
{section.title}

{section.title}

{section.path}