/* AI 论文助手 */
const { useState } = React;
const Icon = window.LCYIcon;
const { Page, Intro, Field, Modes, GenBtn, ResultCard, BusyCard, Rich, flash } = window;

const MODES = [
  { id: "topic", ic: "lightbulb", t: "选题建议", d: "给方向，AI 推荐可行的研究选题", ph: "输入你的专业方向或大致兴趣，如「计算机视觉在医疗影像的应用」" },
  { id: "review", ic: "library", t: "文献综述框架", d: "搭好综述的结构脉络", ph: "输入论文主题，如「大语言模型在教育领域的研究现状」" },
  { id: "outline", ic: "list-tree", t: "论文提纲", d: "生成章节级写作大纲", ph: "输入论文题目或核心论点" },
  { id: "polish", ic: "wand-2", t: "润色降重", d: "改写表达、降低重复率", ph: "粘贴需要润色或降重的段落" },
];

function PaperApp() {
  const [mode, setMode] = useState("topic");
  const [input, setInput] = useState("");
  const [busy, setBusy] = useState(false);
  const [out, setOut] = useState("");
  const cur = MODES.find((m) => m.id === mode);

  const run = async () => {
    if (!input.trim()) { flash("先输入内容"); return; }
    setBusy(true); setOut("");
    const prompts = {
      topic: `你是学术导师。基于以下方向，推荐 5 个具体、可行、有创新性的中文研究选题，每个附一句话说明研究价值与可行性。方向：\n${input.trim()}`,
      review: `你是学术写作助手。为以下论文主题搭建一份文献综述的结构框架（用层级列表给出各部分及其要点，并提示该梳理哪些研究脉络）。主题：\n${input.trim()}`,
      outline: `你是学术写作助手。为以下论文题目/论点生成一份条理清晰的中文论文写作提纲（含摘要、引言、各章节与小节、结论），用层级列表。内容：\n${input.trim()}`,
      polish: `你是学术润色专家。请润色下面的段落，使表达更严谨流畅、更具学术性，并通过改写句式与措辞降低重复率（保持原意与中文）。直接输出润色后的文字：\n\n${input.trim()}`,
    };
    try { setOut(await window.aiComplete(prompts[mode])); } catch (e) { flash(window.failMsg(e)); } finally { setBusy(false); }
  };

  return (
    <Page icon="graduation-cap" name="论文助手" sub="AI PAPER" col="split">
      <Intro eyebrow="AI 学术写作" title="陪你走完论文每一关" sub="从选题、文献综述、提纲到润色降重，选一个环节开始。" />
      <div className="card">
        <Field icon="compass" label="选择环节"><Modes options={MODES} value={mode} onChange={(id)=>{setMode(id);setOut("");}} /></Field>
        <Field icon="pencil" label={cur.t + " · 输入"}>
          <textarea className={"in" + (mode === "polish" ? " tall" : "")} placeholder={cur.ph} value={input} onChange={(e) => setInput(e.target.value)} />
        </Field>
        <GenBtn onClick={run} busy={busy} label={cur.t} hint="学术写作请遵守学术诚信规范" />
      </div>

      {busy && <BusyCard label="AI 正在处理…" />}
      {out && <ResultCard icon={cur.ic} title={cur.t} copy={out}><Rich muted>{out}</Rich></ResultCard>}
    </Page>
  );
}
ReactDOM.createRoot(document.getElementById("root")).render(<PaperApp />);
