// 知识库管理（行业知识 CRUD，生成时注入 prompt）
const { useState: KS, useEffect: KE, useCallback: KC } = React;
const {
	Card: KC1, Table: KT, Button: KB, Modal: KM, Form: KF, Input: KI, Select: KS2,
	Switch: KW, Popconfirm: KP, message: KMg, Space: KSP, Tag: KTg
} = antd;

NR.Pages.KnowledgePage = function KnowledgePage() {
	const [list, setList] = KS([]);
	const [total, setTotal] = KS(0);
	const [page, setPage] = KS(1);
	const [loading, setLoading] = KS(false);
	const [modalOpen, setModalOpen] = KS(false);
	const [editing, setEditing] = KS(null);
	const [pidFilter, setPidFilter] = KS("");
	const [form] = KF.useForm();

	const load = KC(async (p = 1, kw = "", pid = pidFilter) => {
		setLoading(true);
		try {
			const q = { page: p, size: 10, keyword: kw };
			if (pid !== "") { q.product_id = Number(pid) || 0; }
			const data = await NR.api("knowledge_list", q);
			setList(data.list); setTotal(data.total); setPage(data.page);
		} catch (e) { KMg.error(e.message); }
		finally { setLoading(false); }
	}, [pidFilter]);

	KE(() => { load(); }, []);

	const openEdit = (record) => {
		setEditing(record || null);
		setModalOpen(true);
		setTimeout(() => {
			form.setFieldsValue(record ? {
				industry: record.industry, topic: record.topic, content: record.content,
				keywords: record.keywords, source: record.source,
				product_id: Number(record.product_id) || 0,
				enabled: Number(record.enabled) === 1,
			} : { enabled: true, industry: "通用", product_id: 0 });
		}, 0);
	};

	const save = async () => {
		const values = await form.validateFields();
		try {
			await NR.api("knowledge_save", {
				knowledge_id: editing ? editing.knowledge_id : 0,
				industry: values.industry || "通用", topic: values.topic,
				content: values.content || "", keywords: values.keywords || "",
				source: values.source || "", product_id: Number(values.product_id) || 0,
				enabled: values.enabled ? 1 : 0,
			}, "POST");
			KMg.success("已保存"); setModalOpen(false); load(page);
		} catch (e) { KMg.error(e.message); }
	};

	const del = async (record) => {
		try {
			await NR.api("knowledge_del", { knowledge_id: record.knowledge_id }, "POST");
			KMg.success("已删除"); load(page);
		} catch (e) { KMg.error(e.message); }
	};

	const columns = [
		{ title: "ID", dataIndex: "knowledge_id", width: 60 },
		{ title: "归属", dataIndex: "product_id", width: 90, render: v => Number(v) > 0 ? <KTg color="orange">商品 #{v}</KTg> : <KTg color="blue">平台通用</KTg> },
		{ title: "行业", dataIndex: "industry", width: 90, render: v => <KTg color={v === "通用" ? "blue" : "default"}>{v}</KTg> },
		{ title: "主题", dataIndex: "topic", width: 160 },
		{ title: "内容", dataIndex: "content", ellipsis: true },
		{ title: "命中关键词", dataIndex: "keywords", width: 180, ellipsis: true },
		{ title: "被注入", dataIndex: "use_count", width: 80 },
		{ title: "启用", dataIndex: "enabled", width: 70, render: v => Number(v) === 1 ? <KTg color="green">是</KTg> : <KTg>否</KTg> },
		{
			title: "操作", width: 140, render: (_, r) => (
				<KSP>
					<KB size="small" onClick={() => openEdit(r)}>编辑</KB>
					<KP title="确认删除？" onConfirm={() => del(r)}>
						<KB size="small" danger>删除</KB>
					</KP>
				</KSP>
			)
		},
	];

	return (
		<KC1
			title="行业知识库（生成时按关键词命中注入 prompt）"
			extra={
				<KSP>
					<KI placeholder="归属商品ID（空=全部，0=通用）" allowClear style={{ width: 200 }} value={pidFilter}
						onChange={e => setPidFilter(e.target.value.replace(/[^\d]/g, ""))}
						onPressEnter={() => load(1)} />
					<KI.Search placeholder="搜索行业/主题/内容" allowClear style={{ width: 220 }} onSearch={kw => load(1, kw)} />
					<KB type="primary" onClick={() => openEdit(null)}>新增知识</KB>
				</KSP>
			}
		>
			<KT
				rowKey="knowledge_id" columns={columns} dataSource={list} loading={loading}
				pagination={{ current: page, total, pageSize: 10, showTotal: t => `共 ${t} 条`, onChange: p => load(p) }}
			/>
			<KM
				title={editing ? "编辑知识" : "新增知识"} open={modalOpen}
				onOk={save} onCancel={() => setModalOpen(false)} width={640} destroyOnClose
			>
				<KF form={form} layout="vertical">
					<KF.Item name="industry" label="行业">
						<KS2 options={["通用", "装修", "餐饮", "美业", "养生", "零售", "旅行", "健身", "教育"].map(v => ({ value: v, label: v }))} />
					</KF.Item>
					<KF.Item name="topic" label="主题" rules={[{ required: true, message: "必填" }]}>
						<KI placeholder="如：小红书平台规则" />
					</KF.Item>
					<KF.Item name="content" label="内容" rules={[{ required: true, message: "必填" }]}>
						<KI.TextArea rows={5} placeholder="生成时必须遵守/参考的行业知识" />
					</KF.Item>
					<KF.Item name="keywords" label="命中关键词（逗号分隔，命中才注入；通用行业保底注入）">
						<KI placeholder="小红书,笔记,标题" />
					</KF.Item>
					<KF.Item name="source" label="来源"><KI placeholder="平台规则/行业报告/案例拆解" /></KF.Item>
					<KF.Item name="product_id" label="归属商品 ID（0=平台通用知识）">
						<KI placeholder="0" />
					</KF.Item>
					<KF.Item name="enabled" label="启用" valuePropName="checked"><KW /></KF.Item>
				</KF>
			</KM>
		</KC1>
	);
};
