feat(knowledge): SERS 教程、四季防控提醒、「其它/未知」病种种子数据

This commit is contained in:
weijuesen
2026-08-12 15:51:30 +08:00
parent 5c688b9a80
commit a5caa480c1
2 changed files with 93 additions and 0 deletions
@@ -130,6 +130,21 @@ var SeedDiseases = []Disease{
Detection: "按死蚕孢子颜色肉眼初步区分",
Prevention: "与白僵病防控一致:加强通风排湿(湿度>75%重点防范);小蚕期注意蚕座卫生防曲霉病;蚕房周边昆虫防治与桑园害虫治理",
},
{
Name: "其它/未知(不确定但有异常)", Category: "other", SortOrder: 10,
Pathogen: "不确定——AI 检出异常但无法归入已知病种",
Transmission: "视最终确诊病种而定",
Medium: "—",
Incubation: "—",
Symptoms: "AI 巡检发现异常但无法归入已知病种(体色、行动、体型等异常)",
HighRiskStage: "—",
HighRiskCondition: "—",
LethalTime: "—",
SpreadTrend: "—",
Recurrence: "—",
Detection: "建议进一步做分子检测(LAMP/qPCR)确认病原",
Prevention: "立即隔离异常个体并加强观察;结合环境数据排查(温湿度、密度、通风);尽快安排 LAMP/qPCR 检测确认,确诊前避免与健康群混养",
},
}
// SeedKnowledgeArticles 知识文章种子数据(AI 结果解读,分级阈值来自规格书 3.1.4)
@@ -148,4 +163,39 @@ var SeedKnowledgeArticles = []KnowledgeArticle{
Content: "【原理】\n利用 4-6 条特异性引物和 Bst DNA 聚合酶,在 60-65℃ 恒温条件下扩增病原 DNA 特定片段,反应产物通过 HNB 显色剂实现肉眼可视化判读(天蓝色=阳性,紫罗兰色=阴性)。\n\n【适用场景】\n乡镇蚕桑站、基层检测点。设备投入低、操作经培训可掌握,是目前蚕业领域最务实的分子检测方案。\n\n【设备清单】\n1. 恒温水浴锅/恒温金属浴:提供 60-65℃ 恒温环境,参考价 500-2000 元\n2. 微量移液器(1-1000μL):精确加样,参考价 300-1000 元/套\n3. 小型离心机:短暂离心,参考价 300-800 元\n\n【操作流程】\n第 1 步 采样(约 2 分钟):针刺蚕腹脚取血 5-10μL,标记对应蚕体编号。\n第 2 步 DNA 提取(10-30 分钟):碱裂解法——NaOH 裂解→75℃ 加热 5-10 分钟→中和;简化法无需离心。\n第 3 步 反应体系配制(约 5 分钟):加引物、酶、dNTP、缓冲液、HNB、模板 DNA 到 PCR 管;冰上操作,或使用预混试剂盒。\n第 4 步 恒温反应(30-60 分钟):63-65℃ 恒温水浴,确保温度稳定。\n第 5 步 结果判读(即时):观察管内颜色,天蓝=阳性,紫罗兰=阴性;拍照上传系统辅助记录。\n\n【各病种检测靶标现状】\n- 核型多角体病(BmNPV):polh 基因,2013 年建立、2017 年可视化改进,已有引物序列\n- 白僵病:白僵菌特异性基因,需设计引物验证\n- 微粒子病:微孢子虫特异性基因,可参考文献设计\n- 软化病:致病菌 16S rRNA,需设计引物验证",
SortOrder: 2,
},
{
Kind: "sers_guide",
Title: "SERS 拉曼光谱检测操作流程",
Summary: "县级检测中心分子检测教程:原理、设备清单、4 步操作流程与结果判读",
Content: "【原理】\n将样本滴加到 SERS 芯片(表面有金/银纳米结构的基底)上,手持拉曼光谱仪发射激光照射,拉曼散射信号被纳米结构增强 10^6~10^8 倍,仪器自动采集光谱并与数据库比对,给出分子级别的识别结果。\n\n【适用场景】\n有设备条件的县级蚕桑站或检测中心。操作最简便(点样→按键→读取)、出结果最快(约 3 分钟),但设备投入较高,且蚕病领域暂无现成光谱数据库需从零建立。\n\n【设备清单】\n1. 手持式拉曼光谱仪(国产):激光发射 + 光谱采集 + 数据库比对,参考价 8-15 万元\n2. SERS 芯片(预制金/银纳米基底):信号增强,一次性使用,参考价 10-30 元/片\n\n【操作流程】\n第 1 步 采样(约 30 秒):取蚕血 5-10μL 或体表棉签擦拭取样;无需 DNA 提取。\n第 2 步 点样(约 10 秒):将样本滴到 SERS 芯片表面;芯片需密封保存,常温可用。\n第 3 步 检测(1-2 分钟):手持拉曼光谱仪对准芯片,按键采集光谱;仪器自动采集,无需人工调节。\n第 4 步 结果判读(即时):仪器屏幕/APP 显示光谱匹配结果;自动比对数据库,无需人工解读。\n\n【与 LAMP 对比】\n优势:无需 DNA 提取与扩增、增加病种只需更新光谱数据库、操作更简便、出结果更快(约 3 分钟 vs 50-100 分钟)。\n不足:设备投入高(8-15 万 vs <3000 元)、蚕病领域光谱数据库空白、复杂样本(蚕血)灵敏度待验证。",
SortOrder: 3,
},
{
Kind: "seasonal_tip",
Title: "春季防控要点",
Summary: "春蚕期:核型多角体病较多发,注意温度突变与饲养密度",
Content: "春蚕期核型多角体病较多发(5 龄后期至蛹期尤甚)。\n防控要点:\n1. 保持温湿度稳定,避免温度突变(>30℃ 或 <20℃)诱发潜伏感染转急性;\n2. 控制饲养密度,密集饲养会加大相互抓伤与传播风险;\n3. 上批次发病的蚕房必须升级消毒(含蚕具浸泡),多角体环境可存活 2-3 年。",
SortOrder: 1,
},
{
Kind: "seasonal_tip",
Title: "夏季防控要点",
Summary: "夏秋蚕期高温闷热:质型多角体病、浓核病/软化病多发,高温高湿季真菌病暴发",
Content: "夏秋蚕期质型多角体病、浓核病/软化病多发(高温闷热);高温高湿季真菌病(白僵病等)暴发,湿度>75% 是孢子萌发关键条件。\n防控要点:\n1. 加强通风降温排湿,湿度持续 >75% 时重点防范真菌病;\n2. 及时清除病蚕与蚕座污染物,质型多角体病粪便持续排毒污染蚕座;\n3. 桑叶来源批次追溯,排查桑园害虫粪便污染(浓核病/软化病传染源);\n4. 控制蚕头密度、避免桑叶潮湿,防止软化病 5 龄集中暴发。",
SortOrder: 2,
},
{
Kind: "seasonal_tip",
Title: "秋季防控要点",
Summary: "秋蚕期:质型多角体病、浓核病/软化病仍多发,注意桑叶储运与害虫防治",
Content: "秋蚕期质型多角体病、浓核病/软化病仍多发。\n防控要点:\n1. 桑叶来源批次追溯(哪个桑园、哪天采摘),核查桑园近期害虫防治记录;\n2. 保证桑叶储运条件,避免污染与潮湿;\n3. 及时清除病蚕与蚕座污染物,防止粪便持续排毒;\n4. 识别混合感染(浓核病常与质型多角体病混合),必要时分子检测确认。",
SortOrder: 3,
},
{
Kind: "seasonal_tip",
Title: "冬季防控要点",
Summary: "非养蚕期:重点做环境消毒与蚕具清理,切断跨批次反复发病链条",
Content: "冬季/非养蚕期是切断病原残留链条的关键窗口。\n防控要点:\n1. 对蚕房、蚕具彻底消毒(含蚕具浸泡),多角体在环境中可存活 2-3 年;\n2. 真菌孢子具兼性腐生能力,注意清理蚕沙、残留物并通风防潮;\n3. 消毒后记录范围与药剂,为溯源提供依据;不彻底消毒易陷入“消毒→残留→复发”循环。",
SortOrder: 4,
},
}
@@ -59,3 +59,46 @@ func TestSeedKnowledgeArticlesHasLAMPGuid(t *testing.T) {
t.Error("缺少 LAMP 操作教程文章(kind=lamp_guide")
}
}
func TestSeedKnowledgeArticlesHasSERSGuide(t *testing.T) {
found := false
for _, a := range SeedKnowledgeArticles {
if a.Kind == "sers_guide" && a.Title != "" && a.Content != "" {
found = true
}
}
if !found {
t.Error("缺少 SERS 操作教程文章(kind=sers_guide")
}
}
func TestSeedKnowledgeArticlesHasSeasonalTips(t *testing.T) {
seasons := map[string]bool{}
for _, a := range SeedKnowledgeArticles {
if a.Kind != "seasonal_tip" || a.Content == "" {
continue
}
for _, s := range []string{"春季", "夏季", "秋季", "冬季"} {
if len(a.Title) >= len(s) && a.Title[:len(s)] == s {
seasons[s] = true
}
}
}
for _, s := range []string{"春季", "夏季", "秋季", "冬季"} {
if !seasons[s] {
t.Errorf("缺少季节防控提醒文章: %s", s)
}
}
}
func TestSeedDiseasesHasUnknownCategory(t *testing.T) {
found := false
for _, d := range SeedDiseases {
if d.Category == "other" && d.Name != "" {
found = true
}
}
if !found {
t.Error("缺少「其它/未知」类别的病种条目")
}
}