Browse Source

Merge remote changes into cfclub; resolve conflicts in DatabaseInitializer, schema.sql, report-list, package.json

openhands 3 months ago
parent
commit
88c864e759
84 changed files with 21145 additions and 8458 deletions
  1. 2 0
      .gitignore
  2. 753 0
      cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java
  3. 5 1
      cfc-backend/src/main/java/com/etotem/cfc/config/WebConfig.java
  4. 97 2
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthKnowledgeBaseController.java
  5. 21 0
      cfc-backend/src/main/java/com/etotem/cfc/controller/HealthReportController.java
  6. 8 4
      cfc-backend/src/main/java/com/etotem/cfc/controller/MarketController.java
  7. 5 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/PackagePaymentController.java
  8. 53 0
      cfc-backend/src/main/java/com/etotem/cfc/controller/ReviewController.java
  9. 27 18
      cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminArticleController.java
  10. 1 1
      cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentReportController.java
  11. 9 4
      cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindController.java
  12. 10 3
      cfc-backend/src/main/java/com/etotem/cfc/controller/mind/MindFortuneController.java
  13. 21 6
      cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductOrderController.java
  14. 21 0
      cfc-backend/src/main/java/com/etotem/cfc/dto/ParsedReportPayload.java
  15. 14 0
      cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewOrderRequest.java
  16. 16 0
      cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewOrderResponse.java
  17. 20 0
      cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewStatusResponse.java
  18. 24 0
      cfc-backend/src/main/java/com/etotem/cfc/dto/TaskParseResult.java
  19. 0 3
      cfc-backend/src/main/java/com/etotem/cfc/entity/ActivityProvision.java
  20. 6 0
      cfc-backend/src/main/java/com/etotem/cfc/entity/DanReportUpload.java
  21. 6 0
      cfc-backend/src/main/java/com/etotem/cfc/entity/GrowthTask.java
  22. 16 0
      cfc-backend/src/main/java/com/etotem/cfc/entity/HealthGutFlora.java
  23. 5 1
      cfc-backend/src/main/java/com/etotem/cfc/entity/ProductOrder.java
  24. 28 0
      cfc-backend/src/main/java/com/etotem/cfc/entity/ReviewOrder.java
  25. 16 0
      cfc-backend/src/main/java/com/etotem/cfc/mapper/ReviewOrderMapper.java
  26. 1099 2
      cfc-backend/src/main/java/com/etotem/cfc/service/DanReportParseService.java
  27. 6 3
      cfc-backend/src/main/java/com/etotem/cfc/service/DanReportUploadService.java
  28. 2 0
      cfc-backend/src/main/java/com/etotem/cfc/service/DimensionEnergySyncService.java
  29. 54 21
      cfc-backend/src/main/java/com/etotem/cfc/service/FileStorageService.java
  30. 20 0
      cfc-backend/src/main/java/com/etotem/cfc/service/HealthKnowledgeBaseService.java
  31. 20 9
      cfc-backend/src/main/java/com/etotem/cfc/service/HealthReportService.java
  32. 280 0
      cfc-backend/src/main/java/com/etotem/cfc/service/KnowledgeBaseV3Service.java
  33. 16 0
      cfc-backend/src/main/java/com/etotem/cfc/service/ReviewOrderService.java
  34. 114 0
      cfc-backend/src/main/java/com/etotem/cfc/service/ReviewOrderServiceImpl.java
  35. 73 0
      cfc-backend/src/main/java/com/etotem/cfc/service/TaskParseService.java
  36. 1 0
      cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java
  37. 4 0
      cfc-backend/src/main/resources/application.yml
  38. 4314 0
      cfc-backend/src/main/resources/knowledge-base/报告指标知识库.json
  39. 23 0
      cfc-backend/src/main/resources/mapper/ReviewOrderMapper.xml
  40. 239 6
      cfc-backend/src/main/resources/schema.sql
  41. 14 5
      cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java
  42. 533 0
      cfc-backend/src/test/java/com/etotem/cfc/service/DanReportParseServiceTest.java
  43. 157 0
      cfc-frontend/components/feedback-popup.vue
  44. 60 66
      cfc-frontend/manifest.json
  45. 12 0
      cfc-frontend/pages.json
  46. 138 4
      cfc-frontend/pages/dan-assessment/report-upload.vue
  47. 96 2
      cfc-frontend/pages/health/gut-flora-detail.vue
  48. 37 5
      cfc-frontend/pages/health/gut-flora-foods-detail.vue
  49. 24 1
      cfc-frontend/pages/health/gut-flora-risks-detail.vue
  50. 67 11
      cfc-frontend/pages/health/gut-flora-species-detail.vue
  51. 326 0
      cfc-frontend/pages/health/physical-exam-detail.vue
  52. 9 7
      cfc-frontend/pages/health/report-list.vue
  53. 456 45
      cfc-frontend/pages/health/report-survey.vue
  54. 150 14
      cfc-frontend/pages/health/report-upload.vue
  55. 30 0
      cfc-frontend/utils/api.js
  56. 1 1
      cfc-web/.env.production.example
  57. 1 1
      cfc-web/.last_build_commit
  58. 2 2
      cfc-web/package-lock.json
  59. 1 1
      cfc-web/package.json
  60. 233 40
      cfc-web/public/CHANGELOG-v1.0.md
  61. 234 41
      cfc-web/public/CHANGELOG.md
  62. BIN
      cfc-web/public/logo.png
  63. 29 29
      cfc-web/src/api/admin.js
  64. 6 0
      cfc-web/src/router/index.js
  65. 9 3
      cfc-web/src/views/Layout.vue
  66. 4 3
      cfc-web/src/views/Login.vue
  67. 8 5
      cfc-web/src/views/admin/MembershipCenter.vue
  68. 11 10
      cfc-web/src/views/admin/ProductEdit.vue
  69. 2 2
      cfc-web/src/views/admin/components/ProductSkuEditor.vue
  70. 148 0
      cfc-web/src/views/admin/health-knowledge.vue
  71. 178 0
      docs/superpowers/specs/2026-07-19-knowledge-base-v3-data-refactor.md
  72. 938 558
      docs/参考资料/501999942-某人.json
  73. 860 538
      docs/参考资料/530010234-侯.json
  74. 1566 3478
      docs/参考资料/547982403.json
  75. 631 36
      docs/参考资料/extract_full_report_v5.py
  76. 42 594
      docs/参考资料/儿童示例.json
  77. 290 0
      docs/参考资料/字段拆分清单.md
  78. 0 225
      docs/参考资料/推荐指数汇总.csv
  79. 898 2646
      docs/参考资料/朱评估报告.json
  80. 4314 0
      docs/参考资料/知识库/报告指标知识库.json
  81. 158 0
      docs/参考资料/知识库/报告指标知识库.md
  82. 388 0
      docs/实现计划.md
  83. 409 0
      docs/数据与AI结合技术方案.md
  84. 226 0
      omo/plans/migration-python-to-java-report-parsing.md

+ 2 - 0
.gitignore

@@ -23,6 +23,7 @@ Thumbs.db
 *.local
 .env.local
 .env.*.local
+.env.production
 
 # Test artifacts
 .playwright-mcp/
@@ -46,6 +47,7 @@ worktrees/
 !cfc-frontend/static/*.png
 *.png
 !docs/**/*.png
+!cfc-web/public/logo.png
 
 # Python
 *.py

+ 753 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -5286,6 +5286,759 @@ try {
         } catch (Exception e) {
             log.warn("创建dimension_weights表失败: {}", e.getMessage());
         }
+}
+
+// 迁移84: cart表添加skuId和specOptionIds字段(支持SKU选择)
+        ensureColumn("cart", "sku_id", "BIGINT COMMENT '选中的SKU ID'");
+        ensureColumn("cart", "spec_option_ids", "VARCHAR(500) COMMENT '选中的规格选项IDs JSON'");
+
+        // 迁移86: product_orders表添加purchase_info字段(购买信息快照JSON,OrderTimeoutCancelTask查询需要)
+        ensureColumn("product_orders", "purchase_info", "TEXT COMMENT '购买信息JSON: {id_card, hand_signature, ...}'");
+
+        // 迁移87: articles表添加content_type/difficulty_level/dimension_ids/dimension_weights字段
+        ensureColumn("articles", "content_type", "VARCHAR(20) DEFAULT 'text' COMMENT '内容格式:text/html/markdown'");
+        ensureColumn("articles", "difficulty_level", "INT DEFAULT 0 COMMENT '难度等级:1-5'");
+        ensureColumn("articles", "dimension_ids", "VARCHAR(100) DEFAULT '' COMMENT '关联维度IDs JSON'");
+        ensureColumn("articles", "dimension_weights", "TEXT COMMENT '五维能量权重JSON'");
+
+        // 迁移88: activities表添加dimension_weights列(权重感知活动查询)
+        ensureColumn("activities", "dimension_weights", "TEXT COMMENT '五维能量权重JSON'");
+
+        // 迁移89: products表添加dimension_weights列(权重感知商品查询)
+        ensureColumn("products", "dimension_weights", "TEXT COMMENT '五维能量权重JSON'");
+
+        // 迁移85: 创建社交圈子表(珍珠图/圈子系统)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS social_circle (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "name VARCHAR(100) NOT NULL COMMENT '圈子名称', " +
+                    "type VARCHAR(50) NOT NULL COMMENT '类型: topic/activity/hobby/ability/product/health/provider', " +
+                    "match_source VARCHAR(50) NOT NULL COMMENT '匹配源', " +
+                    "source_id BIGINT COMMENT '匹配源ID', " +
+                    "member_count INT DEFAULT 0 COMMENT '成员数', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='社交圈/珍珠'");
+            log.info("已创建social_circle表");
+        } catch (Exception e) { /* 表已存在忽略 */ }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS social_circle_member (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "circle_id BIGINT NOT NULL, " +
+                    "member_id BIGINT NOT NULL COMMENT '用户ID', " +
+                    "member_type VARCHAR(20) NOT NULL COMMENT 'parent/child', " +
+                    "joined_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY uk_circle_member (circle_id, member_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='圈子成员'");
+            log.info("已创建social_circle_member表");
+        } catch (Exception e) { /* 表已存在忽略 */ }
+
+        // 迁移89: relationship_types表添加分类和血亲字段
+        ensureColumn("relationship_types", "category", "VARCHAR(50) DEFAULT 'social' COMMENT '关系分类: blood血亲/marriage姻亲/social社会关系'");
+        ensureColumn("relationship_types", "is_blood_relation", "TINYINT DEFAULT 0 COMMENT '是否血亲关系: 1是0否'");
+        ensureColumn("relationship_types", "is_immediate_family", "TINYINT DEFAULT 0 COMMENT '是否直系亲属: 1是0否'");
+    }
+
+    private void runMigration82() {
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS ai_conversation_summary (" +
+                "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                "user_id BIGINT NOT NULL COMMENT '用户ID', " +
+                "conversation_id VARCHAR(100) NOT NULL COMMENT 'Dify会话ID', " +
+                "summary_text TEXT COMMENT '对话摘要文本', " +
+                "summary_tokens INT DEFAULT 0 COMMENT '摘要token数', " +
+                "message_count INT DEFAULT 0 COMMENT '本次对话消息数', " +
+                "created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', " +
+                "INDEX idx_conversation (conversation_id), " +
+                "INDEX idx_user (user_id)" +
+            ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI对话摘要'");
+            log.info("已创建ai_conversation_summary表");
+        } catch (Exception e) {
+            log.warn("创建ai_conversation_summary表失败: {}", e.getMessage());
+        }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS ai_user_facts (" +
+                "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                "user_id BIGINT NOT NULL COMMENT '用户ID', " +
+                "fact_key VARCHAR(100) NOT NULL COMMENT '事实键', " +
+                "fact_value VARCHAR(500) COMMENT '事实值', " +
+                "source_conversation VARCHAR(100) COMMENT '来源会话ID', " +
+                "confidence DECIMAL(3,2) DEFAULT 1.00 COMMENT '置信度0-1', " +
+                "created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', " +
+                "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', " +
+                "INDEX idx_user_key (user_id, fact_key), " +
+                "INDEX idx_conversation (source_conversation)" +
+            ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI用户关键事实'");
+            log.info("已创建ai_user_facts表");
+        } catch (Exception e) {
+            log.warn("创建ai_user_facts表失败: {}", e.getMessage());
+        }
+    }
+
+    private void runMigration86() {
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_hierarchy (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "system_id BIGINT NOT NULL COMMENT '供应商体系ID', " +
+                    "parent_id BIGINT NOT NULL COMMENT '上级供应商ID', " +
+                    "child_id BIGINT NOT NULL COMMENT '下级供应商ID', " +
+                    "level INT DEFAULT 1 COMMENT '层级深度', " +
+                    "status VARCHAR(20) DEFAULT 'active', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY uk_system_parent_child (system_id, parent_id, child_id), " +
+                    "KEY idx_system_child (system_id, child_id), " +
+                    "KEY idx_parent (parent_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商上下级关系表'");
+            log.info("已创建supply_hierarchy表");
+        } catch (Exception e) {
+            log.warn("创建supply_hierarchy表失败: {}", e.getMessage());
+        }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_hierarchy_change_request (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "system_id BIGINT NOT NULL, " +
+                    "applicant_id BIGINT NOT NULL COMMENT '申请人ID', " +
+                    "target_parent_id BIGINT NOT NULL COMMENT '目标上级ID', " +
+                    "status VARCHAR(20) DEFAULT 'pending', " +
+                    "reason VARCHAR(500), " +
+                    "reject_reason VARCHAR(500), " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "reviewed_at DATETIME, " +
+                    "reviewed_by BIGINT, " +
+                    "KEY idx_system_applicant (system_id, applicant_id), " +
+                    "KEY idx_status (status)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商更换上级申请表'");
+            log.info("已创建supply_hierarchy_change_request表");
+        } catch (Exception e) {
+            log.warn("创建supply_hierarchy_change_request表失败: {}", e.getMessage());
+        }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS butler_profiles (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "user_id BIGINT NOT NULL, " +
+                    "tier VARCHAR(10), " +
+                    "status VARCHAR(20) DEFAULT 'pending', " +
+                    "member_count INT DEFAULT 0, " +
+                    "max_members INT DEFAULT 50, " +
+                    "annual_fee_l1 BIGINT, " +
+                    "annual_fee_l2 BIGINT, " +
+                    "description TEXT, " +
+                    "certificates TEXT, " +
+                    "reject_reason VARCHAR(500), " +
+                    "commission_rate_l1 INT DEFAULT 1000, " +
+                    "commission_rate_l2 INT DEFAULT 5000, " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "approved_at DATETIME, " +
+                    "UNIQUE KEY uk_user_id (user_id), " +
+                    "INDEX idx_status (status), " +
+                    "INDEX idx_tier (tier)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家服务提供商档案'");
+            log.info("已创建butler_profiles表");
+        } catch (Exception e) {
+            log.warn("创建butler_profiles表失败: {}", e.getMessage());
+        }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS butler_service_records (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "butler_id BIGINT NOT NULL, " +
+                    "member_user_id BIGINT NOT NULL, " +
+                    "subscription_id BIGINT, " +
+                    "service_type VARCHAR(20) NOT NULL, " +
+                    "amount_p BIGINT NOT NULL, " +
+                    "platform_fee_p BIGINT DEFAULT 0, " +
+                    "butler_amount_p BIGINT DEFAULT 0, " +
+                    "member_tier VARCHAR(10), " +
+                    "year_month VARCHAR(7), " +
+                    "remark VARCHAR(500), " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_butler_id (butler_id), " +
+                    "INDEX idx_member_user_id (member_user_id), " +
+                    "INDEX idx_year_month (year_month)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家服务记录'");
+            log.info("已创建butler_service_records表");
+        } catch (Exception e) {
+            log.warn("创建butler_service_records表失败: {}", e.getMessage());
+        }
+
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS butler_commission_settlements (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "butler_id BIGINT NOT NULL, " +
+                    "year_month VARCHAR(7) NOT NULL, " +
+                    "member_count INT DEFAULT 0, " +
+                    "annual_base_amount_p BIGINT DEFAULT 0, " +
+                    "annual_butler_amount_p BIGINT DEFAULT 0, " +
+                    "annual_platform_amount_p BIGINT DEFAULT 0, " +
+                    "per_session_total_p BIGINT DEFAULT 0, " +
+                    "per_session_platform_total_p BIGINT DEFAULT 0, " +
+                    "per_session_butler_total_p BIGINT DEFAULT 0, " +
+                    "total_butler_amount_p BIGINT DEFAULT 0, " +
+                    "status VARCHAR(20) DEFAULT 'pending', " +
+                    "settled_at DATETIME, " +
+                    "settled_by BIGINT, " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY uk_butler_month (butler_id, year_month), " +
+                    "INDEX idx_status (status), " +
+                    "INDEX idx_year_month (year_month)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家月度佣金结算单'");
+            log.info("已创建butler_commission_settlements表");
+        } catch (Exception e) {
+            log.warn("创建butler_commission_settlements表失败: {}", e.getMessage());
+        }
+
+try {
+            jdbcTemplate.execute("ALTER TABLE users ADD COLUMN butler_status VARCHAR(20)");
+            jdbcTemplate.execute("ALTER TABLE users ADD COLUMN butler_info TEXT");
+            jdbcTemplate.execute("ALTER TABLE users ADD COLUMN butler_approved_at DATETIME");
+            log.info("已添加 butler 相关列到 users 表");
+        } catch (Exception e) {
+            log.warn("Migration skipped (already exists): {}", e.getMessage());
+        }
+
+        // 迁移 86: 创建 butler_assignments 表(会员 - 管家分配记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS butler_assignments (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL COMMENT '家庭 ID', " +
+                    "butler_user_id BIGINT NOT NULL COMMENT '管家用户 ID', " +
+                    "subscription_id BIGINT COMMENT '关联订阅 ID', " +
+                    "level VARCHAR(10) NOT NULL COMMENT '订阅级别 L1/L2', " +
+                    "assigned_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY uk_family_assignment (family_id), " +
+                    "INDEX idx_butler_user_id (butler_user_id), " +
+                    "INDEX idx_subscription_id (subscription_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员 - 管家分配记录'");
+            log.info("已创建 butler_assignments 表");
+        } catch (Exception e) {
+            log.warn("创建 butler_assignments 表失败:{}", e.getMessage());
+        }
+    }
+
+    private void runMigration88() {
+        // 迁移 88: 创建家庭公共账户体系(family_earnings / family_earnings_member / family_earnings_record)
+        // 表 1: family_earnings(家庭总账)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS family_earnings (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL UNIQUE COMMENT '家庭 ID', " +
+                    "total_earned BIGINT NOT NULL DEFAULT 0 COMMENT '累计推荐收入(分)', " +
+                    "available_amount BIGINT NOT NULL DEFAULT 0 COMMENT '当前可支配余额(分)', " +
+                    "withdrawn_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已提现金额(分)', " +
+                    "distributed_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已颁发给成员的金额(分)', " +
+                    "updated_at DATETIME, " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_family_id (family_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭公共账户'");
+            log.info("已创建 family_earnings 表");
+        } catch (Exception e) {
+            log.warn("创建 family_earnings 表失败:{}", e.getMessage());
+        }
+
+        // 表 2: family_earnings_member(成员已分配余额)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS family_earnings_member (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL, " +
+                    "user_id BIGINT NOT NULL, " +
+                    "allocated_amount BIGINT NOT NULL DEFAULT 0 COMMENT '管理员累计分配(分)', " +
+                    "consumed_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已消费金额(分)', " +
+                    "available_amount BIGINT NOT NULL DEFAULT 0 COMMENT '可消费余额=allocated-consumed(分)', " +
+                    "can_use_family_balance TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否允许使用家庭公共池', " +
+                    "updated_at DATETIME, " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY idx_family_user (family_id, user_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭成员已分配余额'");
+            log.info("已创建 family_earnings_member 表");
+        } catch (Exception e) {
+            log.warn("创建 family_earnings_member 表失败:{}", e.getMessage());
+        }
+
+        // 表 3: family_earnings_record(收支流水)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS family_earnings_record (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL, " +
+                    "type VARCHAR(20) NOT NULL COMMENT 'earn 收入/withdraw 提现/distribute 颁发/consume 消费', " +
+                    "amount BIGINT NOT NULL COMMENT '金额(分)', " +
+                    "from_user_id BIGINT COMMENT '操作人', " +
+                    "to_user_id BIGINT COMMENT '受益人(颁发/消费时填写)', " +
+                    "note VARCHAR(255) COMMENT '备注', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_family_id (family_id), " +
+                    "INDEX idx_type (type)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭收益收支流水'");
+            log.info("已创建 family_earnings_record 表");
+        } catch (Exception e) {
+            log.warn("创建 family_earnings_record 表失败:{}", e.getMessage());
+        }
+
+        // commission_records 加 family_id 列
+        ensureColumn("commission_records", "family_id", "BIGINT COMMENT '归属家庭 ID'");
+
+        // 迁移90: contacts表添加家庭成员关联字段(联系人→家庭成员升级路径)
+        ensureColumn("contacts", "family_member_id", "BIGINT DEFAULT NULL COMMENT '关联的家庭成员ID'");
+        ensureColumn("contacts", "invited_status", "VARCHAR(16) DEFAULT 'none' COMMENT '邀请加入家庭状态: none/invited/accepted/declined'");
+
+        // 迁移91: 创建family_member_logs表(家庭成员变更日志)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS family_member_logs (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL COMMENT '家庭ID', " +
+                    "member_id BIGINT NOT NULL COMMENT '成员ID', " +
+                    "action VARCHAR(32) NOT NULL COMMENT '操作: join/leave/update/kick', " +
+                    "old_value VARCHAR(500) COMMENT '旧值', " +
+                    "new_value VARCHAR(500) COMMENT '新值', " +
+                    "operator_id BIGINT COMMENT '操作人用户ID', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_family_id (family_id), " +
+                    "INDEX idx_member_id (member_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭成员变更日志'");
+            log.info("已创建family_member_logs表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移92: 创建health_meal_record表(饮食打卡记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_meal_record (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "member_id BIGINT NOT NULL COMMENT '家庭成员ID', " +
+                    "checkin_id BIGINT COMMENT '关联打卡ID', " +
+                    "meal_type VARCHAR(32) COMMENT '餐次: breakfast/lunch/dinner/snack', " +
+                    "food_items TEXT COMMENT '食物清单JSON', " +
+                    "total_calories INT COMMENT '总卡路里', " +
+                    "protein_g INT COMMENT '蛋白质克数', " +
+                    "fat_g INT COMMENT '脂肪克数', " +
+                    "carbs_g INT COMMENT '碳水克数', " +
+                    "fiber_g INT COMMENT '膳食纤维克数', " +
+                    "meal_time DATETIME COMMENT '用餐时间', " +
+                    "remark VARCHAR(500) COMMENT '备注', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_member_id (member_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='饮食打卡记录'");
+            log.info("已创建health_meal_record表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移93: 创建health_meditation_record表(冥想打卡记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_meditation_record (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "member_id BIGINT NOT NULL COMMENT '家庭成员ID', " +
+                    "checkin_id BIGINT COMMENT '关联打卡ID', " +
+                    "duration_minutes INT COMMENT '时长(分钟)', " +
+                    "type VARCHAR(32) COMMENT '类型: mindfulness/guided/breathing/body_scan', " +
+                    "mood VARCHAR(32) COMMENT '冥想后心情', " +
+                    "remark VARCHAR(500) COMMENT '备注', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "INDEX idx_member_id (member_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='冥想打卡记录'");
+            log.info("已创建health_meditation_record表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移94: 创建ecom_supplier表(电商供应商管理)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS ecom_supplier (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "name VARCHAR(100) NOT NULL COMMENT '供应商名称', " +
+                    "contact_name VARCHAR(50) COMMENT '联系人', " +
+                    "contact_phone VARCHAR(20) COMMENT '联系电话', " +
+                    "status TINYINT DEFAULT 1 COMMENT '启用状态 1启用 0禁用', " +
+                    "remark VARCHAR(500) COMMENT '备注', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电商供应商'");
+            log.info("已创建ecom_supplier表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移95: 创建rebate_commission_config表(佣金返利配置)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS rebate_commission_config (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "name VARCHAR(100) NOT NULL COMMENT '配置名称', " +
+                    "rate INT COMMENT '佣金比例(万分比)', " +
+                    "rate_type TINYINT DEFAULT 1 COMMENT '比例类型 1百分比 2固定金额', " +
+                    "min_amount INT COMMENT '最低金额(分)', " +
+                    "max_amount INT COMMENT '最高金额(分)', " +
+                    "remark VARCHAR(500) COMMENT '备注', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='佣金返利配置'");
+            log.info("已创建rebate_commission_config表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+    }
+
+    private void runMigration89() {
+        // 迁移 89: supply_system表添加models字段(AI模型供应商配置)
+        ensureColumn("supply_system", "models", "TEXT COMMENT 'AI模型列表JSON,如[\"agnes-image-2.0-flash\",\"agnes-2.5-flash\"]'");
+        log.info("已添加models列到supply_system表");
+    }
+
+    private void runMigration90() {
+        // 迁移 90: supply_system表添加api_endpoint和api_key字段
+        ensureColumn("supply_system", "api_endpoint", "VARCHAR(512) COMMENT 'API端点'");
+        ensureColumn("supply_system", "api_key", "VARCHAR(256) COMMENT 'API密钥'");
+        log.info("已添加api_endpoint和api_key列到supply_system表");
+    }
+
+    private void runMigration91() {
+        // 迁移 91: users表添加营养师审核字段
+        ensureColumn("users", "nutritionist_status", "VARCHAR(20) DEFAULT NULL COMMENT '营养师审核状态: pending/approved/rejected'");
+        ensureColumn("users", "nutritionist_reject_reason", "VARCHAR(500) DEFAULT NULL COMMENT '营养师审核拒绝原因'");
+        log.info("已添加nutritionist_status和nutritionist_reject_reason列到users表");
+    }
+
+    private void runMigration92() {
+        // 迁移 92: 创建dan_assessment_executions表(DAN测评服务执行记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `dan_assessment_executions` (" +
+                    "`id` BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "`assessment_execution_id` BIGINT NOT NULL COMMENT '执行记录ID', " +
+                    "`assessment_order_id` BIGINT NOT NULL COMMENT '订单ID', " +
+                    "`child_id` BIGINT NOT NULL COMMENT '孩子ID', " +
+                    "`family_id` BIGINT NOT NULL COMMENT '家庭ID', " +
+                    "`quota_id` BIGINT COMMENT '额度ID', " +
+                    "`assessor_id` BIGINT NOT NULL COMMENT '测评师userId', " +
+                    "`assessor_status` ENUM('pending','completed','rejected') DEFAULT 'pending' COMMENT '测评师状态', " +
+                    "`assessor_completed_at` DATETIME COMMENT '测评师完成时间', " +
+                    "`assessor_notes` VARCHAR(200) COMMENT '测评摘要/服务备注', " +
+                    "`planner_id` BIGINT COMMENT '规划师userId', " +
+                    "`planner_status` ENUM('pending','completed','rejected') DEFAULT 'pending' COMMENT '规划师状态', " +
+                    "`planner_completed_at` DATETIME COMMENT '规划师完成时间', " +
+                    "`planner_notes` VARCHAR(200) COMMENT '规划服务备注', " +
+                    "`user_confirmed` TINYINT(1) DEFAULT 0 COMMENT '用户确认:0未确认,1已确认', " +
+                    "`user_confirmed_at` DATETIME COMMENT '用户确认时间', " +
+                    "`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "KEY `idx_assessment_execution_id` (`assessment_execution_id`), " +
+                    "KEY `idx_assessment_order_id` (`assessment_order_id`), " +
+                    "KEY `idx_assessor_id` (`assessor_id`), " +
+                    "KEY `idx_planner_id` (`planner_id`), " +
+                    "KEY `idx_child_id` (`child_id`), " +
+                    "KEY `idx_family_id` (`family_id`)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DAN测评服务执行记录'");
+            log.info("已创建dan_assessment_executions表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移 92: 创建service_ratings表(服务评分记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `service_ratings` (" +
+                    "`id` BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "`execution_id` BIGINT NOT NULL COMMENT '执行记录ID', " +
+                    "`assessment_order_id` BIGINT NOT NULL COMMENT '订单ID', " +
+                    "`user_id` BIGINT NOT NULL COMMENT '评分用户ID', " +
+                    "`assessor_id` BIGINT NOT NULL COMMENT '测评师userId', " +
+                    "`assessor_rating` TINYINT DEFAULT 0 COMMENT '测评师评分 1-5', " +
+                    "`assessor_comment` VARCHAR(500) COMMENT '评价内容', " +
+                    "`planner_id` BIGINT COMMENT '规划师userId', " +
+                    "`planner_rating` TINYINT COMMENT '规划师评分 1-5', " +
+                    "`planner_comment` VARCHAR(500) COMMENT '评价内容', " +
+                    "`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY `uniq_execution_user` (`execution_id`, `user_id`)," +
+                    "KEY `idx_assessor_id` (`assessor_id`)," +
+                    "KEY `idx_planner_id` (`planner_id`)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评分记录'");
+            log.info("已创建service_ratings表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
 
+        // 迁移 92: 创建service_settlements表(服务结算记录)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `service_settlements` (" +
+                    "`id` BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "`execution_id` BIGINT NOT NULL COMMENT '执行记录ID', " +
+                    "`assessment_order_id` BIGINT NOT NULL COMMENT '订单ID', " +
+                    "`provider_id` BIGINT NOT NULL COMMENT '服务提供方userId', " +
+                    "`provider_type` ENUM('assessor','planner') NOT NULL COMMENT '服务方类型', " +
+                    "`service_fee` BIGINT DEFAULT 0 COMMENT '服务费用(分)', " +
+                    "`commission_rate` INT COMMENT '佣金比例(bps)', " +
+                    "`commission_amount` BIGINT DEFAULT 0 COMMENT '结算金额(分)', " +
+                    "`status` ENUM('pending','settled','failed') DEFAULT 'pending' COMMENT '结算状态', " +
+                    "`settled_at` DATETIME COMMENT '结算时间', " +
+                    "`transaction_id` VARCHAR(100) COMMENT '转账交易ID', " +
+                    "`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "KEY `idx_execution_id` (`execution_id`), " +
+                    "KEY `idx_provider_id` (`provider_id`), " +
+                    "KEY `idx_status` (`status`)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务结算记录'");
+            log.info("已创建service_settlements表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移 96: product_orders 添加活动provision字段 + activity_provisions 表(活动商品统一管理)
+        try {
+            jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN activity_id BIGINT DEFAULT NULL COMMENT '关联活动ID(product_type=activity时有效)'");
+            log.info("已添加activity_id列到product_orders表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
+        }
+        try {
+            jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN provision_status VARCHAR(32) DEFAULT NULL COMMENT '活动provision状态: unprovisioned(待审核)/provisioned(已发货)/signed_in(已签到)/completed(已完成)/cancelled(审核拒绝)'");
+            log.info("已添加provision_status列到product_orders表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
+        }
+        try {
+            jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN auditor_id BIGINT DEFAULT NULL COMMENT '审核人ID'");
+            log.info("已添加auditor_id列到product_orders表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
         }
+        try {
+            jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN audited_at DATETIME DEFAULT NULL COMMENT '审核时间'");
+            log.info("已添加audited_at列到product_orders表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
+        }
+        try {
+            jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN audit_reason TEXT DEFAULT NULL COMMENT '审核拒绝原因'");
+            log.info("已添加audit_reason列到product_orders表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
+        }
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS activity_provisions (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "order_id BIGINT NOT NULL COMMENT '商品订单ID', " +
+                    "order_no VARCHAR(64) NOT NULL COMMENT '订单编号', " +
+                    "product_id BIGINT NOT NULL COMMENT '商品ID', " +
+                    "activity_id BIGINT NOT NULL COMMENT '活动ID', " +
+                    "buyer_id BIGINT NOT NULL COMMENT '购买者用户ID', " +
+                    "family_id BIGINT COMMENT '家庭ID', " +
+                    "child_id BIGINT COMMENT '报名孩子ID(签到时填写)', " +
+                    "status VARCHAR(32) NOT NULL DEFAULT 'unprovisioned' COMMENT 'unprovisioned/provisioned/signed_in/completed/cancelled', " +
+                    "qr_code VARCHAR(512) COMMENT '签到二维码', " +
+                    "checked_in_at DATETIME COMMENT '签到时间', " +
+                    "completed_at DATETIME COMMENT '完成时间', " +
+                    "refund_amount INT COMMENT '退款金额(分)', " +
+                    "refund_at DATETIME COMMENT '退款时间', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "INDEX idx_order (order_id), " +
+                    "INDEX idx_activity (activity_id), " +
+                    "INDEX idx_buyer (buyer_id), " +
+                    "INDEX idx_status (status)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动provision记录表'");
+            log.info("已创建activity_provisions表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+
+        // 迁移 97: DAN测评服务佣金配置
+        seedDanCommissionConfig();
+
+        // 迁移 98: 创建 health_knowledge_base 表(菌群/营养知识库)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `health_knowledge_base` (" +
+                    "`id` BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "`item_type` VARCHAR(50) NOT NULL COMMENT '类型: bacteria/nutrient/indicator/vitamin/amino_acid/disease', " +
+                    "`item_name` VARCHAR(200) NOT NULL COMMENT '项目名称(精确匹配)', " +
+                    "`category` VARCHAR(100) COMMENT '分类(如 有益菌/有害菌)', " +
+                    "`normal_range` VARCHAR(200) COMMENT '正常范围参考', " +
+                    "`description` TEXT COMMENT '详细说明', " +
+                    "`suggestion` TEXT COMMENT '相关建议', " +
+                    "`source` VARCHAR(100) COMMENT '数据来源', " +
+                    "`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "UNIQUE KEY `uk_item_type_name` (`item_type`, `item_name`), " +
+                    "KEY `idx_item_type` (`item_type`)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康知识库 - 菌属/营养素/指标说明'");
+            log.info("已创建health_knowledge_base表");
+        } catch (Exception e) {
+            // 表已存在,忽略错误
+        }
+    }
+
+    private void seedDanCommissionConfig() {
+        try {
+            jdbcTemplate.execute("INSERT IGNORE INTO sys_config (config_key, config_value, description, created_at) VALUES " +
+                    "('dan_commission_rate', '10', 'DAN测评服务通用佣金比例(%)', NOW()), " +
+                    "('dan_commission_rate_assessor', '10', 'DAN测评评估师佣金比例(%)', NOW()), " +
+                    "('dan_commission_rate_planner', '10', 'DAN测评规划师佣金比例(%)', NOW())");
+            log.info("已初始化DAN测评佣金配置");
+        } catch (Exception e) {
+            log.warn("DAN佣金配置种子数据可能已存在: " + e.getMessage());
+        }
+
+        // 迁移 98: users 表添加软删除标记(@TableLogic)
+        try {
+            jdbcTemplate.execute("ALTER TABLE users ADD COLUMN deleted TINYINT DEFAULT 0 COMMENT '软删除标记: 0=未删除, 1=已删除'");
+            log.info("已添加deleted列到users表");
+        } catch (Exception e) {
+            // 列已存在,忽略错误
+        }
+    }
+
+    private void runMigration93() {
+        // 迁移 93: 创建 dan_report_uploads 表(DAN PDF报告独立化)
+        try {
+            jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS dan_report_uploads (" +
+                    "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                    "family_id BIGINT NOT NULL COMMENT '家庭ID', " +
+                    "family_member_id BIGINT NOT NULL COMMENT '家庭成员ID', " +
+                    "uploader_user_id BIGINT NOT NULL COMMENT '上传者用户ID', " +
+                    "dimension VARCHAR(16) NOT NULL COMMENT '维度: mind/wisdom', " +
+                    "report_type VARCHAR(16) COMMENT 'A2/B4', " +
+                    "file_url VARCHAR(500) NOT NULL COMMENT 'PDF文件URL', " +
+                    "file_id VARCHAR(100) COMMENT '媒资文件ID', " +
+                    "file_name VARCHAR(200) COMMENT '原始文件名', " +
+                    "file_size BIGINT COMMENT '文件大小(字节)', " +
+                    "uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "parsed_items JSON COMMENT '解析的指标项', " +
+                    "parsed_extra JSON COMMENT '解析的额外信息', " +
+                    "parsed_summary TEXT COMMENT '解析的总结文本', " +
+                    "parsed_suggestions TEXT COMMENT '解析的建议文本', " +
+                    "parser_version VARCHAR(32) COMMENT '解析器版本', " +
+                    "parse_status VARCHAR(16) DEFAULT 'pending' COMMENT 'pending/success/failed', " +
+                    "parse_error VARCHAR(500) COMMENT '解析失败原因', " +
+                    "parsed_at DATETIME COMMENT '解析完成时间', " +
+                    "draft_status VARCHAR(16) DEFAULT 'pending' COMMENT 'pending/confirmed/discarded', " +
+                    "confirmed_at DATETIME COMMENT '确认时间', " +
+                    "confirmed_by BIGINT COMMENT '确认操作人用户ID', " +
+                    "edited_items JSON COMMENT '编辑后的指标项', " +
+                    "edited_extra JSON COMMENT '编辑后的额外信息', " +
+                    "edited_summary TEXT COMMENT '编辑后的总结', " +
+                    "edited_suggestions TEXT COMMENT '编辑后的建议', " +
+                    "edit_count INT DEFAULT 0 COMMENT '编辑次数', " +
+                    "linked_result_id BIGINT COMMENT '关联 dan_assessment_results.id', " +
+                    "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+                    "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+                    "deleted_at DATETIME COMMENT '软删除时间', " +
+                    "INDEX idx_family_id (family_id), " +
+                    "INDEX idx_member_id (family_member_id), " +
+                    "INDEX idx_draft_status (draft_status), " +
+                    "INDEX idx_dimension (dimension), " +
+                    "INDEX idx_parse_status (parse_status), " +
+                    "INDEX idx_linked_result (linked_result_id)" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DAN测评PDF报告独立记录'");
+            log.info("已创建dan_report_uploads表");
+        } catch (Exception e) {
+            // 表已存在,忽略
+        }
+    }
+
+    private void runMigration94() {
+        // 迁移 94: dan_assessment_results表添加独立化扩展字段(关联新表)
+        ensureColumn("dan_assessment_results", "source_report_id", "BIGINT DEFAULT NULL COMMENT '关联 dan_report_uploads.id'");
+        ensureColumn("dan_assessment_results", "analysis_status", "VARCHAR(16) DEFAULT 'pending' COMMENT '分析状态: pending/confirmed'");
+        log.info("已添加独立化扩展列到dan_assessment_results表");
+    }
+
+    private void runMigration95() {
+        // 迁移 95: 历史 dan_assessment_results 数据 ETL 回填到 dan_report_uploads
+        // 条件: source='parent_upload' AND source_report_id IS NULL(真正的历史遗留数据)
+        // 注意: 新流程的记录通过 confirmUpload 已正确设置 source_report_id,无需处理
+        try {
+            // Step 1: 插入 dan_report_uploads 记录(来自 dan_assessment_results 的历史数据)
+            jdbcTemplate.execute("INSERT IGNORE INTO dan_report_uploads " +
+                    "(family_id, family_member_id, uploader_user_id, dimension, report_type, " +
+                    "file_url, file_id, draft_status, confirmed_at, confirmed_by, " +
+                    "edited_items, edited_summary, edited_suggestions, linked_result_id, " +
+                    "parsed_status, parse_status, created_at, updated_at) " +
+                    "SELECT " +
+                    "  fm.family_id, " +
+                    "  r.family_member_id, " +
+                    "  r.teacher_id, " +
+                    "  r.dimension, " +
+                    "  r.source, " +
+                    "  COALESCE(r.report_file_id, ''), " +
+                    "  r.report_file_id, " +
+                    "  'confirmed', " +
+                    "  r.created_at, " +
+                    "  r.teacher_id, " +
+                    "  r.structured_analysis, " +
+                    "  r.analysis_report, " +
+                    "  r.growth_suggestions, " +
+                    "  r.id, " +
+                    "  'success', " +
+                    "  'confirmed', " +
+                    "  r.created_at, " +
+                    "  r.updated_at " +
+                    "FROM dan_assessment_results r " +
+                    "LEFT JOIN family_members fm ON fm.id = r.family_member_id " +
+                    "WHERE r.source = 'parent_upload' " +
+                    "  AND r.source_report_id IS NULL " +
+                    "  AND r.draft_status = 'confirmed' " +
+                    "  AND NOT EXISTS (SELECT 1 FROM dan_report_uploads u WHERE u.linked_result_id = r.id)"
+            );
+            log.info("迁移95 Step1: 已将历史 dan_assessment_results 回填到 dan_report_uploads");
+        } catch (Exception e) {
+            log.error("迁移95 Step1 失败: " + e.getMessage());
+        }
+
+        // Step 2: 回填 dan_assessment_results.source_report_id(关联新建的 dan_report_uploads 记录)
+        try {
+            jdbcTemplate.execute("UPDATE dan_assessment_results r " +
+                    "INNER JOIN dan_report_uploads u ON u.linked_result_id = r.id " +
+                    "SET r.source_report_id = u.id " +
+                    "WHERE r.source = 'parent_upload' " +
+                    "  AND r.source_report_id IS NULL " +
+                    "  AND r.draft_status = 'confirmed'"
+            );
+        log.info("迁移95 Step2: 已回填 dan_assessment_results.source_report_id");
+    } catch (Exception e) {
+        log.error("迁移95 Step2 失败: " + e.getMessage());
+    }
+
+    // 迁移96: 创建活动订单评价表
+    try {
+        jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS review_orders (" +
+            "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+            "order_id BIGINT NOT NULL COMMENT '订单ID', " +
+            "reviewer_id BIGINT NOT NULL COMMENT '评价人ID', " +
+            "rating INT COMMENT '总体评分', " +
+            "review_text TEXT COMMENT '评价内容', " +
+            "review_at DATETIME COMMENT '评价时间', " +
+            "organization_rating INT COMMENT '活动组织评分(0-5)', " +
+            "content_rating INT COMMENT '活动内容评分(0-5)', " +
+            "experience_rating INT COMMENT '活动体验评分(0-5)', " +
+            "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
+            "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+            "UNIQUE KEY uk_order_id (order_id), " +
+            "INDEX idx_reviewer_id (reviewer_id)" +
+            ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动订单评价表'");
+        log.info("已创建review_orders表");
+    } catch (Exception e) {
+        log.error("迁移96 失败: " + e.getMessage());
+    }
+
+    // 迁移97: growth_task表扩展 — 支持AI_GENERATED类型 + 五维维度/来源会话字段
+    try {
+        jdbcTemplate.execute("ALTER TABLE growth_task MODIFY COLUMN type "
+                + "VARCHAR(16) NOT NULL COMMENT 'DAILY/NEWBIE/AI_GENERATED'");
+        log.info("已扩展growth_task.type为支持AI_GENERATED");
+    } catch (Exception e) {
+        log.warn("扩展growth_task.type失败(可能已经扩展): " + e.getMessage());
+    }
+    ensureColumn("growth_task", "dimension", "VARCHAR(20) NULL COMMENT '五维维度(body/mind/wisdom/action/wealth)'");
+    ensureColumn("growth_task", "source_conversation_id", "VARCHAR(100) NULL COMMENT '来源AI会话ID'");
+    log.info("迁移97: growth_task 表扩展完成");
+
+    // 迁移98: health_gut_flora 表扩展 level 字段长度(支持 CLASS/ORDER/FAMILY)
+    try {
+        jdbcTemplate.execute("ALTER TABLE health_gut_flora MODIFY COLUMN level VARCHAR(20) COMMENT '级别: CLASS/ORDER/FAMILY/GENUS/SPECIES'");
+        log.info("已扩展health_gut_flora.level字段长度");
+    } catch (Exception e) {
+        log.warn("扩展health_gut_flora.level失败: {}", e.getMessage());
+    }
+    log.info("迁移98: health_gut_flora 表扩展完成");
+}
 }

+ 5 - 1
cfc-backend/src/main/java/com/etotem/cfc/config/WebConfig.java

@@ -1,6 +1,7 @@
 package com.etotem.cfc.config;
 
 import javax.annotation.Resource;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.Ordered;
@@ -26,6 +27,9 @@ public class WebConfig implements WebMvcConfigurer {
     @Resource
     private OperationLogInterceptor operationLogInterceptor;
 
+    @Value("${upload.base-dir:/data/cfc-uploads}")
+    private String uploadBaseDir;
+
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
@@ -113,6 +117,6 @@ public class WebConfig implements WebMvcConfigurer {
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/uploads/**")
-                .addResourceLocations("file:" + System.getProperty("user.dir") + "/uploads/");
+                .addResourceLocations("file:" + uploadBaseDir + "/");
     }
 }

+ 97 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthKnowledgeBaseController.java

@@ -4,6 +4,7 @@ import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.HealthKnowledgeBase;
 import com.etotem.cfc.service.HealthKnowledgeBaseService;
 import com.etotem.cfc.service.KnowledgeBaseDataImporter;
+import com.etotem.cfc.service.KnowledgeBaseV3Service;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -13,8 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @Tag(name = "健康知识库")
@@ -28,6 +28,9 @@ public class HealthKnowledgeBaseController {
     @Resource
     private KnowledgeBaseDataImporter knowledgeBaseDataImporter;
 
+    @Resource
+    private KnowledgeBaseV3Service knowledgeBaseV3Service;
+
     @Operation(summary = "查询知识库条目")
     @PostMapping("/query")
     public Result<HealthKnowledgeBase> query(@RequestBody Map<String, String> params) {
@@ -52,10 +55,102 @@ public class HealthKnowledgeBaseController {
         return Result.success(result);
     }
 
+    @Operation(summary = "列表查询知识库")
+    @PostMapping("/list")
+    public Result<List<HealthKnowledgeBase>> list() {
+        return Result.success(healthKnowledgeBaseService.listAll());
+    }
+
+    @Operation(summary = "新增知识库条目")
+    @PostMapping("/add")
+    public Result add(@RequestBody HealthKnowledgeBase entity) {
+        healthKnowledgeBaseService.save(entity);
+        return Result.success();
+    }
+
+    @Operation(summary = "更新知识库条目")
+    @PostMapping("/update")
+    public Result update(@RequestBody HealthKnowledgeBase entity) {
+        healthKnowledgeBaseService.updateById(entity);
+        return Result.success();
+    }
+
+    @Operation(summary = "删除知识库条目")
+    @PostMapping("/delete")
+    public Result delete(@RequestBody Map<String, Object> params) {
+        Long id = Long.valueOf(params.get("id").toString());
+        healthKnowledgeBaseService.removeById(id);
+        return Result.success();
+    }
+
     @Operation(summary = "从参考JSON导入知识库数据")
     @PostMapping("/import")
     public Result<String> importKnowledgeBase() {
         String msg = knowledgeBaseDataImporter.importAll();
         return Result.success(msg);
     }
+
+    // ==================== KB v3 端点 ====================
+
+    @Operation(summary = "查询KB v3菌属功能(支持属级回退)")
+    @PostMapping("/v3/bacteria/query")
+    public Result<Map<String, Object>> queryBacteria(@RequestBody Map<String, String> params) {
+        String name = params.get("name");
+        if (name == null || name.isEmpty()) {
+            return Result.error("name不能为空");
+        }
+        Map<String, Object> entry = knowledgeBaseV3Service.lookupBacteria(name);
+        return Result.success(entry);
+    }
+
+    @Operation(summary = "批量查询KB v3菌属功能")
+    @PostMapping("/v3/bacteria/batch-query")
+    public Result<Map<String, Map<String, Object>>> batchQueryBacteria(@RequestBody Map<String, Object> params) {
+        @SuppressWarnings("unchecked")
+        List<String> names = (List<String>) params.get("names");
+        if (names == null || names.isEmpty()) {
+            return Result.error("names不能为空");
+        }
+        Map<String, Map<String, Object>> result = knowledgeBaseV3Service.batchLookupBacteria(names);
+        return Result.success(result);
+    }
+
+    @Operation(summary = "查询KB v3指标调整建议")
+    @PostMapping("/v3/indicator/query")
+    public Result<Map<String, Object>> queryIndicator(@RequestBody Map<String, String> params) {
+        String name = params.get("name");
+        if (name == null || name.isEmpty()) {
+            return Result.error("name不能为空");
+        }
+        Map<String, Object> entry = knowledgeBaseV3Service.lookupIndicator(name);
+        return Result.success(entry);
+    }
+
+    @Operation(summary = "查询KB v3食物营养数据")
+    @PostMapping("/v3/food/query")
+    public Result<Map<String, Object>> queryFood(@RequestBody Map<String, String> params) {
+        String name = params.get("name");
+        if (name == null || name.isEmpty()) {
+            return Result.error("name不能为空");
+        }
+        Map<String, Object> entry = knowledgeBaseV3Service.lookupFood(name);
+        return Result.success(entry);
+    }
+
+    @Operation(summary = "获取KB v3完整原始数据(按章节)")
+    @PostMapping("/v3/section")
+    public Result<Object> getSection(@RequestBody Map<String, String> params) {
+        String section = params.get("section");
+        if (section == null || section.isEmpty()) {
+            // 返回章节列表
+            Set<String> sections = knowledgeBaseV3Service.getIndicatorSectionNames();
+            Map<String, Object> data = new LinkedHashMap<>();
+            data.put("sections", sections);
+            data.put("bacteriaGroups", knowledgeBaseV3Service.getBacteriaGroups());
+            data.put("foodCategories", knowledgeBaseV3Service.getFoodCategories());
+            return Result.success(data);
+        }
+        Object data = knowledgeBaseV3Service.getSection(section);
+        return Result.success(data);
+    }
 }

+ 21 - 0
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthReportController.java

@@ -1246,6 +1246,27 @@ public class HealthReportController {
         return foods;
     }
 
+    /**
+     * 提交报告反馈(v1.1:日志记录,不入库)
+     */
+    @Operation(summary = "提交报告反馈")
+    @PostMapping("/feedback/submit")
+    public Result<String> submitFeedback(@RequestBody Map<String, Object> params) {
+        Object contentObj = params.get("content");
+        if (contentObj == null || contentObj.toString().trim().isEmpty()) {
+            return Result.error("反馈内容不能为空");
+        }
+        Long reportId = params.get("reportId") != null
+                ? Long.valueOf(params.get("reportId").toString()) : null;
+        String type = params.get("type") != null ? params.get("type").toString() : "其他";
+        String content = contentObj.toString().trim();
+        if (content.length() > 500) {
+            return Result.error("反馈内容不能超过500字");
+        }
+        log.info("用户报告反馈 - reportId: {}, type: {}, content: {}", reportId, type, content);
+        return Result.success("感谢您的反馈");
+    }
+
     /**
      * 保存上传文件到本地存储
      */

+ 8 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/MarketController.java

@@ -8,6 +8,7 @@ import com.etotem.cfc.entity.TaskPlanInstance;
 import com.etotem.cfc.entity.TaskPlanItem;
 import com.etotem.cfc.entity.TaskTemplatePackage;
 import com.etotem.cfc.entity.TaskTemplateItem;
+import com.etotem.cfc.service.MembershipService;
 import com.etotem.cfc.service.TaskPlanService;
 import com.etotem.cfc.service.TaskTemplatePackageService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -29,6 +30,9 @@ public class MarketController {
     @Resource
     private TaskPlanService planService;
 
+    @Resource
+    private MembershipService membershipService;
+
     /**
      * 获取公开任务模板列表 (市场)
      */
@@ -81,9 +85,8 @@ public class MarketController {
     public Result<TaskPlanInstance> purchasePackage(
             @PathVariable Long id,
             @RequestBody ApplyPackageDTO dto,
-            @RequestAttribute("userId") Long userId,
-            @RequestAttribute("familyId") Long familyId) {
-        
+            @RequestAttribute("userId") Long userId) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         dto.setPackageId(id);
         TaskPlanInstance instance = planService.applyPackage(dto, familyId);
         return Result.success(instance);
@@ -94,7 +97,8 @@ public class MarketController {
      */
     @Operation(summary = "获取我的任务计划")
     @PostMapping("/plans")
-    public Result<List<TaskPlanInstance>> getMyPlans(@RequestAttribute("familyId") Long familyId) {
+    public Result<List<TaskPlanInstance>> getMyPlans(@RequestAttribute("userId") Long userId) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         List<TaskPlanInstance> plans = planService.getFamilyPlans(familyId);
         return Result.success(plans);
     }

+ 5 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/PackagePaymentController.java

@@ -4,6 +4,7 @@ import javax.annotation.Resource;
 import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.PackageOrder;
 import com.etotem.cfc.entity.TaskPlanInstance;
+import com.etotem.cfc.service.MembershipService;
 import com.etotem.cfc.service.PackagePaymentService;
 import com.etotem.cfc.service.TaskPlanService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -23,6 +24,9 @@ public class PackagePaymentController {
     @Resource
     private TaskPlanService planService;
 
+    @Resource
+    private MembershipService membershipService;
+
     /**
      * 创建支付订单
      */
@@ -30,8 +34,8 @@ public class PackagePaymentController {
     @PostMapping("/create")
     public Result<PackageOrder> createOrder(
             @RequestAttribute("userId") Long userId,
-            @RequestAttribute("familyId") Long familyId,
             @RequestBody Map<String, Object> params) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         Long packageId = Long.valueOf(params.get("packageId").toString());
         String payMethod = params.get("payMethod") != null ? params.get("payMethod").toString() : "wechat";
         Long couponId = params.get("couponId") != null ? Long.valueOf(params.get("couponId").toString()) : null;

+ 53 - 0
cfc-backend/src/main/java/com/etotem/cfc/controller/ReviewController.java

@@ -0,0 +1,53 @@
+package com.etotem.cfc.controller;
+
+import com.etotem.cfc.common.Result;
+import com.etotem.cfc.dto.ReviewOrderRequest;
+import com.etotem.cfc.dto.ReviewOrderResponse;
+import com.etotem.cfc.dto.ReviewStatusResponse;
+import com.etotem.cfc.service.ReviewOrderService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestAttribute;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/review")
+public class ReviewController {
+
+    @Resource
+    private ReviewOrderService reviewOrderService;
+
+    @PostMapping("/order")
+    public Result<String> reviewOrder(@RequestBody ReviewOrderRequest request,
+                                      @RequestAttribute("userId") Long userId) {
+        String result = reviewOrderService.createReview(request, userId);
+        return Result.success(result);
+    }
+
+    @PostMapping("/order/detail")
+    public Result<ReviewOrderResponse> getReviewOrderDetail(@RequestBody java.util.Map<String, Object> params) {
+        Long orderId = params != null && params.get("orderId") != null
+                ? Long.valueOf(params.get("orderId").toString())
+                : null;
+        if (orderId == null) {
+            return Result.error("orderId is required");
+        }
+        ReviewOrderResponse response = reviewOrderService.findByOrder(orderId);
+        return Result.success(response);
+    }
+
+    @PostMapping("/order/status")
+    public Result<ReviewStatusResponse> getReviewStatus(@RequestBody java.util.Map<String, Object> params) {
+        Long orderId = params != null && params.get("orderId") != null
+                ? Long.valueOf(params.get("orderId").toString())
+                : null;
+        if (orderId == null) {
+            return Result.error("orderId is required");
+        }
+        ReviewStatusResponse response = reviewOrderService.getStats(orderId);
+        return Result.success(response);
+    }
+}

+ 27 - 18
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminArticleController.java

@@ -5,16 +5,14 @@ import com.etotem.cfc.entity.Article;
 import com.etotem.cfc.entity.ArticleCategory;
 import com.etotem.cfc.service.ArticleCategoryService;
 import com.etotem.cfc.service.ArticleService;
+import com.etotem.cfc.service.FileStorageService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
-import java.io.File;
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 
 @RestController
 @RequestMapping("/api/admin/articles")
@@ -26,6 +24,9 @@ public class AdminArticleController {
     @Resource
     private ArticleCategoryService articleCategoryService;
 
+    @Resource
+    private FileStorageService fileStorageService;
+
     @PostMapping("/list")
     public Result<Page<Article>> list(@RequestBody Map<String, Object> body) {
         String status = (String) body.get("status");
@@ -70,9 +71,25 @@ public class AdminArticleController {
         } else if (rd instanceof String) {
             article.setRelatedDimensions((String) rd);
         }
-        article.setVisibility((String) body.get("visibility"));
-        article.setVisibleTo((String) body.get("visibleTo"));
-        article.setArticleType((String) body.get("articleType"));
+        // visibility, visibleTo, articleType may also come as array
+        Object visibility = body.get("visibility");
+        if (visibility instanceof List) {
+            article.setVisibility(String.join(",", (List<String>) visibility));
+        } else if (visibility instanceof String) {
+            article.setVisibility((String) visibility);
+        }
+        Object visibleTo = body.get("visibleTo");
+        if (visibleTo instanceof List) {
+            article.setVisibleTo(String.join(",", (List<String>) visibleTo));
+        } else if (visibleTo instanceof String) {
+            article.setVisibleTo((String) visibleTo);
+        }
+        Object articleType = body.get("articleType");
+        if (articleType instanceof List) {
+            article.setArticleType(String.join(",", (List<String>) articleType));
+        } else if (articleType instanceof String) {
+            article.setArticleType((String) articleType);
+        }
         if (body.get("status") != null) {
             article.setStatus((String) body.get("status"));
         }
@@ -234,19 +251,11 @@ public class AdminArticleController {
             return Result.error("文件为空");
         }
         try {
-            String uploadDir = System.getProperty("user.dir") + "/uploads/articles/";
-            File dir = new File(uploadDir);
-            if (!dir.exists()) dir.mkdirs();
-
-            String ext = file.getOriginalFilename();
-            ext = ext != null && ext.contains(".") ? ext.substring(ext.lastIndexOf(".")) : ".jpg";
-            String filename = UUID.randomUUID().toString() + ext;
-            File dest = new File(uploadDir + filename);
-            file.transferTo(dest);
-
-            String url = "/uploads/articles/" + filename;
+            String url = fileStorageService.store(file, "articles");
             return Result.success(url);
-        } catch (IOException e) {
+        } catch (IllegalArgumentException e) {
+            return Result.error(e.getMessage());
+        } catch (RuntimeException e) {
             return Result.error("上传失败: " + e.getMessage());
         }
     }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentReportController.java

@@ -59,7 +59,7 @@ public class AssessmentReportController {
             return Result.error("文件不能为空");
         }
 
-        String filePath = fileStorageService.upload(file, "assessment-reports");
+        String filePath = fileStorageService.store(file, "assessment-reports");
         if (filePath == null) {
             return Result.error("文件上传失败");
         }

+ 9 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/family/BindController.java

@@ -5,6 +5,7 @@ import com.etotem.cfc.common.Result;
 import com.etotem.cfc.dto.BindGuideDTO;
 import com.etotem.cfc.entity.GuideFamily;
 import com.etotem.cfc.service.GuideFamilyService;
+import com.etotem.cfc.service.MembershipService;
 import com.etotem.cfc.service.TeacherMessageService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,15 +27,18 @@ public class BindController {
     @Resource
     private TeacherMessageService teacherMessageService;
 
+    @Resource
+    private MembershipService membershipService;
+
     /**
      * 家长确认绑定指导师
      */
     @Operation(summary = "确认绑定指导师")
     @PostMapping("/accept")
     public Result<Boolean> acceptBind(@RequestAttribute("userId") Long userId,
-                                        @RequestAttribute("familyId") Long familyId,
                                         @RequestBody BindGuideDTO dto) {
         try {
+            Long familyId = membershipService.getUserFamilyId(userId);
             boolean success = guideFamilyService.confirmBind(dto.getGuideId(), familyId,
                 dto.getServiceType(), dto.getServicePrice());
             return Result.success(success);
@@ -48,7 +52,8 @@ public class BindController {
      */
     @Operation(summary = "获取绑定的指导师列表")
     @PostMapping("/guides")
-    public Result<List<Map<String, Object>>> getBoundGuides(@RequestAttribute("familyId") Long familyId) {
+    public Result<List<Map<String, Object>>> getBoundGuides(@RequestAttribute("userId") Long userId) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         List<GuideFamily> bindings = guideFamilyService.getGuidesByFamily(familyId);
         
         List<Map<String, Object>> result = bindings.stream().map(binding -> {
@@ -71,8 +76,8 @@ public class BindController {
     @Operation(summary = "解除绑定规划师")
     @PostMapping("/unbind")
     public Result<Boolean> unbind(@RequestAttribute("userId") Long userId,
-                                   @RequestAttribute("familyId") Long familyId,
-                                   @RequestBody Map<String, Object> params) {
+                                    @RequestBody Map<String, Object> params) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         Long id = Long.valueOf(params.get("id").toString());
         try {
             GuideFamily gf = guideFamilyService.unbindAndGet(id, familyId);

+ 10 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/mind/MindFortuneController.java

@@ -4,6 +4,7 @@ import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.FamilyFortune;
 import com.etotem.cfc.entity.FamilyFortuneReport;
 import com.etotem.cfc.service.FortuneService;
+import com.etotem.cfc.service.MembershipService;
 import com.etotem.cfc.service.PdfReportService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestAttribute;
@@ -24,12 +25,16 @@ public class MindFortuneController {
     
     @Resource
     private PdfReportService pdfReportService;
+
+    @Resource
+    private MembershipService membershipService;
     
     /**
      * 获取今日家庭运势
      */
     @PostMapping("/fortune")
-    public Result<Map<String, Object>> getTodayFortune(@RequestAttribute("familyId") Long familyId) {
+    public Result<Map<String, Object>> getTodayFortune(@RequestAttribute("userId") Long userId) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         FamilyFortune fortune = fortuneService.getFamilyFortune(familyId, LocalDate.now());
         Map<String, Object> result = batchBuildFortuneResponse(fortune);
         return Result.success(result);
@@ -39,7 +44,8 @@ public class MindFortuneController {
      * 手动刷新运势(仅供测试)
      */
     @PostMapping("/fortune/refresh")
-    public Result<FamilyFortune> refreshFortune(@RequestAttribute("familyId") Long familyId) {
+    public Result<FamilyFortune> refreshFortune(@RequestAttribute("userId") Long userId) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         FamilyFortune fortune = fortuneService.getFamilyFortune(familyId, LocalDate.now());
         fortune.setLuckyDirection(fortuneService.calculateLuckyDirection(familyId, LocalDate.now()));
         fortuneService.saveFamilyFortune(fortune);
@@ -53,8 +59,9 @@ public class MindFortuneController {
      */
     @PostMapping("/fortune/export")
     public Result<Map<String, Object>> exportFortuneReport(
-            @RequestAttribute("familyId") Long familyId,
+            @RequestAttribute("userId") Long userId,
             @RequestBody ExportReportRequest request) {
+        Long familyId = membershipService.getUserFamilyId(userId);
         try {
             // 文件大小校验
             if (request.imageBase64 == null || request.imageBase64.length() > 4 * 1024 * 1024) {

+ 21 - 6
cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductOrderController.java

@@ -9,6 +9,7 @@ import com.etotem.cfc.entity.ActivityProvision;
 import com.etotem.cfc.service.ActivityProvisionService;
 import com.etotem.cfc.service.PaymentService;
 import com.etotem.cfc.service.ProductOrderService;
+import com.etotem.cfc.service.QrCodeService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -32,8 +33,11 @@ public class ProductOrderController {
     @Resource
     private PaymentService paymentService;
 
-    @Resource
-    private ActivityProvisionService activityProvisionService;
+@Resource
+private ActivityProvisionService activityProvisionService;
+
+@Resource
+private QrCodeService qrCodeService;
 
     @PostMapping("/create")
     public Result<ProductOrderDTO> create(@RequestBody CreateProductOrderDTO dto,
@@ -176,9 +180,20 @@ public class ProductOrderController {
         return activityProvisionService.complete(orderId);
     }
 
-    @PostMapping("/activity/provision")
-    public Result<ActivityProvision> activityProvision(@RequestBody Map<String, Object> params) {
-        Long orderId = Long.valueOf(params.get("orderId").toString());
-        return activityProvisionService.getByOrderId(orderId);
+@PostMapping("/activity/provision")
+public Result<ActivityProvision> activityProvision(@RequestBody Map<String, Object> params) {
+    Long orderId = Long.valueOf(params.get("orderId").toString());
+    return activityProvisionService.getByOrderId(orderId);
+}
+
+@PostMapping("/activity/qr-image")
+public Result<String> getActivityQrImage(@RequestBody Map<String, Object> params) {
+    Long orderId = Long.valueOf(params.get("orderId").toString());
+    ActivityProvision provision = activityProvisionService.getByOrderId(orderId).getData();
+    if (provision == null || provision.getQrCode() == null) {
+        return Result.error("QR code not available");
     }
+    String base64Qr = qrCodeService.generateQrCodeBase64(provision.getQrCode());
+    return Result.success(base64Qr);
+}
 }

+ 21 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/ParsedReportPayload.java

@@ -169,6 +169,13 @@ public class ParsedReportPayload {
         private List<Indicator> indicators;
         private List<Flora> gutFlora;
         private List<Flora> probioticSpecies;
+        private List<Flora> taxonomyClass;       // 菌纲构成
+        private List<Flora> taxonomyOrder;       // 菌目构成
+        private List<Flora> taxonomyFamily;      // 菌科构成
+        private List<Flora> taxonomyGenus;       // 菌属构成
+        private List<Flora> taxonomySpecies;     // 菌种构成
+        private List<Flora> pathogenGenus;       // 病原菌属
+        private List<Flora> pathogenDetection;   // 病原菌检出
         private List<FoodItem> foods;
         private List<DiseaseRisk> diseaseRisks;
 
@@ -180,6 +187,20 @@ public class ParsedReportPayload {
         public void setGutFlora(List<Flora> gutFlora) { this.gutFlora = gutFlora; }
         public List<Flora> getProbioticSpecies() { return probioticSpecies; }
         public void setProbioticSpecies(List<Flora> probioticSpecies) { this.probioticSpecies = probioticSpecies; }
+        public List<Flora> getTaxonomyClass() { return taxonomyClass; }
+        public void setTaxonomyClass(List<Flora> taxonomyClass) { this.taxonomyClass = taxonomyClass; }
+        public List<Flora> getTaxonomyOrder() { return taxonomyOrder; }
+        public void setTaxonomyOrder(List<Flora> taxonomyOrder) { this.taxonomyOrder = taxonomyOrder; }
+        public List<Flora> getTaxonomyFamily() { return taxonomyFamily; }
+        public void setTaxonomyFamily(List<Flora> taxonomyFamily) { this.taxonomyFamily = taxonomyFamily; }
+        public List<Flora> getTaxonomyGenus() { return taxonomyGenus; }
+        public void setTaxonomyGenus(List<Flora> taxonomyGenus) { this.taxonomyGenus = taxonomyGenus; }
+        public List<Flora> getTaxonomySpecies() { return taxonomySpecies; }
+        public void setTaxonomySpecies(List<Flora> taxonomySpecies) { this.taxonomySpecies = taxonomySpecies; }
+        public List<Flora> getPathogenGenus() { return pathogenGenus; }
+        public void setPathogenGenus(List<Flora> pathogenGenus) { this.pathogenGenus = pathogenGenus; }
+        public List<Flora> getPathogenDetection() { return pathogenDetection; }
+        public void setPathogenDetection(List<Flora> pathogenDetection) { this.pathogenDetection = pathogenDetection; }
         public List<FoodItem> getFoods() { return foods; }
         public void setFoods(List<FoodItem> foods) { this.foods = foods; }
         public List<DiseaseRisk> getDiseaseRisks() { return diseaseRisks; }

+ 14 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewOrderRequest.java

@@ -0,0 +1,14 @@
+package com.etotem.cfc.dto;
+
+import lombok.Data;
+
+@Data
+public class ReviewOrderRequest {
+
+    private Long orderId;
+    private Integer rating;
+    private String reviewText;
+    private Integer organizationRating;
+    private Integer contentRating;
+    private Integer experienceRating;
+}

+ 16 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewOrderResponse.java

@@ -0,0 +1,16 @@
+package com.etotem.cfc.dto;
+
+import lombok.Data;
+
+@Data
+public class ReviewOrderResponse {
+
+    private Long orderId;
+    private Long reviewerId;
+    private Integer rating;
+    private String reviewText;
+    private String reviewAt;
+    private Integer organizationRating;
+    private Integer contentRating;
+    private Integer experienceRating;
+}

+ 20 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/ReviewStatusResponse.java

@@ -0,0 +1,20 @@
+package com.etotem.cfc.dto;
+
+import lombok.Data;
+
+@Data
+public class ReviewStatusResponse {
+
+    private Boolean reviewed;
+    private Integer rating;
+    private String reviewText;
+    private String reviewAt;
+    private Integer organizationRating;
+    private Integer contentRating;
+    private Integer experienceRating;
+    private Double organizationAvg;
+    private Double contentAvg;
+    private Double experienceAvg;
+    private Double overallAvg;
+    private Integer totalReviews;
+}

+ 24 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/TaskParseResult.java

@@ -0,0 +1,24 @@
+package com.etotem.cfc.dto;
+
+public class TaskParseResult {
+    private String title;
+    private String description;
+    private String deadline;
+    private String dimension;
+    private Integer rewardPoints;
+
+    public String getTitle() { return title; }
+    public void setTitle(String title) { this.title = title; }
+
+    public String getDescription() { return description; }
+    public void setDescription(String description) { this.description = description; }
+
+    public String getDeadline() { return deadline; }
+    public void setDeadline(String deadline) { this.deadline = deadline; }
+
+    public String getDimension() { return dimension; }
+    public void setDimension(String dimension) { this.dimension = dimension; }
+
+    public Integer getRewardPoints() { return rewardPoints; }
+    public void setRewardPoints(Integer rewardPoints) { this.rewardPoints = rewardPoints; }
+}

+ 0 - 3
cfc-backend/src/main/java/com/etotem/cfc/entity/ActivityProvision.java

@@ -22,15 +22,12 @@ public class ActivityProvision implements Serializable {
     private Long buyerId;
     private Long familyId;
     private Long childId;
-
     private String status;
     private String qrCode;
     private Date checkedInAt;
     private Date completedAt;
-
     private Integer refundAmount;
     private Date refundAt;
-
     private Date createdAt;
     private Date updatedAt;
 }

+ 6 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/DanReportUpload.java

@@ -78,4 +78,10 @@ public class DanReportUpload implements Serializable {
 
     public static final String DIM_MIND = "mind";
     public static final String DIM_WISDOM = "wisdom";
+    public static final String DIM_COGNITION = "cognition";
+    public static final String DIM_LEARNING = "learning";
+    public static final String DIM_BEHAVIOR = "behavior";
+    public static final String DIM_CAREER = "career";
+    public static final String DIM_CAMPUS = "campus";
+    public static final String DIM_ADOLESCENT = "adolescent";
 }

+ 6 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/GrowthTask.java

@@ -34,4 +34,10 @@ public class GrowthTask implements Serializable {
     private Integer sortOrder;
 
     private Date createdAt;
+
+    /** 五维维度: body/mind/wisdom/action/wealth */
+    private String dimension;
+
+    /** 来源AI会话ID(AI_GENERATED类型任务使用) */
+    private String sourceConversationId;
 }

+ 16 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/HealthGutFlora.java

@@ -16,6 +16,22 @@ import java.util.Date;
 @TableName("health_gut_flora")
 public class HealthGutFlora implements Serializable {
 
+    // ===== Level 常量 =====
+    public static final String LEVEL_CLASS = "CLASS";      // 纲
+    public static final String LEVEL_ORDER = "ORDER";      // 目
+    public static final String LEVEL_FAMILY = "FAMILY";    // 科
+    public static final String LEVEL_GENUS = "GENUS";      // 属
+    public static final String LEVEL_SPECIES = "SPECIES";  // 种
+
+    // ===== Category 常量 =====
+    public static final String CATEGORY_CORE = "core";                 // 核心菌属
+    public static final String CATEGORY_PROBIOTIC = "probiotic";       // 益生菌
+    public static final String CATEGORY_HARMFUL = "harmful";           // 有害菌
+    public static final String CATEGORY_OTHER = "other";               // 其它重要菌属
+    public static final String CATEGORY_PATHOGEN_GENUS = "pathogen_genus";        // 病原菌属
+    public static final String CATEGORY_PATHOGEN_DETECTION = "pathogen_detection"; // 病原菌检出
+    public static final String CATEGORY_TAXONOMY = "taxonomy";         // 菌群层级
+
     @TableId(type = IdType.AUTO)
     private Long id;
 

+ 5 - 1
cfc-backend/src/main/java/com/etotem/cfc/entity/ProductOrder.java

@@ -57,7 +57,7 @@ public class ProductOrder implements Serializable {
     // 购买信息采集
     private Long consigneeId;          // 收货人ID
     private String purchaseInfo;       // 购买信息快照(JSON)
-
+    // 活动核销字段
     private Long activityId;
     private String provisionStatus;
     private Long auditorId;
@@ -89,4 +89,8 @@ public class ProductOrder implements Serializable {
     public void setMoneyAmount(Integer moneyAmount) { this.moneyAmount = moneyAmount; }
     public void setConsigneeId(Long consigneeId) { this.consigneeId = consigneeId; }
     public void setPurchaseInfo(String purchaseInfo) { this.purchaseInfo = purchaseInfo; }
+    public void setProvisionStatus(String provisionStatus) { this.provisionStatus = provisionStatus; }
+    public void setAuditorId(Long auditorId) { this.auditorId = auditorId; }
+    public void setAuditedAt(Date auditedAt) { this.auditedAt = auditedAt; }
+    public void setAuditReason(String auditReason) { this.auditReason = auditReason; }
 }

+ 28 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/ReviewOrder.java

@@ -0,0 +1,28 @@
+package com.etotem.cfc.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("review_orders")
+public class ReviewOrder implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    private Long orderId;
+    private Long reviewerId;
+    private Integer rating;
+    private String reviewText;
+    private Date reviewAt;
+    private Integer organizationRating;
+    private Integer contentRating;
+    private Integer experienceRating;
+    private Date createdAt;
+    private Date updatedAt;
+}

+ 16 - 0
cfc-backend/src/main/java/com/etotem/cfc/mapper/ReviewOrderMapper.java

@@ -0,0 +1,16 @@
+package com.etotem.cfc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.etotem.cfc.entity.ReviewOrder;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+@Mapper
+public interface ReviewOrderMapper extends BaseMapper<ReviewOrder> {
+
+    ReviewOrder findByOrderId(@Param("orderId") Long orderId);
+
+    Map<String, Object> getStatsByOrderId(@Param("orderId") Long orderId);
+}

+ 1099 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/DanReportParseService.java

@@ -31,14 +31,26 @@ public class DanReportParseService {
             PDFTextStripper stripper = new PDFTextStripper();
             stripper.setSortByPosition(true);
             String fullText = stripper.getText(document);
-            return parseText(fullText, dimension);
+
+            if ("adolescent".equals(dimension)) {
+                java.awt.image.BufferedImage compassImage = extractB5CompassImage(document);
+                return parseText(fullText, dimension, compassImage);
+            }
+            return parseText(fullText, dimension, null);
         }
     }
 
     /**
-     * 从纯文本解析 DAN 报告
+     * 从纯文本解析 DAN 报告(无图像版本)
      */
     public DanParsedReport parseText(String fullText, String dimension) {
+        return parseText(fullText, dimension, null);
+    }
+
+    /**
+     * 从纯文本解析 DAN 报告(含可选图像用于B5指南针分析)
+     */
+    private DanParsedReport parseText(String fullText, String dimension, java.awt.image.BufferedImage compassImage) {
         String[] lines = fullText.split("\\r?\\n");
         List<String> lineList = new ArrayList<>();
         for (String line : lines) {
@@ -56,6 +68,18 @@ public class DanReportParseService {
             return parseA2Report(lineList, fullText);
         } else if ("wisdom".equals(dimension)) {
             return parseB4Report(lineList, fullText);
+        } else if ("cognition".equals(dimension)) {
+            return parseA1Report(lineList, fullText);
+        } else if ("learning".equals(dimension)) {
+            return parseB3Report(lineList, fullText);
+        } else if ("behavior".equals(dimension)) {
+            return parseB2Report(lineList, fullText);
+        } else if ("career".equals(dimension)) {
+            return parseB6Report(lineList, fullText);
+        } else if ("campus".equals(dimension)) {
+            return parseC1Report(lineList, fullText);
+        } else if ("adolescent".equals(dimension)) {
+            return parseB5Report(lineList, fullText, compassImage);
         }
         return DanParsedReport.empty();
     }
@@ -235,6 +259,908 @@ public class DanReportParseService {
         return new DanParsedReport("B4", "wisdom", items, extra, summary.toString(), suggestions.toString());
     }
 
+// ======================== A1 报告解析(认知/cognition) ========================
+
+    /**
+     * 解析 A1 儿童核心认知发展报告(6个认知维度)
+     * 维度:感知觉、注意力、记忆力、推理能力、空间能力、加工速度
+     * 提取总分/百分位 + 各维度百分位 + 各维度原始分
+     */
+    private DanParsedReport parseA1Report(List<String> lines, String fullText) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        // 1. 基本信息和日期
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        // 2. 总分和百分位(通用提取)
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 3. 6个核心认知维度
+        String[] cognitiveDims = {"感知觉", "注意力", "记忆力", "推理能力", "空间能力", "加工速度"};
+        String[] dimCodes = {"perception", "attention", "memory", "reasoning", "spatial", "processingSpeed"};
+
+        // 方法1: 从summary页面提取百分位 (格式: "感知觉 |  Perception\n百分位(%)\n14")
+        for (int i = 0; i < cognitiveDims.length; i++) {
+            String dim = cognitiveDims[i];
+            String code = dimCodes[i];
+            Pattern p1 = Pattern.compile(
+                    Pattern.quote(dim) + "\\s*\\|[^\\n]*\\n\\s*百分位(%)\\s*\\n\\s*(\\d+)");
+            Matcher m1 = p1.matcher(fullText);
+            if (m1.find()) {
+                String val = m1.group(1);
+                items.add(new DataItem(code + "_pct", dim + "百分位", val, "cognitive"));
+                extra.put(code + "_pct", val);
+            }
+        }
+
+        // 方法2: 从detail页面提取原始分和百分位 (格式: "我的感知觉得分 41  | 14%")
+        for (int i = 0; i < cognitiveDims.length; i++) {
+            String dim = cognitiveDims[i];
+            String code = dimCodes[i];
+            Pattern p2 = Pattern.compile(
+                    "我的" + Pattern.quote(dim) + "得分\\s*(\\d+)\\s*\\|\\s*(\\d+)%");
+            Matcher m2 = p2.matcher(fullText);
+            if (m2.find()) {
+                String score = m2.group(1);
+                String pct = m2.group(2);
+                items.add(new DataItem(code + "_score", dim + "得分", score, "cognitive"));
+                extra.put(code + "_score", score);
+                if (!extra.containsKey(code + "_pct")) {
+                    items.add(new DataItem(code + "_pct", dim + "百分位", pct, "cognitive"));
+                    extra.put(code + "_pct", pct);
+                }
+            }
+        }
+
+        // 方法3: 后备 - 直接搜索 "维度名\n百分位(%)\n数字" (某些PDF格式)
+        int foundPct = 0;
+        for (String code : dimCodes) {
+            if (extra.containsKey(code + "_pct")) foundPct++;
+        }
+        if (foundPct < 6) {
+            for (int i = 0; i < cognitiveDims.length; i++) {
+                String dim = cognitiveDims[i];
+                String code = dimCodes[i];
+                if (!extra.containsKey(code + "_pct")) {
+                    Pattern p3 = Pattern.compile(
+                            Pattern.quote(dim) + ".*?百分位(%).*?(\\d+)", Pattern.DOTALL);
+                    Matcher m3 = p3.matcher(fullText);
+                    if (m3.find()) {
+                        String val = m3.group(1);
+                        items.add(new DataItem(code + "_pct", dim + "百分位", val, "cognitive"));
+                        extra.put(code + "_pct", val);
+                    }
+                }
+            }
+        }
+
+        // 4. 通用正则:提取所有 "维度名: 分数" 模式
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) {
+                    exists = true;
+                    break;
+                }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        // 总结和建议
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+
+        return new DanParsedReport("A1", "cognition", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    // ======================== B3 报告解析(学习/learning) ========================
+
+    /**
+     * 解析 B3 核心学习能力报告
+     * - 执行功能3维:抑制控制、工作记忆、认知灵活性(百分位)
+     * - 学习动机3维:深层动机、表面动机、自我效能感(十分制)
+     * - 学习策略3维:深层方法与策略、表面方法与策略、学习自我调节(十分制)
+     */
+    private DanParsedReport parseB3Report(List<String> lines, String fullText) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        // 1. 基本信息和日期
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        // 2. 总分和百分位
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 3. 执行功能 (3维度, 百分位) 格式: "抑制控制 94%  工作记忆 89%  认知灵活性 60%"
+        String[][] execDims = {
+            {"抑制控制", "inhibitoryControl"},
+            {"工作记忆", "workingMemory"},
+            {"认知灵活性", "cognitiveFlexibility"}
+        };
+        for (String[] dim : execDims) {
+            Pattern p = Pattern.compile(Pattern.quote(dim[0]) + "\\s*(\\d+)%");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                String val = m.group(1);
+                items.add(new DataItem(dim[1], dim[0] + "百分位", val, "executiveFunction"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 4. 学习动机 (3维度, 十分制) 格式: "深层动机\n我的得分:8分"
+        String[][] motivationDims = {
+            {"深层动机", "deepMotivation"},
+            {"表面动机", "surfaceMotivation"},
+            {"自我效能感", "selfEfficacy"}
+        };
+        for (String[] dim : motivationDims) {
+            String val = extractScoreAfterLabel(fullText, dim[0]);
+            if (val != null) {
+                items.add(new DataItem(dim[1], dim[0], val, "learningMotivation"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 5. 学习策略 (3维度, 十分制) 格式: "深层方法与策略\n我的得分:6.8分"
+        String[][] strategyDims = {
+            {"深层方法与策略", "deepStrategy"},
+            {"表面方法与策略", "surfaceStrategy"},
+            {"学习自我调节", "selfRegulation"}
+        };
+        for (String[] dim : strategyDims) {
+            String val = extractScoreAfterLabel(fullText, dim[0]);
+            if (val != null) {
+                items.add(new DataItem(dim[1], dim[0], val, "learningStrategy"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 6. 通用正则提取
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) {
+                    exists = true;
+                    break;
+                }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+
+        return new DanParsedReport("B3", "learning", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    // ======================== B2 报告解析(行为/behavior) ========================
+
+    /**
+     * 解析 B2 儿童自我与家庭教养报告
+     * - 自我概念6维:行为表现、能力与学校表现、躯体外貌、情绪状态、合群、幸福与满足
+     * - 儿童行为8维:品行问题、情绪问题、学习问题、社交问题、生活习惯、多动倾向、刻板行为、拖延行为
+     * - 家庭环境10维:亲密、情感表达、和谐、独立性、成就向导、文化氛围、娱乐活动、道德观念、家务安排、家庭规则
+     */
+    private DanParsedReport parseB2Report(List<String> lines, String fullText) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 1. 自我概念6维 (格式: "行为表现 9分")
+        String[][] selfConceptDims = {
+            {"行为表现", "selfConcept_behavior"},
+            {"能力与学校表现", "selfConcept_school"},
+            {"躯体外貌", "selfConcept_appearance"},
+            {"情绪状态", "selfConcept_emotion"},
+            {"合群", "selfConcept_sociability"},
+            {"幸福与满足", "selfConcept_happiness"},
+        };
+        for (String[] dim : selfConceptDims) {
+            String val = extractScoreWithLabel(fullText, dim[0]);
+            if (val != null) {
+                items.add(new DataItem(dim[1], "自我概念_" + dim[0], val, "selfConcept"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 2. 儿童行为8维
+        String[][] behaviorDims = {
+            {"品行问题", "conduct"},
+            {"情绪问题", "emotional"},
+            {"学习问题", "learning"},
+            {"社交问题", "social"},
+            {"生活习惯", "habits"},
+            {"多动倾向", "hyperactivity"},
+            {"刻板行为", "stereotypic"},
+            {"拖延行为", "procrastination"},
+        };
+        for (String[] dim : behaviorDims) {
+            // 方法1: 中文匹配 "品行问题 1分"
+            Pattern p1 = Pattern.compile(Pattern.quote(dim[0]) + "\\s*(\\d+)\\s*分");
+            Matcher m1 = p1.matcher(fullText);
+            if (m1.find()) {
+                items.add(new DataItem(dim[1], "行为_" + dim[0], m1.group(1), "behavior"));
+                extra.put(dim[1], m1.group(1));
+            } else {
+                // 方法2: 英文关键词
+                String engPattern = getBehaviorEnglishPattern(dim[0]);
+                if (engPattern != null) {
+                    Pattern p2 = Pattern.compile(engPattern + "\\s+(\\d+)\\s*分");
+                    Matcher m2 = p2.matcher(fullText);
+                    if (m2.find()) {
+                        items.add(new DataItem(dim[1], "行为_" + dim[0], m2.group(1), "behavior"));
+                        extra.put(dim[1], m2.group(1));
+                    }
+                }
+            }
+        }
+
+        // 3. 家庭环境10维
+        String[][] familyDims = {
+            {"亲密", "family_intimacy"},
+            {"情感表达", "family_expression"},
+            {"和谐", "family_harmony"},
+            {"独立性", "family_independence"},
+            {"成就向导", "family_achievement"},
+            {"文化氛围", "family_culture"},
+            {"娱乐活动", "family_recreation"},
+            {"道德观念", "family_morality"},
+            {"家务安排", "family_chores"},
+            {"家庭规则", "family_rules"},
+        };
+        for (String[] dim : familyDims) {
+            String val = extractScoreWithLabel(fullText, dim[0]);
+            if (val != null) {
+                items.add(new DataItem(dim[1], "家庭_" + dim[0], val, "family"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 通用正则提取
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) { exists = true; break; }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+        return new DanParsedReport("B2", "behavior", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    // ======================== B6 报告解析(职业/career) ========================
+
+    /**
+     * 解析 B6 职业发展报告
+     * - Holland兴趣6型:艺术型、社会型、事业型、常规型、现实型、研究型
+     * - 多元智能8维:内省能力、空间能力、音乐能力、人际关系能力、自然能力、身体运动能力、语言能力、逻辑数学能力
+     * - 职业价值观:代表分数
+     */
+    private DanParsedReport parseB6Report(List<String> lines, String fullText) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 1. Holland职业兴趣6型 (格式: "艺术型 Artistic 7分")
+        String[][] interestDims = {
+            {"艺术型", "interest_artistic"},
+            {"社会型", "interest_social"},
+            {"事业型", "interest_enterprising"},
+            {"常规型", "interest_conventional"},
+            {"现实型", "interest_realistic"},
+            {"研究型", "interest_investigative"},
+        };
+        for (String[] dim : interestDims) {
+            Pattern p = Pattern.compile(Pattern.quote(dim[0]) + "\\s+\\w+\\s+(\\d+)\\s*分");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                items.add(new DataItem(dim[1], "兴趣_" + dim[0], m.group(1), "hollandInterest"));
+                extra.put(dim[1], m.group(1));
+            } else {
+                // fallback: "艺术型 7分"
+                String val = extractScoreWithLabel(fullText, dim[0]);
+                if (val != null) {
+                    items.add(new DataItem(dim[1], "兴趣_" + dim[0], val, "hollandInterest"));
+                    extra.put(dim[1], val);
+                }
+            }
+        }
+
+        // 2. 多元智能8维 (格式: "内省能力 INTRAPERSONAL 8分")
+        String[][] abilityDims = {
+            {"内省能力", "ability_intrapersonal"},
+            {"空间能力", "ability_spatial"},
+            {"音乐能力", "ability_musical"},
+            {"人际关系能力", "ability_interpersonal"},
+            {"自然能力", "ability_naturalist"},
+            {"身体运动能力", "ability_kinesthetic"},
+            {"语言能力", "ability_linguistic"},
+            {"逻辑数学能力", "ability_logical"},
+        };
+        for (String[] dim : abilityDims) {
+            Pattern p = Pattern.compile(Pattern.quote(dim[0]) + "\\s+\\w+\\s+(\\d+)\\s*分");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                int val = Integer.parseInt(m.group(1));
+                if (val >= 1 && val <= 15) {
+                    items.add(new DataItem(dim[1], "能力_" + dim[0], m.group(1), "multipleIntelligence"));
+                    extra.put(dim[1], m.group(1));
+                    continue;
+                }
+            }
+            // fallback: "内省能力 8分"
+            Pattern p2 = Pattern.compile(Pattern.quote(dim[0]) + "\\s*(\\d+)\\s*分");
+            Matcher m2 = p2.matcher(fullText);
+            if (m2.find()) {
+                int val = Integer.parseInt(m2.group(1));
+                if (val >= 1 && val <= 15) {
+                    items.add(new DataItem(dim[1], "能力_" + dim[0], m2.group(1), "multipleIntelligence"));
+                    extra.put(dim[1], m2.group(1));
+                }
+            }
+        }
+
+        // 3. 职业价值观
+        if (fullText.contains("我的职业价值观")) {
+            Pattern p = Pattern.compile("我的职业价值观.*?(\\d+(?:\\.\\d+)?)", Pattern.DOTALL);
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                double val = Double.parseDouble(m.group(1));
+                if (val >= 1 && val <= 15) {
+                    items.add(new DataItem("career_value", "职业价值观", m.group(1), "careerValue"));
+                    extra.put("careerValue", m.group(1));
+                }
+            }
+        }
+        if (!extra.containsKey("careerValue") && fullText.contains("职业价值观")) {
+            Pattern p = Pattern.compile("职业价值观.*?最高分[^\\d]*(\\d+(?:\\.\\d+)?)", Pattern.DOTALL);
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                double val = Double.parseDouble(m.group(1));
+                if (val >= 1 && val <= 15) {
+                    items.add(new DataItem("career_value", "职业价值观", m.group(1), "careerValue"));
+                    extra.put("careerValue", m.group(1));
+                }
+            }
+        }
+
+        // 通用正则提取
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) { exists = true; break; }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+        return new DanParsedReport("B6", "career", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    // ======================== C1 报告解析(校园/campus) ========================
+
+    /**
+     * 解析 C1 校园标准版报告
+     * - 核心认知6维(复用A1逻辑):感知觉、注意力、记忆力、推理能力、空间能力、加工速度
+     * - 大五人格5维(复用A2逻辑):开放性、宜人性、责任心、外倾性、神经质
+     * - 自驱力3维(复用B4逻辑):自主性、胜任感、归属感
+     * - 自我概念6维(复用B2逻辑):行为表现、能力与学校、躯体外貌、情绪状态、合群、幸福与满足
+     */
+    private DanParsedReport parseC1Report(List<String> lines, String fullText) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 1. 核心认知6维 (复用A1逻辑: "我的感知觉得分 41  | 14%")
+        String[] cognitiveDims = {"感知觉", "注意力", "记忆力", "推理能力", "空间能力", "加工速度"};
+        String[] cogCodes = {"perception", "attention", "memory", "reasoning", "spatial", "processingSpeed"};
+        for (int i = 0; i < cognitiveDims.length; i++) {
+            String dim = cognitiveDims[i];
+            String code = cogCodes[i];
+            // 格式: "我的感知觉得分 41  | 14%"
+            Pattern p = Pattern.compile("我的" + Pattern.quote(dim) + "得分\\s*(\\d+)\\s*\\|\\s*(\\d+)%");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                items.add(new DataItem(code + "_score", dim + "得分", m.group(1), "cognitive"));
+                extra.put(code + "_score", m.group(1));
+                items.add(new DataItem(code + "_pct", dim + "百分位", m.group(2), "cognitive"));
+                extra.put(code + "_pct", m.group(2));
+            } else {
+                // fallback: "感知觉 | Perception\n百分位(%)\n14"
+                Pattern p2 = Pattern.compile(Pattern.quote(dim) + "\\s*\\|[^\\n]*\\n\\s*百分位(%)\\s*\\n\\s*(\\d+)");
+                Matcher m2 = p2.matcher(fullText);
+                if (m2.find()) {
+                    items.add(new DataItem(code + "_pct", dim + "百分位", m2.group(1), "cognitive"));
+                    extra.put(code + "_pct", m2.group(1));
+                }
+            }
+        }
+
+        // 2. 大五人格5维 (复用A2逻辑)
+        String[] big5Names = {"开放性", "宜人性", "责任心", "外倾性", "神经质"};
+        for (String dim : big5Names) {
+            Pattern p = Pattern.compile("您在[\"\"「]" + Pattern.quote(dim) + "[\"\"」].*?得分是\\s*(\\d+(?:\\.\\d+)?)\\s*分");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                items.add(new DataItem("big5_" + dim, dim, m.group(1), "bigFive"));
+                extra.put("big5_" + dim, m.group(1));
+            }
+        }
+
+        // 3. 自驱力3维 (使用"我的得分"模式)
+        Pattern drivingP = Pattern.compile("我的得分[::](\\d+\\.?\\d*)");
+        Matcher drivingM = drivingP.matcher(fullText);
+        List<String> drivingScores = new ArrayList<>();
+        while (drivingM.find()) {
+            drivingScores.add(drivingM.group(1));
+        }
+        String[] drivingNames = {"自主性", "胜任感", "归属感"};
+        String[] drivingCodes = {"autonomy", "competence", "belonging"};
+        for (int i = 0; i < drivingScores.size() && i < drivingNames.length; i++) {
+            items.add(new DataItem(drivingCodes[i], drivingNames[i], drivingScores.get(i), "selfDriving"));
+            extra.put(drivingCodes[i], drivingScores.get(i));
+        }
+
+        // 4. 自我概念6维 (在SELF-CONCEPT标记前找百分位)
+        int scStart = fullText.indexOf("SELF-CONCEPT");
+        if (scStart >= 0) {
+            String beforeSC = fullText.substring(0, scStart);
+            Pattern pctP = Pattern.compile("(\\d+)%");
+            Matcher pctM = pctP.matcher(beforeSC);
+            List<String> pcts = new ArrayList<>();
+            while (pctM.find()) {
+                pcts.add(pctM.group(1));
+            }
+            String[] scDims = {"行为表现", "能力与学校", "躯体外貌", "情绪状态", "合群", "幸福与满足"};
+            String[] scCodes = {"sc_behavior", "sc_school", "sc_appearance", "sc_emotion", "sc_sociability", "sc_happiness"};
+            int startIdx = Math.max(0, pcts.size() - 12);
+            for (int i = 0; i < scDims.length; i++) {
+                int idx = startIdx + i * 2 + 1;
+                if (idx < pcts.size()) {
+                    items.add(new DataItem(scCodes[i], "自我概念_" + scDims[i], pcts.get(idx), "selfConcept"));
+                    extra.put(scCodes[i], pcts.get(idx));
+                }
+            }
+        }
+
+        // 通用正则提取
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) { exists = true; break; }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+        return new DanParsedReport("C1", "campus", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    // ======================== B5 报告解析(青春期/adolescent) ========================
+
+    /**
+     * 解析 B5 青春期挑战报告(文本部分,不含指南针图像分析)
+     * - 情绪调节策略2维:认知重评、表达抑制
+     * - 学业压力源5维:学业负担、家庭期望、师生关系、自我期望、同伴竞争
+     * - 人际关系问题4维:母亲关系、父亲关系、师生关系、同伴关系
+     * - 社交能力5维:主动交往、情感支持、情感表达、表达影响、冲突解决
+     * - 睡眠数据:时长、效率、入睡时间、主观质量、日间功能、催眠药物
+     * - 运动数据:时长、强度
+     * - 网络依赖数据
+     */
+    private DanParsedReport parseB5Report(List<String> lines, String fullText, java.awt.image.BufferedImage compassImage) {
+        List<DataItem> items = new ArrayList<>();
+        Map<String, Object> extra = new LinkedHashMap<>();
+        StringBuilder summary = new StringBuilder();
+        StringBuilder suggestions = new StringBuilder();
+
+        String reportDate = findFieldValue(lines, "测评日期", "报告日期", "评估日期");
+        String name = findFieldValue(lines, "姓名", "学生姓名", "被评估人");
+        extra.put("name", name);
+        extra.put("reportDate", reportDate);
+
+        Map<String, String> scorePct = extractTotalScoreAndPercentile(fullText);
+        if (scorePct.get("总分") != null) {
+            items.add(new DataItem("total_score", "总分", scorePct.get("总分"), "overall"));
+            extra.put("totalScore", scorePct.get("总分"));
+        }
+        if (scorePct.get("百分位") != null) {
+            items.add(new DataItem("percentile", "百分位", scorePct.get("百分位"), "overall"));
+            extra.put("percentile", scorePct.get("百分位"));
+        }
+
+        // 1. 情绪调节策略2维
+        String[] erLabels = {"认知重评", "表达抑制"};
+        String[] erCodes = {"er_reappraisal", "er_suppression"};
+        String[] erEng = {"Cognitive Reappraisal", "Expressive Suppression"};
+        for (int i = 0; i < erLabels.length; i++) {
+            Pattern p1 = Pattern.compile(
+                    Pattern.quote(erLabels[i]) + ".*?" + Pattern.quote(erEng[i]) + "\\s*(\\d+(?:\\.\\d+)?)\\s*分",
+                    Pattern.DOTALL);
+            Matcher m1 = p1.matcher(fullText);
+            if (m1.find()) {
+                items.add(new DataItem(erCodes[i], erLabels[i], m1.group(1), "emotionRegulation"));
+                extra.put(erCodes[i], m1.group(1));
+            } else {
+                String val = extractScoreWithLabel(fullText, erLabels[i]);
+                if (val != null) {
+                    items.add(new DataItem(erCodes[i], erLabels[i], val, "emotionRegulation"));
+                    extra.put(erCodes[i], val);
+                }
+            }
+        }
+
+        // 2. 学业压力源5维
+        String[] stressDims = {"学业负担", "家庭期望", "师生关系", "自我期望", "同伴竞争"};
+        String[] stressCodes = {"stress_burden", "stress_family", "stress_teacher", "stress_self", "stress_peer"};
+        String stressSection = extractRegion(fullText,
+                new String[]{"学业压力源", "学业压力"},
+                new String[]{"人际关系问题", "社交能力", "睡眠"});
+        for (int i = 0; i < stressDims.length; i++) {
+            String val = extractNamedScore(stressSection != null ? stressSection : fullText, stressDims[i]);
+            if (val != null) {
+                items.add(new DataItem(stressCodes[i], "学业压力_" + stressDims[i], val, "academicStress"));
+                extra.put(stressCodes[i], val);
+            }
+        }
+
+        // 3. 人际关系问题4维
+        String[] relationDims = {"母亲关系", "父亲关系", "师生关系", "同伴关系"};
+        String[] relationCodes = {"rel_mother", "rel_father", "rel_teacher", "rel_peer"};
+        String relSection = extractRegion(fullText,
+                new String[]{"人际关系问题"},
+                new String[]{"社交能力"});
+        for (int i = 0; i < relationDims.length; i++) {
+            Pattern p = Pattern.compile(
+                    Pattern.quote(relationDims[i]) + "\\n[^\\n]*。\\n(\\d+(?:\\.\\d+)?)",
+                    Pattern.DOTALL);
+            Matcher m = p.matcher(relSection != null ? relSection : fullText);
+            if (m.find()) {
+                items.add(new DataItem(relationCodes[i], "人际_" + relationDims[i], m.group(1), "interpersonal"));
+                extra.put(relationCodes[i], m.group(1));
+            }
+        }
+
+        // 4. 社交能力5维
+        String[] socialDims = {"主动交往", "情感支持", "情感表达", "表达影响", "冲突解决"};
+        String[] socialCodes = {"soc_initiative", "soc_support", "soc_expression", "soc_influence", "soc_conflict"};
+        String socSection = extractRegion(fullText,
+                new String[]{"社交能力"},
+                new String[]{"睡眠"});
+        Pattern socP = Pattern.compile(
+                "同龄人平均水平\\s*\\n\\s*(\\d+(?:\\.\\d+)?)\\s*\\n\\s*(\\d+(?:\\.\\d+)?)\\s*\\n\\s*(\\d+(?:\\.\\d+)?)\\s*\\n\\s*(\\d+(?:\\.\\d+)?)\\s*\\n\\s*(\\d+(?:\\.\\d+)?)",
+                Pattern.DOTALL);
+        Matcher socM = socP.matcher(socSection != null ? socSection : fullText);
+        if (socM.find()) {
+            for (int i = 0; i < socialDims.length && i + 1 <= socM.groupCount(); i++) {
+                items.add(new DataItem(socialCodes[i], "社交_" + socialDims[i], socM.group(i + 1), "socialAbility"));
+                extra.put(socialCodes[i], socM.group(i + 1));
+            }
+        }
+
+        // 5. 睡眠数据
+        Pattern sleepH = Pattern.compile("睡眠时长[^。]*?(\\d+(?:\\.\\d+)?)\\s*小时");
+        Matcher sleepHM = sleepH.matcher(fullText);
+        if (sleepHM.find()) {
+            items.add(new DataItem("sleep_hours", "睡眠时长", sleepHM.group(1), "sleep"));
+            extra.put("sleepHours", sleepHM.group(1));
+        }
+
+        Pattern sleepE = Pattern.compile("睡眠效率[^。]*?(\\d+(?:\\.\\d+)?)%");
+        Matcher sleepEM = sleepE.matcher(fullText);
+        if (sleepEM.find()) {
+            items.add(new DataItem("sleep_efficiency", "睡眠效率", sleepEM.group(1), "sleep"));
+            extra.put("sleepEfficiency", sleepEM.group(1));
+        }
+
+        Pattern sleepL = Pattern.compile("入睡时间[^。]*?(\\d+)-(\\d+)分钟");
+        Matcher sleepLM = sleepL.matcher(fullText);
+        if (sleepLM.find()) {
+            items.add(new DataItem("sleep_latency", "入睡时间", sleepLM.group(1), "sleep"));
+            extra.put("sleepLatency", sleepLM.group(1));
+        }
+
+        String[][] sleepQual = {
+            {"主观睡眠质量", "sleep_quality"},
+            {"日间功能障碍", "sleep_dysfunction"},
+            {"催眠药物", "sleep_medication"},
+        };
+        for (String[] dim : sleepQual) {
+            String val = extractNamedScore(fullText, dim[0]);
+            if (val != null) {
+                items.add(new DataItem(dim[1], "睡眠_" + dim[0], val, "sleep"));
+                extra.put(dim[1], val);
+            }
+        }
+
+        // 6. 运动/网络
+        Pattern exercise = Pattern.compile("运动时长[^。]*?(\\d+(?:\\.\\d+)?)\\s*(小时|分钟|h)");
+        Matcher exM = exercise.matcher(fullText);
+        if (exM.find()) {
+            items.add(new DataItem("exercise_duration", "运动时长", exM.group(1), "exercise"));
+            extra.put("exerciseDuration", exM.group(1));
+        }
+
+        Pattern internet = Pattern.compile("网络使用[^。]*?(\\d+(?:\\.\\d+)?)\\s*小时");
+        Matcher inM = internet.matcher(fullText);
+        if (inM.find()) {
+            items.add(new DataItem("internet_duration", "网络使用时长", inM.group(1), "internet"));
+            extra.put("internetDuration", inM.group(1));
+        }
+
+        // 7. 人际关系指南针图19个子维度分数(第9页图像分析)
+        if (compassImage != null) {
+            try {
+                Map<String, Double> compassScores = extractB5CompassScores(compassImage, fullText);
+                for (Map.Entry<String, Double> entry : compassScores.entrySet()) {
+                    items.add(new DataItem(
+                        entry.getKey().replace('_', '.'),
+                        "人际指南针_" + entry.getKey(),
+                        String.valueOf(entry.getValue()),
+                        "compass"));
+                    extra.put(entry.getKey(), entry.getValue());
+                }
+            } catch (Exception e) {
+                log.warn("B5指南针图像提取失败,跳过: {}", e.getMessage());
+            }
+        }
+
+        // 通用正则提取
+        Pattern scorePattern = Pattern.compile("([\\u4e00-\\u9fa5]{2,8})[::]\\s*(\\d+(\\.\\d+)?)");
+        Matcher matcher = scorePattern.matcher(fullText);
+        while (matcher.find()) {
+            String key = matcher.group(1).trim();
+            String val = matcher.group(2).trim();
+            boolean exists = false;
+            for (DataItem item : items) {
+                if (item.getName().equals(key)) { exists = true; break; }
+            }
+            if (!exists && !key.contains("日期") && !key.contains("姓名")) {
+                items.add(new DataItem("score_" + key.hashCode(), key, val, "auto"));
+            }
+        }
+
+        summary.append(extractSection(fullText, "测评总结", "成长建议"));
+        suggestions.append(extractSection(fullText, "成长建议", null));
+        return new DanParsedReport("B5", "adolescent", items, extra, summary.toString(), suggestions.toString());
+    }
+
+    /**
+     * 提取两个标记之间的文本区域
+     */
+    private String extractRegion(String fullText, String[] startMarkers, String[] endMarkers) {
+        int start = -1;
+        for (String marker : startMarkers) {
+            int idx = fullText.indexOf(marker);
+            if (idx >= 0) { start = idx; break; }
+        }
+        if (start < 0) return null;
+        int end = fullText.length();
+        for (String marker : endMarkers) {
+            int idx = fullText.indexOf(marker, start + 1);
+            if (idx >= 0 && idx < end) { end = idx; }
+        }
+        return end > start ? fullText.substring(start, end) : null;
+    }
+
+    /**
+     * 提取区域中维度名后的分数 (格式: "维度名\n分数")
+     */
+    private String extractNamedScore(String text, String label) {
+        if (text == null) return null;
+        Pattern p = Pattern.compile(Pattern.quote(label) + "\\s*\\n\\s*(\\d+(?:\\.\\d+)?)");
+        Matcher m = p.matcher(text);
+        if (m.find()) {
+            return m.group(1);
+        }
+        return null;
+    }
+
+    /**
+     * 从文本中提取标签后的分数 (格式: "行为表现 9分")
+     */
+    private String extractScoreWithLabel(String fullText, String label) {
+        Pattern p = Pattern.compile(Pattern.quote(label) + "\\s*(\\d+)\\s*分");
+        Matcher m = p.matcher(fullText);
+        if (m.find()) {
+            return m.group(1);
+        }
+        return null;
+    }
+
+    /**
+     * 儿童行为维度的英文关键词映射
+     */
+    private String getBehaviorEnglishPattern(String cnName) {
+        switch (cnName) {
+            case "品行问题": return "Conduct problems";
+            case "情绪问题": return "Emotional state";
+            case "学习问题": return "Learning situation";
+            case "社交问题": return "Social situation";
+            case "生活习惯": return "Habits.*?customs";
+            case "多动倾向": return "Hyperactivity";
+            case "刻板行为": return "Stereotypic";
+            case "拖延行为": return "Procrastination";
+            default: return null;
+        }
+    }
+
+    /**
+     * 提取总分和百分位(通用,所有报告类型共用)
+     * PDF格式: "112\n总得分\nTotal Score\n79\n百分位(%)"
+     */
+    private Map<String, String> extractTotalScoreAndPercentile(String fullText) {
+        Map<String, String> result = new LinkedHashMap<>();
+        if (fullText == null) return result;
+
+        // 主格式: 数字\n总得分
+        Pattern scoreP = Pattern.compile("(\\d+)\\s*\\n\\s*总得分");
+        Matcher scoreM = scoreP.matcher(fullText);
+        if (scoreM.find()) {
+            result.put("总分", scoreM.group(1));
+        }
+
+        // 百分位: 总得分...数字...百分位
+        Pattern pctP = Pattern.compile("总得分.*?(\\d+)\\s*百分位", Pattern.DOTALL);
+        Matcher pctM = pctP.matcher(fullText);
+        if (pctM.find()) {
+            result.put("百分位", pctM.group(1));
+        }
+
+        // 后备1: 旧版 "总分" 格式
+        if (!result.containsKey("总分")) {
+            Pattern fallbackP = Pattern.compile("总分[^\\d]*(\\d+)");
+            Matcher fallbackM = fallbackP.matcher(fullText);
+            if (fallbackM.find()) {
+                result.put("总分", fallbackM.group(1));
+            }
+        }
+
+        // 后备2: 旧版 "百分位" 格式
+        if (!result.containsKey("百分位")) {
+            Pattern fallbackP2 = Pattern.compile("百分位[^\\d]*(\\d+)");
+            Matcher fallbackM2 = fallbackP2.matcher(fullText);
+            if (fallbackM2.find()) {
+                result.put("百分位", fallbackM2.group(1));
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 提取标签后的分数值。支持格式:
+     * - "深层动机\n我的得分:8分"
+     * - "深层动机 8分"
+     */
+    private String extractScoreAfterLabel(String fullText, String label) {
+        // 方法1: "深层动机...我的得分:8分"
+        Pattern p1 = Pattern.compile(
+                Pattern.quote(label) + ".*?我的得分[::]\\s*(\\d+(?:\\.\\d+)?)",
+                Pattern.DOTALL);
+        Matcher m1 = p1.matcher(fullText);
+        if (m1.find()) {
+            return m1.group(1);
+        }
+        // 方法2: "深层动机 8分"
+        Pattern p2 = Pattern.compile(
+                Pattern.quote(label) + "\\s*(\\d+(?:\\.\\d+)?)\\s*分");
+        Matcher m2 = p2.matcher(fullText);
+        if (m2.find()) {
+            return m2.group(1);
+        }
+        return null;
+    }
+
     // ======================== 解析辅助方法 ========================
 
     /**
@@ -512,6 +1438,177 @@ public class DanReportParseService {
         return "";
     }
 
+    // ======================== B5 指南针图像分析常量 ========================
+
+    /** 象限角度范围 (图像坐标系: 0°=右, 90°=下, 180°=左, 270°=上) */
+    private static final Map<String, int[]> B5_QUAD_ANGLES = new LinkedHashMap<String, int[]>() {{
+        put("母亲关系", new int[]{185, 265});
+        put("父亲关系", new int[]{140, 178});
+        put("师生关系", new int[]{275, 350});
+        put("同伴关系", new int[]{2, 42});
+    }};
+
+    /** 每度fill到分数的线性映射系数 */
+    private static final Map<String, Double> B5_QUAD_FACTORS = new LinkedHashMap<String, Double>() {{
+        put("母亲关系", 0.006974);
+        put("父亲关系", 0.005834);
+        put("师生关系", 0.006820);
+        put("同伴关系", 0.005049);
+    }};
+
+    /** 指南针中心坐标 */
+    private static final int B5_CENTER_X = 857;
+    private static final int B5_CENTER_Y = 758;
+
+    /** 各象限的子维度名称 */
+    private static final Map<String, String[]> B5_SUB_DIMS = new LinkedHashMap<String, String[]>() {{
+        put("母亲关系", new String[]{"控制压迫", "情感疏离", "价值冲突", "双重标准", "过度期待"});
+        put("父亲关系", new String[]{"控制压迫", "情感疏离", "价值冲突", "双重标准", "过度期待"});
+        put("师生关系", new String[]{"回避型", "敌对型", "高控制型", "关系疏离型"});
+        put("同伴关系", new String[]{"回避型", "被排斥型", "攻击型", "边缘型", "特殊因素型"});
+    }};
+
+    // ======================== B5 指南针图像分析方法 ========================
+
+    /**
+     * 从B5 PDF文档第9页提取人际关系指南针图像
+     * 返回PNG图像解析出的BufferedImage,不含数据则表示未找到图像
+     */
+    private java.awt.image.BufferedImage extractB5CompassImage(PDDocument document) {
+        try {
+            if (document.getNumberOfPages() < 9) {
+                return null;
+            }
+            org.apache.pdfbox.pdmodel.PDPage page = document.getPage(8);
+            org.apache.pdfbox.pdmodel.PDResources resources = page.getResources();
+            if (resources == null) return null;
+
+            int imgIndex = 0;
+            for (org.apache.pdfbox.cos.COSName name : resources.getXObjectNames()) {
+                org.apache.pdfbox.pdmodel.graphics.PDXObject xobj = resources.getXObject(name);
+                if (xobj instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) {
+                    if (imgIndex == 3) {
+                        org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject img =
+                                (org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) xobj;
+                        return img.getImage();
+                    }
+                    imgIndex++;
+                }
+            }
+        } catch (Exception e) {
+            log.warn("B5指南针图像提取失败: {}", e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 沿指定角度测量填充范围(像素半径)
+     * 从r=150开始扫描跳过中心色块, 25px间隙容忍用于跨越填充分区内的环线
+     */
+    private Integer measureFillAtAngle(java.awt.image.BufferedImage img, int cx, int cy, double angleDeg) {
+        double angle = Math.toRadians(angleDeg);
+        double cosA = Math.cos(angle);
+        double sinA = Math.sin(angle);
+        int w = img.getWidth();
+        int h = img.getHeight();
+        int maxR = Math.min(Math.min(w - cx, cx), Math.min(cy, h - cy)) - 2;
+        Integer fillEnd = null;
+        int gap = 0;
+
+        for (int r = 150; r < maxR; r++) {
+            int x = cx + (int)(r * cosA);
+            int y = cy + (int)(r * sinA);
+            if (x < 0 || x >= w || y < 0 || y >= h) break;
+
+            int rgb = img.getRGB(x, y);
+            int red = (rgb >> 16) & 0xFF;
+            int green = (rgb >> 8) & 0xFF;
+            int blue = rgb & 0xFF;
+
+            boolean isWhite = red > 230 && green > 230 && blue > 230;
+            boolean isGray = red > 155 && red < 195 && green > 155 && green < 195 && blue > 155 && blue < 195;
+            boolean isBlack = red < 20 && green < 20 && blue < 20;
+            boolean isColored = !(isWhite || isGray || isBlack);
+
+            if (isColored) {
+                fillEnd = r;
+                gap = 0;
+            } else if (fillEnd != null) {
+                gap++;
+                if (gap > 25) break;
+            }
+        }
+        return fillEnd;
+    }
+
+    /**
+     * 从B5指南针图像提取19个子维度分数
+     * 返回 { "人际_母亲关系_控制压迫": score, ... }
+     */
+    private Map<String, Double> extractB5CompassScores(
+            java.awt.image.BufferedImage img, String fullText) {
+        Map<String, Double> result = new LinkedHashMap<>();
+        if (img == null) return result;
+
+        int cx = B5_CENTER_X;
+        int cy = B5_CENTER_Y;
+
+        // 计算每象限的per-student校准因子
+        Map<String, Double> quadFactors = new LinkedHashMap<>();
+        for (Map.Entry<String, int[]> entry : B5_QUAD_ANGLES.entrySet()) {
+            String qname = entry.getKey();
+            int a1 = entry.getValue()[0];
+            int a2 = entry.getValue()[1];
+
+            List<Integer> fills = new ArrayList<>();
+            for (int a = a1; a <= a2; a++) {
+                Integer fe = measureFillAtAngle(img, cx, cy, a);
+                if (fe != null) fills.add(fe);
+            }
+            double avg = fills.isEmpty() ? 1.0
+                    : fills.stream().mapToInt(Integer::intValue).average().orElse(1.0);
+
+            // 尝试从第9页文本提取关系维度的总分作为校准基准
+            double txtScore = 3.0;
+            Pattern p = Pattern.compile(Pattern.quote(qname) + "\\s*\\n\\s*(\\d+(?:\\.\\d+)?)");
+            Matcher m = p.matcher(fullText);
+            if (m.find()) {
+                try { txtScore = Double.parseDouble(m.group(1)); } catch (NumberFormatException ignored) {}
+            }
+
+            double factor = avg > 0 ? txtScore / avg : B5_QUAD_FACTORS.getOrDefault(qname, 0.005);
+            quadFactors.put(qname, factor);
+        }
+
+        // 提取各象限的子维度分数
+        for (Map.Entry<String, int[]> entry : B5_QUAD_ANGLES.entrySet()) {
+            String quadName = entry.getKey();
+            int a1 = entry.getValue()[0];
+            int a2 = entry.getValue()[1];
+            String[] dims = B5_SUB_DIMS.get(quadName);
+            if (dims == null) continue;
+
+            int n = dims.length;
+            double step = (a2 - a1) / (double)(n + 1);
+            double factor = quadFactors.getOrDefault(quadName,
+                    B5_QUAD_FACTORS.getOrDefault(quadName, 0.005));
+
+            for (int i = 0; i < n; i++) {
+                double angle = a1 + (i + 1) * step;
+                List<Integer> fills = new ArrayList<>();
+                for (int offset = -2; offset <= 2; offset += 2) {
+                    Integer fe = measureFillAtAngle(img, cx, cy, angle + offset);
+                    if (fe != null) fills.add(fe);
+                }
+                double avgFill = fills.isEmpty() ? 0
+                        : fills.stream().mapToInt(Integer::intValue).average().orElse(0);
+                double score = Math.min(5.0, Math.max(1.0, Math.round(avgFill * factor * 10.0) / 10.0));
+                result.put("人际_" + quadName + "_" + dims[i], score);
+            }
+        }
+        return result;
+    }
+
     // ======================== 内部数据类 ========================
 
     /**

+ 6 - 3
cfc-backend/src/main/java/com/etotem/cfc/service/DanReportUploadService.java

@@ -53,12 +53,15 @@ public class DanReportUploadService {
         if (file == null || file.isEmpty()) {
             return Result.error("请选择文件");
         }
-        if (!DanReportUpload.DIM_MIND.equals(dimension) && !DanReportUpload.DIM_WISDOM.equals(dimension)) {
-            return Result.error("dimension 必须为 mind 或 wisdom");
+if (!DanReportUpload.DIM_MIND.equals(dimension) && !DanReportUpload.DIM_WISDOM.equals(dimension)
+                && !DanReportUpload.DIM_COGNITION.equals(dimension) && !DanReportUpload.DIM_LEARNING.equals(dimension)
+                && !DanReportUpload.DIM_BEHAVIOR.equals(dimension) && !DanReportUpload.DIM_CAREER.equals(dimension)
+                && !DanReportUpload.DIM_CAMPUS.equals(dimension) && !DanReportUpload.DIM_ADOLESCENT.equals(dimension)) {
+            return Result.error("dimension 必须为 mind/wisdom/cognition/learning/behavior/career/campus/adolescent");
         }
 
         // 1. 保存文件
-        String fileUrl = fileStorageService.upload(file, "dan-reports");
+        String fileUrl = fileStorageService.store(file, "dan-reports");
         if (fileUrl == null) {
             return Result.error("文件保存失败");
         }

+ 2 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/DimensionEnergySyncService.java

@@ -3,6 +3,7 @@ package com.etotem.cfc.service;
 import com.etotem.cfc.entity.HealthDimensionScore;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -34,6 +35,7 @@ public class DimensionEnergySyncService {
     private HealthDimensionScoreService scoreService;
 
     @Resource
+    @Lazy
     private EnergyService energyService;
 
     @Resource

+ 54 - 21
cfc-backend/src/main/java/com/etotem/cfc/service/FileStorageService.java

@@ -12,6 +12,8 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
 import java.util.UUID;
 
 @Service
@@ -19,45 +21,76 @@ public class FileStorageService {
 
     private static final Logger log = LoggerFactory.getLogger(FileStorageService.class);
 
-    @Value("${file.upload-dir:./uploads}")
-    private String uploadDir;
+    @Value("${upload.base-dir:/data/cfc-uploads}")
+    private String baseDir;
 
+    @Value("${upload.allowed-types:image/jpeg,image/png,image/gif,image/webp}")
+    private String allowedTypesStr;
+
+    private List<String> allowedTypes;
     private Path uploadPath;
 
     @PostConstruct
     public void init() {
-        uploadPath = Paths.get(uploadDir).toAbsolutePath().normalize();
+        allowedTypes = Arrays.asList(allowedTypesStr.split(","));
+        uploadPath = Paths.get(baseDir).toAbsolutePath().normalize();
         try {
             Files.createDirectories(uploadPath);
         } catch (IOException e) {
             log.error("初始化上传目录失败: {}", uploadPath, e);
         }
+        log.info("FileStorageService init: baseDir={}, allowedTypes={}", uploadPath, allowedTypes);
     }
 
-    public String upload(MultipartFile file, String subDir) {
+    public String store(MultipartFile file, String subDir) {
         if (file == null || file.isEmpty()) {
-            return null;
+            throw new IllegalArgumentException("文件为空");
         }
-        try {
-            String originalName = file.getOriginalFilename();
-            String ext = "";
-            if (originalName != null && originalName.contains(".")) {
-                ext = originalName.substring(originalName.lastIndexOf("."));
-            }
-            String filename = UUID.randomUUID().toString().replace("-", "") + ext;
+        String contentType = file.getContentType();
+        if (contentType == null || !allowedTypes.contains(contentType)) {
+            throw new IllegalArgumentException("不支持的文件类型,仅支持: " + allowedTypes);
+        }
+        String originalName = file.getOriginalFilename();
+        String ext = "";
+        if (originalName != null && originalName.contains(".")) {
+            ext = originalName.substring(originalName.lastIndexOf("."));
+        }
+        String filename = UUID.randomUUID().toString().replace("-", "") + ext;
 
-            Path targetDir = uploadPath.resolve(subDir != null ? subDir : "general");
+        Path targetDir = uploadPath.resolve(subDir != null ? subDir : "general");
+        try {
             Files.createDirectories(targetDir);
+        } catch (IOException e) {
+            throw new RuntimeException("创建上传目录失败: " + targetDir, e);
+        }
 
-            Path targetPath = targetDir.resolve(filename);
+        Path targetPath = targetDir.resolve(filename);
+        try {
             file.transferTo(targetPath.toFile());
-
-            String relativePath = (subDir != null ? "/" + subDir : "") + "/" + filename;
-            log.info("文件已保存: {}", relativePath);
-            return relativePath;
         } catch (IOException e) {
-            log.error("文件上传失败", e);
-            return null;
+            throw new RuntimeException("文件保存失败", e);
+        }
+
+        String url = "/uploads/" + (subDir != null ? subDir + "/" : "") + filename;
+        log.info("文件已保存: original={}, url={}", originalName, url);
+        return url;
+    }
+
+    public boolean delete(String url) {
+        if (url == null || url.isEmpty() || !url.startsWith("/uploads/")) {
+            return false;
+        }
+        String relativePath = url.replace("/uploads/", "");
+        Path filePath = uploadPath.resolve(relativePath);
+        if (Files.exists(filePath)) {
+            try {
+                Files.delete(filePath);
+                log.info("文件已删除: {}", url);
+                return true;
+            } catch (IOException e) {
+                log.error("文件删除失败: {}", url, e);
+            }
         }
+        return false;
     }
-}
+}

+ 20 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/HealthKnowledgeBaseService.java

@@ -56,4 +56,24 @@ public class HealthKnowledgeBaseService {
     public void insert(HealthKnowledgeBase entry) {
         healthKnowledgeBaseMapper.insert(entry);
     }
+
+    public List<HealthKnowledgeBase> listAll() {
+        return healthKnowledgeBaseMapper.selectList(null);
+    }
+
+    public void save(HealthKnowledgeBase entry) {
+        if (entry.getId() != null) {
+            healthKnowledgeBaseMapper.updateById(entry);
+        } else {
+            healthKnowledgeBaseMapper.insert(entry);
+        }
+    }
+
+    public void updateById(HealthKnowledgeBase entry) {
+        healthKnowledgeBaseMapper.updateById(entry);
+    }
+
+    public void removeById(Long id) {
+        healthKnowledgeBaseMapper.deleteById(id);
+    }
 }

+ 20 - 9
cfc-backend/src/main/java/com/etotem/cfc/service/HealthReportService.java

@@ -1048,17 +1048,28 @@ public class HealthReportService {
 
     List<HealthGutFlora> buildGutFloraFromPayload(ParsedReportPayload.Payload payload) {
         List<HealthGutFlora> result = new ArrayList<>();
-        if (payload.getGutFlora() != null) {
-            for (ParsedReportPayload.Flora pf : payload.getGutFlora()) {
-                result.add(convertToGutFlora(pf));
-            }
-        }
-        if (payload.getProbioticSpecies() != null) {
-            for (ParsedReportPayload.Flora pf : payload.getProbioticSpecies()) {
-                result.add(convertToGutFlora(pf));
+        // 核心菌属 + 有害菌属等
+        addFloraList(result, payload.getGutFlora());
+        // 益生菌种
+        addFloraList(result, payload.getProbioticSpecies());
+        // Taxonomy 层级
+        addFloraList(result, payload.getTaxonomyClass());
+        addFloraList(result, payload.getTaxonomyOrder());
+        addFloraList(result, payload.getTaxonomyFamily());
+        addFloraList(result, payload.getTaxonomyGenus());
+        addFloraList(result, payload.getTaxonomySpecies());
+        // 病原菌
+        addFloraList(result, payload.getPathogenGenus());
+        addFloraList(result, payload.getPathogenDetection());
+        return result;
+    }
+
+    private void addFloraList(List<HealthGutFlora> target, List<ParsedReportPayload.Flora> source) {
+        if (source != null) {
+            for (ParsedReportPayload.Flora pf : source) {
+                target.add(convertToGutFlora(pf));
             }
         }
-        return result;
     }
 
     private HealthGutFlora convertToGutFlora(ParsedReportPayload.Flora pf) {

+ 280 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/KnowledgeBaseV3Service.java

@@ -0,0 +1,280 @@
+package com.etotem.cfc.service;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.io.InputStream;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+/**
+ * KB v3 知识库服务 — 从 classpath 加载 报告指标知识库.json
+ * 提供菌属功能、指标调整建议、食物营养数据的快速查找
+ *
+ * 数据源:knowledge-base/报告指标知识库.json
+ * 匹配策略:精确匹配 → 属级回退(学名首词)
+ */
+@Slf4j
+@Service
+public class KnowledgeBaseV3Service {
+
+    @Resource
+    private ObjectMapper objectMapper;
+
+    /** 原始 KB JSON 根 */
+    private Map<String, Object> kbRoot;
+
+    /** 菌属索引: 学名 → 条目 */
+    private Map<String, Map<String, Object>> bacteriaIndex;
+
+    /** 指标索引: section名称 → (指标名称 → 条目) */
+    private Map<String, Map<String, Map<String, Object>>> indicatorIndex;
+
+    /** 食物索引: 食物名称 → 条目 */
+    private Map<String, Map<String, Object>> foodIndex;
+
+    /** 食物分类列表 */
+    private Map<String, List<Map<String, Object>>> foodByCategory;
+
+    @PostConstruct
+    public void init() {
+        try (InputStream is = getClass().getResourceAsStream("/knowledge-base/报告指标知识库.json")) {
+            if (is == null) {
+                log.warn("KB v3 JSON not found at classpath:knowledge-base/报告指标知识库.json");
+                kbRoot = Collections.emptyMap();
+                bacteriaIndex = Collections.emptyMap();
+                indicatorIndex = Collections.emptyMap();
+                foodIndex = Collections.emptyMap();
+                foodByCategory = Collections.emptyMap();
+                return;
+            }
+            kbRoot = objectMapper.readValue(is, new TypeReference<Map<String, Object>>() {});
+            buildIndexes();
+            log.info("KB v3 loaded: {} kbRoot keys, {} bacteria, {} indicators, {} foods",
+                    kbRoot.size(), bacteriaIndex.size(), indicatorIndex.size(), foodIndex.size());
+        } catch (Exception e) {
+            log.error("Failed to load KB v3 JSON", e);
+            kbRoot = Collections.emptyMap();
+            bacteriaIndex = Collections.emptyMap();
+            indicatorIndex = Collections.emptyMap();
+            foodIndex = Collections.emptyMap();
+            foodByCategory = Collections.emptyMap();
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private void buildIndexes() {
+        // --- 菌属索引 ---
+        bacteriaIndex = new ConcurrentHashMap<>();
+        Object floraRaw = kbRoot.get("菌属功能库");
+        if (floraRaw instanceof Map) {
+            Object generaRaw = ((Map<String, Object>) floraRaw).get("菌属");
+            if (generaRaw instanceof List) {
+                for (Object item : (List<Object>) generaRaw) {
+                    if (item instanceof Map) {
+                        Map<String, Object> entry = (Map<String, Object>) item;
+                        String latinName = (String) entry.get("学名");
+                        if (latinName != null && !latinName.isEmpty()) {
+                            bacteriaIndex.put(latinName, entry);
+                        }
+                    }
+                }
+            }
+        }
+
+        // --- 指标索引 ---
+        indicatorIndex = new ConcurrentHashMap<>();
+        List<String> indicatorSections = Arrays.asList(
+                "疾病风险评估", "主要营养评估", "氨基酸评估", "维生素评估",
+                "微量元素评估", "抗生素风险评估", "肠道屏障及代谢物",
+                "短链脂肪酸", "神经递质及激素", "健康总分评估"
+        );
+        for (String section : indicatorSections) {
+            Object secRaw = kbRoot.get(section);
+            if (secRaw instanceof Map) {
+                Object indicatorsRaw = ((Map<String, Object>) secRaw).get("指标");
+                if (indicatorsRaw instanceof List) {
+                    Map<String, Map<String, Object>> sectionIndex = new ConcurrentHashMap<>();
+                    for (Object item : (List<Object>) indicatorsRaw) {
+                        if (item instanceof Map) {
+                            Map<String, Object> entry = (Map<String, Object>) item;
+                            String name = (String) entry.get("名称");
+                            if (name != null && !name.isEmpty()) {
+                                sectionIndex.put(name, entry);
+                            }
+                        }
+                    }
+                    if (!sectionIndex.isEmpty()) {
+                        indicatorIndex.put(section, sectionIndex);
+                    }
+                }
+            }
+        }
+
+        // --- 食物索引 ---
+        foodIndex = new ConcurrentHashMap<>();
+        foodByCategory = new ConcurrentHashMap<>();
+        Object foodRaw = kbRoot.get("食物库");
+        if (foodRaw instanceof Map) {
+            Object itemsRaw = ((Map<String, Object>) foodRaw).get("数据");
+            if (itemsRaw instanceof List) {
+                for (Object item : (List<Object>) itemsRaw) {
+                    if (item instanceof Map) {
+                        Map<String, Object> entry = (Map<String, Object>) item;
+                        String name = (String) entry.get("名称");
+                        if (name != null && !name.isEmpty()) {
+                            foodIndex.put(name, entry);
+                            String category = (String) entry.getOrDefault("分类", "其他");
+                            foodByCategory.computeIfAbsent(category, k -> new ArrayList<>()).add(entry);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    // ==================== 菌属查询 ====================
+
+    /**
+     * 按学名查找菌属功能
+     * 匹配策略: 精确匹配 → 属级回退(取首词)
+     */
+    public Map<String, Object> lookupBacteria(String scientificName) {
+        if (scientificName == null || scientificName.isEmpty()) return null;
+
+        // 1. 精确匹配
+        Map<String, Object> result = bacteriaIndex.get(scientificName);
+        if (result != null) return result;
+
+        // 2. 属级回退: 对种名取首词
+        String genus = scientificName.split("\\s+")[0];
+        if (!genus.equals(scientificName)) {
+            result = bacteriaIndex.get(genus);
+        }
+
+        return result;
+    }
+
+    /**
+     * 批量查询菌属
+     */
+    public Map<String, Map<String, Object>> batchLookupBacteria(List<String> names) {
+        Map<String, Map<String, Object>> results = new LinkedHashMap<>();
+        for (String name : names) {
+            Map<String, Object> entry = lookupBacteria(name);
+            if (entry != null) {
+                results.put(name, entry);
+            }
+        }
+        return results;
+    }
+
+    /**
+     * 按分组获取菌属列表
+     */
+    public List<Map<String, Object>> getBacteriaByGroup(String group) {
+        if (group == null) return new ArrayList<>();
+        return bacteriaIndex.values().stream()
+                .filter(e -> group.equals(e.get("分组")))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取所有菌属分组名称
+     */
+    public Set<String> getBacteriaGroups() {
+        return bacteriaIndex.values().stream()
+                .map(e -> (String) e.get("分组"))
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
+    }
+
+    // ==================== 指标查询 ====================
+
+    /**
+     * 按指标名查找(自动遍历所有章节)
+     */
+    public Map<String, Object> lookupIndicator(String indicatorName) {
+        if (indicatorName == null || indicatorName.isEmpty()) return null;
+        for (Map<String, Map<String, Object>> section : indicatorIndex.values()) {
+            Map<String, Object> result = section.get(indicatorName);
+            if (result != null) return result;
+        }
+        return null;
+    }
+
+    /**
+     * 在指定章节查找指标
+     */
+    public Map<String, Object> lookupIndicatorInSection(String sectionName, String indicatorName) {
+        Map<String, Map<String, Object>> section = indicatorIndex.get(sectionName);
+        if (section == null) return null;
+        return section.get(indicatorName);
+    }
+
+    /**
+     * 获取某章节所有指标
+     */
+    public Map<String, Map<String, Object>> getIndicatorSection(String sectionName) {
+        return indicatorIndex.get(sectionName);
+    }
+
+    /**
+     * 获取所有章节名
+     */
+    public Set<String> getIndicatorSectionNames() {
+        return indicatorIndex.keySet();
+    }
+
+    // ==================== 食物查询 ====================
+
+    /**
+     * 按名称查找食物
+     */
+    public Map<String, Object> lookupFood(String foodName) {
+        if (foodName == null || foodName.isEmpty()) return null;
+        return foodIndex.get(foodName);
+    }
+
+    /**
+     * 按分类获取食物列表
+     */
+    public List<Map<String, Object>> getFoodByCategory(String category) {
+        return foodByCategory.getOrDefault(category, Collections.emptyList());
+    }
+
+    /**
+     * 获取所有食物分类
+     */
+    public Set<String> getFoodCategories() {
+        return foodByCategory.keySet();
+    }
+
+    /**
+     * 获取全部食物(简化格式)
+     */
+    public List<Map<String, Object>> getAllFoods() {
+        return new ArrayList<>(foodIndex.values());
+    }
+
+    // ==================== 原始数据 ====================
+
+    /**
+     * 获取完整 KB JSON 根
+     */
+    public Map<String, Object> getKbRoot() {
+        return kbRoot;
+    }
+
+    /**
+     * 获取指定章节的原始数据
+     */
+    public Object getSection(String sectionName) {
+        return kbRoot.get(sectionName);
+    }
+}

+ 16 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/ReviewOrderService.java

@@ -0,0 +1,16 @@
+package com.etotem.cfc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.etotem.cfc.dto.ReviewOrderRequest;
+import com.etotem.cfc.dto.ReviewOrderResponse;
+import com.etotem.cfc.dto.ReviewStatusResponse;
+import com.etotem.cfc.entity.ReviewOrder;
+
+public interface ReviewOrderService extends IService<ReviewOrder> {
+
+    String createReview(ReviewOrderRequest request, Long reviewerId);
+
+    ReviewOrderResponse findByOrder(Long orderId);
+
+    ReviewStatusResponse getStats(Long orderId);
+}

+ 114 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/ReviewOrderServiceImpl.java

@@ -0,0 +1,114 @@
+package com.etotem.cfc.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.etotem.cfc.dto.ReviewOrderRequest;
+import com.etotem.cfc.dto.ReviewOrderResponse;
+import com.etotem.cfc.dto.ReviewStatusResponse;
+import com.etotem.cfc.entity.ProductOrder;
+import com.etotem.cfc.entity.ReviewOrder;
+import com.etotem.cfc.mapper.ProductOrderMapper;
+import com.etotem.cfc.mapper.ReviewOrderMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class ReviewOrderServiceImpl extends ServiceImpl<ReviewOrderMapper, ReviewOrder> implements ReviewOrderService {
+
+    @Resource
+    private ReviewOrderMapper reviewOrderMapper;
+
+    @Resource
+    private ProductOrderMapper productOrderMapper;
+
+    @Override
+    @Transactional
+    public String createReview(ReviewOrderRequest request, Long reviewerId) {
+        Long orderId = request.getOrderId();
+        ProductOrder order = productOrderMapper.selectById(orderId);
+        if (order == null) {
+            throw new RuntimeException("Order not found");
+        }
+        if (!"activity".equals(order.getProductType())) {
+            throw new RuntimeException("Only activity orders are reviewable");
+        }
+        boolean completed = "completed".equals(order.getStatus());
+        boolean signedIn = "signed_in".equals(order.getProvisionStatus());
+        if (!completed && !signedIn) {
+            throw new RuntimeException("Order is not eligible for review");
+        }
+
+        ReviewOrder existing = reviewOrderMapper.findByOrderId(orderId);
+        if (existing != null) {
+            throw new RuntimeException("Review already exists");
+        }
+
+        ReviewOrder review = new ReviewOrder();
+        review.setOrderId(orderId);
+        review.setReviewerId(reviewerId);
+        review.setRating(request.getRating());
+        review.setReviewText(request.getReviewText());
+        review.setReviewAt(new Date());
+        review.setOrganizationRating(request.getOrganizationRating());
+        review.setContentRating(request.getContentRating());
+        review.setExperienceRating(request.getExperienceRating());
+        review.setCreatedAt(new Date());
+        review.setUpdatedAt(new Date());
+        reviewOrderMapper.insert(review);
+        return "评价提交成功";
+    }
+
+    @Override
+    public ReviewOrderResponse findByOrder(Long orderId) {
+        ReviewOrder review = reviewOrderMapper.findByOrderId(orderId);
+        if (review == null) {
+            return null;
+        }
+        ReviewOrderResponse response = new ReviewOrderResponse();
+        response.setOrderId(review.getOrderId());
+        response.setReviewerId(review.getReviewerId());
+        response.setRating(review.getRating());
+        response.setReviewText(review.getReviewText());
+        response.setReviewAt(review.getReviewAt() != null ? review.getReviewAt().toString() : null);
+        response.setOrganizationRating(review.getOrganizationRating());
+        response.setContentRating(review.getContentRating());
+        response.setExperienceRating(review.getExperienceRating());
+        return response;
+    }
+
+    @Override
+    public ReviewStatusResponse getStats(Long orderId) {
+        ReviewOrder review = reviewOrderMapper.findByOrderId(orderId);
+        Map<String, Object> stats = reviewOrderMapper.getStatsByOrderId(orderId);
+
+        ReviewStatusResponse response = new ReviewStatusResponse();
+        response.setReviewed(review != null);
+        if (review != null) {
+            response.setRating(review.getRating());
+            response.setReviewText(review.getReviewText());
+            response.setReviewAt(review.getReviewAt() != null ? review.getReviewAt().toString() : null);
+            response.setOrganizationRating(review.getOrganizationRating());
+            response.setContentRating(review.getContentRating());
+            response.setExperienceRating(review.getExperienceRating());
+        }
+
+        if (stats != null && !stats.isEmpty()) {
+            Object overallAvgObj = stats.get("overallAvg");
+            Object organizationAvgObj = stats.get("organizationAvg");
+            Object contentAvgObj = stats.get("contentAvg");
+            Object experienceAvgObj = stats.get("experienceAvg");
+            Object totalReviewsObj = stats.get("totalReviews");
+
+            response.setOverallAvg(overallAvgObj != null ? ((Number) overallAvgObj).doubleValue() : null);
+            response.setOrganizationAvg(organizationAvgObj != null ? ((Number) organizationAvgObj).doubleValue() : null);
+            response.setContentAvg(contentAvgObj != null ? ((Number) contentAvgObj).doubleValue() : null);
+            response.setExperienceAvg(experienceAvgObj != null ? ((Number) experienceAvgObj).doubleValue() : null);
+            response.setTotalReviews(totalReviewsObj != null ? ((Number) totalReviewsObj).intValue() : 0);
+        }
+        return response;
+    }
+}

+ 73 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/TaskParseService.java

@@ -0,0 +1,73 @@
+package com.etotem.cfc.service;
+
+import com.etotem.cfc.dto.TaskParseResult;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 解析 Dify 返回的 [TASK] 标记,提取任务参数
+ */
+@Service
+public class TaskParseService {
+
+    private static final Logger log = LoggerFactory.getLogger(TaskParseService.class);
+
+    private static final Pattern TASK_PATTERN =
+            Pattern.compile("\\[TASK:\\s*(\\{.*?\\})\\]", Pattern.DOTALL);
+
+    private final ObjectMapper objectMapper = new ObjectMapper();
+
+    /**
+     * 从 Dify answer 中解析所有 [TASK] 标记
+     * @param answer Dify 原始回复
+     * @return 解析后的任务参数列表(title 必填,不满足校验的跳过)
+     */
+    public List<TaskParseResult> parseTasks(String answer) {
+        List<TaskParseResult> results = new ArrayList<>();
+        if (answer == null || answer.isEmpty()) return results;
+
+        Matcher matcher = TASK_PATTERN.matcher(answer);
+        while (matcher.find()) {
+            String json = matcher.group(1);
+            try {
+                @SuppressWarnings("unchecked")
+                Map<String, Object> map = objectMapper.readValue(json, Map.class);
+                TaskParseResult task = new TaskParseResult();
+                task.setTitle(map.containsKey("title") ? map.get("title").toString() : null);
+                task.setDescription(map.containsKey("description") ? map.get("description").toString() : null);
+                task.setDeadline(map.containsKey("deadline") ? map.get("deadline").toString() : null);
+                task.setDimension(map.containsKey("dimension") ? map.get("dimension").toString() : null);
+                if (map.containsKey("rewardPoints")) {
+                    Object rp = map.get("rewardPoints");
+                    task.setRewardPoints(rp instanceof Number ? ((Number) rp).intValue() : null);
+                }
+                if (task.getTitle() == null || task.getTitle().isEmpty()) {
+                    log.warn("跳过无标题的 TASK 标记: {}", json);
+                    continue;
+                }
+                results.add(task);
+            } catch (Exception e) {
+                log.warn("解析 TASK 标记失败, 跳过: json={}, error={}", json, e.getMessage());
+            }
+        }
+        return results;
+    }
+
+    /**
+     * 从 Dify answer 中移除所有 [TASK] 标记
+     * @param answer Dify 原始回复
+     * @return 清洗后的回复
+     */
+    public String stripTaskMarkers(String answer) {
+        if (answer == null) return null;
+        return TASK_PATTERN.matcher(answer).replaceAll("").trim();
+    }
+}

+ 1 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java

@@ -20,6 +20,7 @@ import com.etotem.cfc.service.HealthDataSourceRecordService;
 import com.etotem.cfc.entity.DanAssessmentResult;
 import com.etotem.cfc.mapper.DanAssessmentResultMapper;
 import com.etotem.cfc.service.DimensionEnergySyncService;
+import org.springframework.context.annotation.Lazy;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;

+ 4 - 0
cfc-backend/src/main/resources/application.yml

@@ -93,6 +93,10 @@ math:
   verify-mode: dify  # dify | eval; dify=走Dify工作流, eval=服务端计算(兜底)
   workflow-id: ""    # Dify 数学判题工作流 ID(留空则使用 eval 兜底)
 
+upload:
+  base-dir: /data/cfc-uploads
+  allowed-types: image/jpeg,image/png,image/gif,image/webp
+
 shop:
   order:
     payment-timeout-minutes: 30  # 订单超时时间(分钟)

+ 4314 - 0
cfc-backend/src/main/resources/knowledge-base/报告指标知识库.json

@@ -0,0 +1,4314 @@
+{
+  "元数据": {
+    "名称": "菌群报告指标知识库",
+    "版本": "3.0",
+    "说明": "v3: 新增食物库、菌属功能库、指标调整建议。数据与模板分离,学名匹配。",
+    "数据来源": "5份肠道菌群健康检测报告交叉验证",
+    "用途": "用于报告指标值的自动化状态比对,取值规则:遍历状态分级,若值在[最小值, 最大值)区间内则匹配该状态"
+  },
+  "疾病风险评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 1
+    },
+    "状态分级": [
+      {
+        "状态": "低风险",
+        "最小值": 0,
+        "最大值": 0.3
+      },
+      {
+        "状态": "注意",
+        "最小值": 0.3,
+        "最大值": 0.5
+      },
+      {
+        "状态": "高风险",
+        "最小值": 0.5,
+        "最大值": 1
+      }
+    ],
+    "指标": [
+      {
+        "名称": "炎症性肠炎",
+        "说明": "肠道慢性炎症性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制炎症性肠炎的风险水平。"
+      },
+      {
+        "名称": "肠易激综合征",
+        "说明": "功能性肠道疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肠易激综合征的风险水平。"
+      },
+      {
+        "名称": "感染性腹泻",
+        "说明": "细菌/病毒感染性腹泻风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制感染性腹泻的风险水平。"
+      },
+      {
+        "名称": "自闭症",
+        "说明": "自闭症谱系障碍风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制自闭症的风险水平。"
+      },
+      {
+        "名称": "抑郁症",
+        "说明": "抑郁症风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制抑郁症的风险水平。"
+      },
+      {
+        "名称": "甲状腺疾病",
+        "说明": "甲状腺功能异常风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制甲状腺疾病的风险水平。"
+      },
+      {
+        "名称": "肺部感染或疾病",
+        "说明": "呼吸系统疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肺部感染或疾病的风险水平。"
+      },
+      {
+        "名称": "肺部疾病",
+        "说明": "肺部疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肺部疾病的风险水平。"
+      },
+      {
+        "名称": "自体免疫病",
+        "说明": "自身免疫性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制自体免疫病的风险水平。"
+      },
+      {
+        "名称": "结直肠癌",
+        "说明": "结直肠癌风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制结直肠癌的风险水平。"
+      },
+      {
+        "名称": "肥胖",
+        "说明": "肥胖风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肥胖的风险水平。"
+      },
+      {
+        "名称": "便秘",
+        "说明": "便秘风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制便秘的风险水平。"
+      },
+      {
+        "名称": "过敏",
+        "说明": "过敏性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制过敏的风险水平。"
+      },
+      {
+        "名称": "失眠",
+        "说明": "睡眠障碍风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制失眠的风险水平。"
+      },
+      {
+        "名称": "肝病",
+        "说明": "肝脏疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肝病的风险水平。"
+      },
+      {
+        "名称": "肾病",
+        "说明": "肾脏疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肾病的风险水平。"
+      },
+      {
+        "名称": "胃病",
+        "说明": "胃部疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制胃病的风险水平。"
+      },
+      {
+        "名称": "胆病",
+        "说明": "胆囊/胆道疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制胆病的风险水平。"
+      },
+      {
+        "名称": "心脑血管疾病",
+        "说明": "心脑血管疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制心脑血管疾病的风险水平。"
+      },
+      {
+        "名称": "II型糖尿病",
+        "说明": "II型糖尿病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制II型糖尿病的风险水平。"
+      }
+    ]
+  },
+  "主要营养评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "碳水化合物",
+        "说明": "主要能量来源",
+        "偏高影响": "碳水化合物摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "碳水化合物摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整碳水化合物来源食物的比例。"
+      },
+      {
+        "名称": "蛋白质",
+        "说明": "机体构建和修复的重要营养素",
+        "偏高影响": "蛋白质摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "蛋白质摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整蛋白质来源食物的比例。"
+      },
+      {
+        "名称": "脂肪",
+        "说明": "必需脂肪酸来源,脂溶性维生素载体",
+        "偏高影响": "脂肪摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "脂肪摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整脂肪来源食物的比例。"
+      },
+      {
+        "名称": "纤维素",
+        "说明": "促进肠道蠕动,维持菌群健康",
+        "偏高影响": "纤维素摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "纤维素摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整纤维素来源食物的比例。"
+      },
+      {
+        "名称": "乳制品",
+        "说明": "钙质和优质蛋白来源",
+        "偏高影响": "乳制品摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "乳制品摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整乳制品来源食物的比例。"
+      }
+    ]
+  },
+  "氨基酸评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "苏氨酸",
+        "说明": "必需氨基酸,参与蛋白质合成和免疫功能",
+        "偏高影响": "",
+        "偏低影响": "苏氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含苏氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "异亮氨酸",
+        "说明": "支链氨基酸,促进肌肉合成和能量代谢",
+        "偏高影响": "",
+        "偏低影响": "异亮氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含异亮氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "亮氨酸",
+        "说明": "支链氨基酸,激活肌肉蛋白合成通路",
+        "偏高影响": "",
+        "偏低影响": "亮氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含亮氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "赖氨酸",
+        "说明": "必需氨基酸,参与钙吸收和胶原蛋白合成",
+        "偏高影响": "",
+        "偏低影响": "赖氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含赖氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "蛋氨酸",
+        "说明": "含硫氨基酸,参与甲基化和解毒过程",
+        "偏高影响": "",
+        "偏低影响": "蛋氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含蛋氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "胱氨酸",
+        "说明": "非必需氨基酸,参与谷胱甘肽合成",
+        "偏高影响": "",
+        "偏低影响": "胱氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含胱氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "苯丙氨酸",
+        "说明": "必需氨基酸,多巴胺和肾上腺素前体",
+        "偏高影响": "",
+        "偏低影响": "苯丙氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含苯丙氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "酪氨酸",
+        "说明": "非必需氨基酸,甲状腺激素和黑色素前体",
+        "偏高影响": "",
+        "偏低影响": "酪氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含酪氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "缬氨酸",
+        "说明": "支链氨基酸,参与肌肉代谢和能量供应",
+        "偏高影响": "",
+        "偏低影响": "缬氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含缬氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "组氨酸",
+        "说明": "必需氨基酸,组胺前体,参与免疫调节",
+        "偏高影响": "",
+        "偏低影响": "组氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含组氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "丙氨酸",
+        "说明": "非必需氨基酸,参与葡萄糖-丙氨酸循环",
+        "偏高影响": "",
+        "偏低影响": "丙氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含丙氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "丝氨酸",
+        "说明": "非必需氨基酸,参与磷脂和核苷酸合成",
+        "偏高影响": "",
+        "偏低影响": "丝氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含丝氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "甘氨酸",
+        "说明": "最简单的氨基酸,参与胶原蛋白和胆汁酸合成",
+        "偏高影响": "",
+        "偏低影响": "甘氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含甘氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "脯氨酸",
+        "说明": "非必需氨基酸,胶原蛋白的重要组成成分",
+        "偏高影响": "",
+        "偏低影响": "脯氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含脯氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "谷氨酸",
+        "说明": "兴奋性神经递质,参与氨代谢和解毒",
+        "偏高影响": "",
+        "偏低影响": "谷氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含谷氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      }
+    ]
+  },
+  "维生素评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "维生素A",
+        "说明": "维持视力、免疫功能和皮肤健康",
+        "偏高影响": "",
+        "偏低影响": "维生素A不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素A的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B1",
+        "说明": "硫胺素,参与能量代谢和神经功能",
+        "偏高影响": "",
+        "偏低影响": "维生素B1不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B1的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B2",
+        "说明": "核黄素,参与能量代谢和细胞生长",
+        "偏高影响": "",
+        "偏低影响": "维生素B2不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B2的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B5",
+        "说明": "泛酸,辅酶A的组成部分",
+        "偏高影响": "",
+        "偏低影响": "维生素B5不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B5的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B6",
+        "说明": "参与氨基酸代谢和神经递质合成",
+        "偏高影响": "",
+        "偏低影响": "维生素B6不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B6的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "叶酸",
+        "说明": "维生素B9,参与DNA合成和细胞分裂",
+        "偏高影响": "",
+        "偏低影响": "叶酸不足可能影响相应的生理功能。",
+        "调整建议": "增加富含叶酸的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B12",
+        "说明": "钴胺素,参与红细胞生成和神经功能",
+        "偏高影响": "",
+        "偏低影响": "维生素B12不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B12的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素C",
+        "说明": "抗氧化,促进胶原蛋白合成和铁吸收",
+        "偏高影响": "",
+        "偏低影响": "维生素C不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素C的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素D",
+        "说明": "促进钙吸收,维持骨骼健康和免疫功能",
+        "偏高影响": "",
+        "偏低影响": "维生素D不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素D的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素K2",
+        "说明": "参与钙代谢和凝血功能",
+        "偏高影响": "",
+        "偏低影响": "维生素K2不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素K2的食物摄入,必要时在专业指导下补充。"
+      }
+    ]
+  },
+  "微量元素评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "铁",
+        "说明": "血红蛋白的重要组成部分,缺铁会导致贫血",
+        "偏高影响": "",
+        "偏低影响": "铁缺乏可能影响造血和免疫功能。",
+        "调整建议": "增加富含铁的食物摄入,如红肉、动物肝脏、海鲜等。"
+      },
+      {
+        "名称": "锌",
+        "说明": "参与免疫功能和伤口愈合,影响生长发育",
+        "偏高影响": "",
+        "偏低影响": "锌缺乏可能影响造血和免疫功能。",
+        "调整建议": "增加富含锌的食物摄入,如红肉、动物肝脏、海鲜等。"
+      }
+    ]
+  },
+  "抗生素风险评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "低风险",
+        "最小值": 0,
+        "最大值": 30
+      },
+      {
+        "状态": "注意",
+        "最小值": 30,
+        "最大值": 60
+      },
+      {
+        "状态": "高风险",
+        "最小值": 60,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "β-内酰胺酶类",
+        "说明": "青霉素类抗生素耐药基因水平",
+        "偏高影响": "β-内酰胺酶类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "氨基糖苷类",
+        "说明": "氨基糖苷类抗生素耐药基因水平",
+        "偏高影响": "氨基糖苷类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "大环内酯类",
+        "说明": "大环内酯类抗生素耐药基因水平",
+        "偏高影响": "大环内酯类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "呋喃类",
+        "说明": "呋喃类抗生素耐药基因水平",
+        "偏高影响": "呋喃类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "喹诺酮类",
+        "说明": "喹诺酮类抗生素耐药基因水平",
+        "偏高影响": "喹诺酮类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "磺胺类",
+        "说明": "磺胺类抗生素耐药基因水平",
+        "偏高影响": "磺胺类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "甲氧苄啶类",
+        "说明": "甲氧苄啶类抗生素耐药基因水平",
+        "偏高影响": "甲氧苄啶类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "氯霉素类",
+        "说明": "氯霉素类抗生素耐药基因水平",
+        "偏高影响": "氯霉素类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "四环素类",
+        "说明": "四环素类抗生素耐药基因水平",
+        "偏高影响": "四环素类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      }
+    ]
+  },
+  "肠道屏障及代谢物": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "肠道炎症水平",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 80
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 80
+          },
+          {
+            "状态": "过高",
+            "最小值": 80,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道炎症程度评估",
+        "偏高影响": "肠道炎症水平水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "肠道产气",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 50
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 50
+          },
+          {
+            "状态": "轻度产气",
+            "最小值": 50,
+            "最大值": 80
+          },
+          {
+            "状态": "严重产气",
+            "最小值": 80,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道产气水平评估",
+        "偏高影响": "肠道产气水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "肠道屏障",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 100
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道屏障功能评估",
+        "偏高影响": "",
+        "偏低影响": "肠道屏障水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "脂多糖LPS",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "内毒素水平评估",
+        "偏高影响": "脂多糖LPS水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "次级胆汁酸",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "胆汁酸代谢产物",
+        "偏高影响": "次级胆汁酸水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "次级胆汁酸水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "对甲酚(p-Cresol)",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "酪氨酸代谢产物,尿毒症毒素",
+        "偏高影响": "对甲酚(p-Cresol)水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "吲哚",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 90
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 90
+          },
+          {
+            "状态": "过高",
+            "最小值": 90,
+            "最大值": 100
+          }
+        ],
+        "说明": "色氨酸代谢产物",
+        "偏高影响": "吲哚水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "吲哚水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "苯酚",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "酪氨酸代谢产物",
+        "偏高影响": "苯酚水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "腐胺",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "多胺类物质,与细胞增殖和炎症相关",
+        "偏高影响": "腐胺水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "腐胺水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "硫化氢",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "含硫氨基酸代谢产物",
+        "偏高影响": "硫化氢水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "硫化氢水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "尸胺",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "组氨酸代谢产物,与肠道炎症相关",
+        "偏高影响": "尸胺水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "尸胺水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      }
+    ]
+  },
+  "短链脂肪酸": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "丁酸盐(Butyrate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道上皮细胞主要能量来源,抗炎",
+        "偏高影响": "丁酸盐(Butyrate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "丁酸盐(Butyrate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "丙酸盐(Propionate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 90
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 90
+          },
+          {
+            "状态": "过高",
+            "最小值": 90,
+            "最大值": 100
+          }
+        ],
+        "说明": "参与肝脏糖异生,调节食欲",
+        "偏高影响": "丙酸盐(Propionate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "丙酸盐(Propionate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "乙酸盐(Acetate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "最丰富的短链脂肪酸,参与脂质代谢",
+        "偏高影响": "乙酸盐(Acetate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "乙酸盐(Acetate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "异戊酸盐(Isovaleric)",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "支链脂肪酸,过量提示蛋白质腐败",
+        "偏高影响": "异戊酸盐(Isovaleric)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "异戊酸盐(Isovaleric)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      }
+    ]
+  },
+  "神经递质及激素": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "血清素(5-HT)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "情绪调节、睡眠和食欲相关",
+        "偏高影响": "血清素(5-HT)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "血清素(5-HT)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "γ-氨基丁酸(GABA)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "抑制性神经递质,抗焦虑",
+        "偏高影响": "γ-氨基丁酸(GABA)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "γ-氨基丁酸(GABA)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "谷氨酸(Glutamate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "兴奋性神经递质,学习记忆相关",
+        "偏高影响": "谷氨酸(Glutamate)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "谷氨酸(Glutamate)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "色氨酸(Tryptophan)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "血清素和褪黑素前体",
+        "偏高影响": "色氨酸(Tryptophan)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "色氨酸(Tryptophan)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "DOPAC",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "多巴胺代谢产物",
+        "偏高影响": "DOPAC水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "DOPAC水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "多巴胺",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "奖赏、动机和运动控制相关",
+        "偏高影响": "多巴胺水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "多巴胺水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "组胺(Histamine)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "免疫反应和胃酸分泌调节",
+        "偏高影响": "组胺(Histamine)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "组胺(Histamine)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "一氧化氮",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "血管舒张和神经信号传导",
+        "偏高影响": "一氧化氮水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "一氧化氮水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "喹啉(Quinolinic)",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "色氨酸代谢产物,NMDA受体激动剂",
+        "偏高影响": "喹啉(Quinolinic)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "维生素K2",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 99
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 99
+          },
+          {
+            "状态": "过高",
+            "最小值": 99,
+            "最大值": 100
+          }
+        ],
+        "说明": "钙代谢和凝血功能调节",
+        "偏高影响": "维生素K2水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "维生素K2水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "肌醇(Inositol)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 99
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 99
+          },
+          {
+            "状态": "过高",
+            "最小值": 99,
+            "最大值": 100
+          }
+        ],
+        "说明": "细胞信号传导和脂质代谢",
+        "偏高影响": "肌醇(Inositol)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "肌醇(Inositol)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      }
+    ]
+  },
+  "主要消化道致病菌": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "未检出",
+        "最小值": 0,
+        "最大值": 0
+      },
+      {
+        "状态": "检出",
+        "最小值": 0,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "幽门螺杆菌",
+        "说明": "与胃炎、胃溃疡和胃癌相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "艰难梭菌",
+        "说明": "抗生素相关性腹泻的主要病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "沙门氏菌",
+        "说明": "食物中毒和肠道感染的常见病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "志贺氏菌",
+        "说明": "细菌性痢疾的病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "弯曲杆菌",
+        "说明": "常见的肠道感染病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      }
+    ]
+  },
+  "健康总分评估": {
+    "健康总分": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "状态分级": [
+        {
+          "状态": "需关注",
+          "最小值": 0,
+          "最大值": 40
+        },
+        {
+          "状态": "一般",
+          "最小值": 40,
+          "最大值": 60
+        },
+        {
+          "状态": "良好",
+          "最小值": 60,
+          "最大值": 80
+        },
+        {
+          "状态": "优秀",
+          "最小值": 80,
+          "最大值": 100
+        }
+      ],
+      "说明": "健康综合评分"
+    },
+    "菌群健康": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映肠道菌群整体健康程度"
+    },
+    "慢病控制": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映慢性疾病风险控制水平"
+    },
+    "营养均衡": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映营养摄入均衡程度"
+    },
+    "肠道年龄": {
+      "说明": "与实际年龄比较,反映肠道菌群的衰老/年轻程度"
+    }
+  },
+  "食物库": {
+    "说明": "224种食物的基础营养数据,用于展示食物详情和计算推荐指数",
+    "数据": [
+      {
+        "名称": "大麦",
+        "分类": "主食",
+        "能量KJ": "1481",
+        "蛋白g": "12",
+        "脂肪g": "2",
+        "碳水化合物g": "73",
+        "总膳食纤维g": "17"
+      },
+      {
+        "名称": "小米",
+        "分类": "主食",
+        "能量KJ": "1582",
+        "蛋白g": "11",
+        "脂肪g": "4",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "小麦",
+        "分类": "主食",
+        "能量KJ": "1423",
+        "蛋白g": "10",
+        "脂肪g": "1",
+        "碳水化合物g": "75",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "小麦面包",
+        "分类": "主食",
+        "能量KJ": "1116",
+        "蛋白g": "10",
+        "脂肪g": "3",
+        "碳水化合物g": "48",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "意大利面",
+        "分类": "主食",
+        "能量KJ": "386",
+        "蛋白g": "1",
+        "脂肪g": "3",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "燕麦",
+        "分类": "主食",
+        "能量KJ": "297",
+        "蛋白g": "17",
+        "脂肪g": "6",
+        "碳水化合物g": "66",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "玉米粒",
+        "分类": "主食",
+        "能量KJ": "298",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "米饭",
+        "分类": "主食",
+        "能量KJ": "1527",
+        "蛋白g": "7",
+        "脂肪g": "0",
+        "碳水化合物g": "79",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "玉米饼",
+        "分类": "主食",
+        "能量KJ": "912",
+        "蛋白g": "5",
+        "脂肪g": "2",
+        "碳水化合物g": "44",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "荞麦面粉",
+        "分类": "主食",
+        "能量KJ": "1402",
+        "蛋白g": "12",
+        "脂肪g": "3",
+        "碳水化合物g": "70",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "葡萄干浆即食谷物",
+        "分类": "主食",
+        "能量KJ": "1354",
+        "蛋白g": "7",
+        "脂肪g": "1",
+        "碳水化合物g": "78",
+        "总膳食纤维g": "13"
+      },
+      {
+        "名称": "面条",
+        "分类": "主食",
+        "能量KJ": "1609",
+        "蛋白g": "14",
+        "脂肪g": "4",
+        "碳水化合物g": "71",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "鸡蛋面包",
+        "分类": "主食",
+        "能量KJ": "1201",
+        "蛋白g": "9",
+        "脂肪g": "6",
+        "碳水化合物g": "47",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "黑麦面包",
+        "分类": "主食",
+        "能量KJ": "1188",
+        "蛋白g": "9",
+        "脂肪g": "3",
+        "碳水化合物g": "53",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "冰淇淋",
+        "分类": "乳制品",
+        "能量KJ": "690",
+        "蛋白g": "1",
+        "脂肪g": "3",
+        "碳水化合物g": "32",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "奶油",
+        "分类": "乳制品",
+        "能量KJ": "515",
+        "蛋白g": "3",
+        "脂肪g": "10",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "奶酪",
+        "分类": "乳制品",
+        "能量KJ": "1552",
+        "蛋白g": "23",
+        "脂肪g": "29",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛奶",
+        "分类": "乳制品",
+        "能量KJ": "268",
+        "蛋白g": "3",
+        "脂肪g": "3",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "脱脂牛奶",
+        "分类": "乳制品",
+        "能量KJ": "142",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "黄油",
+        "分类": "乳制品",
+        "能量KJ": "2999",
+        "蛋白g": "0",
+        "脂肪g": "81",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "山核桃",
+        "分类": "干果",
+        "能量KJ": "2889",
+        "蛋白g": "9",
+        "脂肪g": "71",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "山核桃干",
+        "分类": "干果",
+        "能量KJ": "2749",
+        "蛋白g": "12",
+        "脂肪g": "64",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "杏仁",
+        "分类": "干果",
+        "能量KJ": "2423",
+        "蛋白g": "21",
+        "脂肪g": "49",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "开心果",
+        "分类": "干果",
+        "能量KJ": "2392",
+        "蛋白g": "21",
+        "脂肪g": "45",
+        "碳水化合物g": "28",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "松子",
+        "分类": "干果",
+        "能量KJ": "2816",
+        "蛋白g": "13",
+        "脂肪g": "68",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "栗子",
+        "分类": "干果",
+        "能量KJ": "1519",
+        "蛋白g": "6",
+        "脂肪g": "1",
+        "碳水化合物g": "79",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "核桃",
+        "分类": "干果",
+        "能量KJ": "2738",
+        "蛋白g": "15",
+        "脂肪g": "65",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "椰肉",
+        "分类": "干果",
+        "能量KJ": "1481",
+        "蛋白g": "3",
+        "脂肪g": "33",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "榛子",
+        "分类": "干果",
+        "能量KJ": "2629",
+        "蛋白g": "14",
+        "脂肪g": "60",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "橡子",
+        "分类": "干果",
+        "能量KJ": "1619",
+        "蛋白g": "6",
+        "脂肪g": "23",
+        "碳水化合物g": "40",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "腰果",
+        "分类": "干果",
+        "能量KJ": "2402",
+        "蛋白g": "15",
+        "脂肪g": "46",
+        "碳水化合物g": "32",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "芝麻酱",
+        "分类": "干果",
+        "能量KJ": "2454",
+        "蛋白g": "18",
+        "脂肪g": "50",
+        "碳水化合物g": "24",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "莲子",
+        "分类": "干果",
+        "能量KJ": "372",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葵花子",
+        "分类": "干果",
+        "能量KJ": "2445",
+        "蛋白g": "20",
+        "脂肪g": "51",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "银杏坚果",
+        "分类": "干果",
+        "能量KJ": "1456",
+        "蛋白g": "10",
+        "脂肪g": "2",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "氏萨",
+        "分类": "快餐",
+        "能量KJ": "1121",
+        "蛋白g": "10",
+        "脂肪g": "12",
+        "碳水化合物g": "29",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "热狗",
+        "分类": "快餐",
+        "能量KJ": "1167",
+        "蛋白g": "9",
+        "脂肪g": "3",
+        "碳水化合物g": "50",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "鸡米花",
+        "分类": "快餐",
+        "能量KJ": "1469",
+        "蛋白g": "17",
+        "脂肪g": "21",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "三文鱼",
+        "分类": "水产品",
+        "能量KJ": "594",
+        "蛋白g": "19",
+        "脂肪g": "6",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "凤尾鱼",
+        "分类": "水产品",
+        "能量KJ": "548",
+        "蛋白g": "20",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "墨鱼",
+        "分类": "水产品",
+        "能量KJ": "331",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "大氏目鱼",
+        "分类": "水产品",
+        "能量KJ": "382",
+        "蛋白g": "18",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "大西洋鳕鱼",
+        "分类": "水产品",
+        "能量KJ": "343",
+        "蛋白g": "17",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "小龙虾",
+        "分类": "水产品",
+        "能量KJ": "322",
+        "蛋白g": "15",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "扇贝",
+        "分类": "水产品",
+        "能量KJ": "289",
+        "蛋白g": "12",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "条纹鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "406",
+        "蛋白g": "17",
+        "脂肪g": "2",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "海鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "332",
+        "蛋白g": "15",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牡蛎",
+        "分类": "水产品",
+        "能量KJ": "339",
+        "蛋白g": "9",
+        "脂肪g": "2",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "白鲑",
+        "分类": "水产品",
+        "能量KJ": "611",
+        "蛋白g": "17",
+        "脂肪g": "8",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "石斑鱼",
+        "分类": "水产品",
+        "能量KJ": "385",
+        "蛋白g": "19",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "章鱼",
+        "分类": "水产品",
+        "能量KJ": "343",
+        "蛋白g": "14",
+        "脂肪g": "1",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "虾",
+        "分类": "水产品",
+        "能量KJ": "297",
+        "蛋白g": "13",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "蛤蜊",
+        "分类": "水产品",
+        "能量KJ": "360",
+        "蛋白g": "14",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "蟹",
+        "分类": "水产品",
+        "能量KJ": "364",
+        "蛋白g": "18",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "贻贝",
+        "分类": "水产品",
+        "能量KJ": "360",
+        "蛋白g": "11",
+        "脂肪g": "2",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "金枪鱼",
+        "分类": "水产品",
+        "能量KJ": "602",
+        "蛋白g": "23",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鱼子酱",
+        "分类": "水产品",
+        "能量KJ": "1105",
+        "蛋白g": "24",
+        "脂肪g": "17",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鱿鱼",
+        "分类": "水产品",
+        "能量KJ": "385",
+        "蛋白g": "15",
+        "脂肪g": "1",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "381",
+        "蛋白g": "19",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲍鱼",
+        "分类": "水产品",
+        "能量KJ": "439",
+        "蛋白g": "17",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲟鱼",
+        "分类": "水产品",
+        "能量KJ": "439",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲤鱼",
+        "分类": "水产品",
+        "能量KJ": "531",
+        "蛋白g": "17",
+        "脂肪g": "5",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲭鱼",
+        "分类": "水产品",
+        "能量KJ": "858",
+        "蛋白g": "18",
+        "脂肪g": "13",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲱鱼",
+        "分类": "水产品",
+        "能量KJ": "661",
+        "蛋白g": "17",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲶鱼",
+        "分类": "水产品",
+        "能量KJ": "519",
+        "蛋白g": "20",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲷鱼",
+        "分类": "水产品",
+        "能量KJ": "418",
+        "蛋白g": "20",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲽鱼",
+        "分类": "水产品",
+        "能量KJ": "294",
+        "蛋白g": "12",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳕鱼",
+        "分类": "水产品",
+        "能量KJ": "364",
+        "蛋白g": "18",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳗鱼",
+        "分类": "水产品",
+        "能量KJ": "770",
+        "蛋白g": "18",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳟鱼",
+        "分类": "水产品",
+        "能量KJ": "619",
+        "蛋白g": "20",
+        "脂肪g": "6",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "沙丁鱼",
+        "分类": "水产品",
+        "能量KJ": "347",
+        "蛋白g": "0",
+        "脂肪g": "1",
+        "碳水化合物g": "19",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "黄尾",
+        "分类": "水产品",
+        "能量KJ": "611",
+        "蛋白g": "23",
+        "脂肪g": "5",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "龙虾",
+        "分类": "水产品",
+        "能量KJ": "324",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "无花果",
+        "分类": "水果",
+        "能量KJ": "310",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "19",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "李子",
+        "分类": "水果",
+        "能量KJ": "192",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "杏",
+        "分类": "水果",
+        "能量KJ": "201",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "杨桃",
+        "分类": "水果",
+        "能量KJ": "128",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "枣",
+        "分类": "水果",
+        "能量KJ": "1176",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "柠檬",
+        "分类": "水果",
+        "能量KJ": "121",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "柿子",
+        "分类": "水果",
+        "能量KJ": "293",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "桃",
+        "分类": "水果",
+        "能量KJ": "165",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "桑葚",
+        "分类": "水果",
+        "能量KJ": "180",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "梨",
+        "分类": "水果",
+        "能量KJ": "239",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "榴莲",
+        "分类": "水果",
+        "能量KJ": "615",
+        "蛋白g": "1",
+        "脂肪g": "5",
+        "碳水化合物g": "27",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "樱桃",
+        "分类": "水果",
+        "能量KJ": "1395",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "80",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "哈密瓜",
+        "分类": "水果",
+        "能量KJ": "141",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "橘子",
+        "分类": "水果",
+        "能量KJ": "197",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "橙汁",
+        "分类": "水果",
+        "能量KJ": "188",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "橙皮",
+        "分类": "水果",
+        "能量KJ": "405",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "25",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "橙菠萝汁",
+        "分类": "水果",
+        "能量KJ": "214",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "12",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "油桃",
+        "分类": "水果",
+        "能量KJ": "185",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "猕猴桃",
+        "分类": "水果",
+        "能量KJ": "255",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甜瓜",
+        "分类": "水果",
+        "能量KJ": "150",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "番木瓜",
+        "分类": "水果",
+        "能量KJ": "179",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "石榴",
+        "分类": "水果",
+        "能量KJ": "346",
+        "蛋白g": "1",
+        "脂肪g": "1",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "红苹果",
+        "分类": "水果",
+        "能量KJ": "247",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芒果",
+        "分类": "水果",
+        "能量KJ": "250",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "苹果",
+        "分类": "水果",
+        "能量KJ": "218",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "苹果汁",
+        "分类": "水果",
+        "能量KJ": "191",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "草莓",
+        "分类": "水果",
+        "能量KJ": "136",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "荔枝",
+        "分类": "水果",
+        "能量KJ": "276",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "菠萝",
+        "分类": "水果",
+        "能量KJ": "209",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "菠萝蜜",
+        "分类": "水果",
+        "能量KJ": "397",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "23",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "葡萄",
+        "分类": "水果",
+        "能量KJ": "280",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葡萄干",
+        "分类": "水果",
+        "能量KJ": "264",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葡萄柚",
+        "分类": "水果",
+        "能量KJ": "134",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "蓝莓",
+        "分类": "水果",
+        "能量KJ": "240",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "蔓越莓",
+        "分类": "水果",
+        "能量KJ": "191",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "西瓜",
+        "分类": "水果",
+        "能量KJ": "127",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "覆盆子",
+        "分类": "水果",
+        "能量KJ": "220",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "面包果酱",
+        "分类": "水果",
+        "能量KJ": "431",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "27",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "香蕉",
+        "分类": "水果",
+        "能量KJ": "371",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "22",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "鳄梨",
+        "分类": "水果",
+        "能量KJ": "670",
+        "蛋白g": "2",
+        "脂肪g": "14",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "黑莓",
+        "分类": "水果",
+        "能量KJ": "181",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "龙眼",
+        "分类": "水果",
+        "能量KJ": "251",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "番茄汤",
+        "分类": "汤",
+        "能量KJ": "165",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "土豆蔬菜汤",
+        "分类": "汤",
+        "能量KJ": "126",
+        "蛋白g": "1",
+        "脂肪g": "1",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "素食蔬菜汤",
+        "分类": "汤",
+        "能量KJ": "119",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "火腿",
+        "分类": "肉类",
+        "能量KJ": "683",
+        "蛋白g": "16",
+        "脂肪g": "8",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "火鸡",
+        "分类": "肉类",
+        "能量KJ": "790",
+        "蛋白g": "28",
+        "脂肪g": "7",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烟熏火腿",
+        "分类": "肉类",
+        "能量KJ": "591",
+        "蛋白g": "18",
+        "脂肪g": "2",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烤肉",
+        "分类": "肉类",
+        "能量KJ": "1512",
+        "蛋白g": "20",
+        "脂肪g": "30",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烤鸭",
+        "分类": "肉类",
+        "能量KJ": "1410",
+        "蛋白g": "18",
+        "脂肪g": "28",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烧鹅",
+        "分类": "肉类",
+        "能量KJ": "1276",
+        "蛋白g": "25",
+        "脂肪g": "21",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉汤",
+        "分类": "肉类",
+        "能量KJ": "25",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉瘦",
+        "分类": "肉类",
+        "能量KJ": "488",
+        "蛋白g": "23",
+        "脂肪g": "2",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉肥",
+        "分类": "肉类",
+        "能量KJ": "2845",
+        "蛋白g": "10",
+        "脂肪g": "70",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛蛙",
+        "分类": "肉类",
+        "能量KJ": "305",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪培根",
+        "分类": "肉类",
+        "能量KJ": "1744",
+        "蛋白g": "12",
+        "脂肪g": "39",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪头肉",
+        "分类": "肉类",
+        "能量KJ": "658",
+        "蛋白g": "13",
+        "脂肪g": "10",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪瘦肉",
+        "分类": "肉类",
+        "能量KJ": "562",
+        "蛋白g": "21",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪耳朵",
+        "分类": "肉类",
+        "能量KJ": "695",
+        "蛋白g": "15",
+        "脂肪g": "10",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪肝",
+        "分类": "肉类",
+        "能量KJ": "690",
+        "蛋白g": "26",
+        "脂肪g": "4",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪脑",
+        "分类": "肉类",
+        "能量KJ": "577",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪蹄",
+        "分类": "肉类",
+        "能量KJ": "889",
+        "蛋白g": "23",
+        "脂肪g": "12",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "瘦羊肉",
+        "分类": "肉类",
+        "能量KJ": "862",
+        "蛋白g": "28",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "肉丸",
+        "分类": "肉类",
+        "能量KJ": "1196",
+        "蛋白g": "14",
+        "脂肪g": "22",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "肥猪肉",
+        "分类": "肉类",
+        "能量KJ": "2449",
+        "蛋白g": "10",
+        "脂肪g": "60",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "肥羊肉",
+        "分类": "肉类",
+        "能量KJ": "2782",
+        "蛋白g": "6",
+        "脂肪g": "70",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡心",
+        "分类": "肉类",
+        "能量KJ": "640",
+        "蛋白g": "15",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡汤",
+        "分类": "肉类",
+        "能量KJ": "26",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡肉",
+        "分类": "肉类",
+        "能量KJ": "604",
+        "蛋白g": "28",
+        "脂肪g": "3",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡肝",
+        "分类": "肉类",
+        "能量KJ": "496",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹅肝",
+        "分类": "肉类",
+        "能量KJ": "556",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹌鹑",
+        "分类": "肉类",
+        "能量KJ": "803",
+        "蛋白g": "19",
+        "脂肪g": "12",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "南瓜",
+        "分类": "蔬菜",
+        "能量KJ": "109",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "卷心菜",
+        "分类": "蔬菜",
+        "能量KJ": "103",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "四季豆",
+        "分类": "蔬菜",
+        "能量KJ": "131",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "土豆",
+        "分类": "蔬菜",
+        "能量KJ": "322",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "土豆面粉",
+        "分类": "蔬菜",
+        "能量KJ": "1493",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "83",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "大白菜",
+        "分类": "蔬菜",
+        "能量KJ": "55",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "大蒜",
+        "分类": "蔬菜",
+        "能量KJ": "623",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "33",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "大豆",
+        "分类": "蔬菜",
+        "能量KJ": "614",
+        "蛋白g": "12",
+        "脂肪g": "6",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "小南瓜",
+        "分类": "蔬菜",
+        "能量KJ": "69",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "小萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "76",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "山药",
+        "分类": "蔬菜",
+        "能量KJ": "343",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "扁豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1473",
+        "蛋白g": "24",
+        "脂肪g": "1",
+        "碳水化合物g": "63",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "木薯",
+        "分类": "蔬菜",
+        "能量KJ": "667",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "38",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "洋葱",
+        "分类": "蔬菜",
+        "能量KJ": "166",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "炒蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "110",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "炒香菇",
+        "分类": "蔬菜",
+        "能量KJ": "162",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "牛蒡根",
+        "分类": "蔬菜",
+        "能量KJ": "302",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甘薯",
+        "分类": "蔬菜",
+        "能量KJ": "359",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甜椒",
+        "分类": "蔬菜",
+        "能量KJ": "84",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "甜玉米",
+        "分类": "蔬菜",
+        "能量KJ": "360",
+        "蛋白g": "3",
+        "脂肪g": "1",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "甜菜",
+        "分类": "蔬菜",
+        "能量KJ": "180",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "甜菜叶",
+        "分类": "蔬菜",
+        "能量KJ": "92",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "生姜",
+        "分类": "蔬菜",
+        "能量KJ": "75",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "生菜",
+        "分类": "蔬菜",
+        "能量KJ": "62",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "番茄汁",
+        "分类": "蔬菜",
+        "能量KJ": "72",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "白菜",
+        "分类": "蔬菜",
+        "能量KJ": "48",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "白萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "59",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "白蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "93",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "秋葵",
+        "分类": "蔬菜",
+        "能量KJ": "138",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "竹笋",
+        "分类": "蔬菜",
+        "能量KJ": "115",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "红心萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "132",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "红豆",
+        "分类": "蔬菜",
+        "能量KJ": "121",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "绿豆",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "羽衣甘蓝",
+        "分类": "蔬菜",
+        "能量KJ": "207",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "胡萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "173",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芋头",
+        "分类": "蔬菜",
+        "能量KJ": "469",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "26",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "芝麻",
+        "分类": "蔬菜",
+        "能量KJ": "2397",
+        "蛋白g": "17",
+        "脂肪g": "49",
+        "碳水化合物g": "23",
+        "总膳食纤维g": "11"
+      },
+      {
+        "名称": "芥末",
+        "分类": "蔬菜",
+        "能量KJ": "114",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "芦笋",
+        "分类": "蔬菜",
+        "能量KJ": "85",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "花椒",
+        "分类": "蔬菜",
+        "能量KJ": "80",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "花椰菜",
+        "分类": "蔬菜",
+        "能量KJ": "104",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芹菜",
+        "分类": "蔬菜",
+        "能量KJ": "67",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "苦瓜",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "5",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "茄子",
+        "分类": "蔬菜",
+        "能量KJ": "104",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "苋菜叶",
+        "分类": "蔬菜",
+        "能量KJ": "97",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "菊苣",
+        "分类": "蔬菜",
+        "能量KJ": "71",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "菜豆",
+        "分类": "蔬菜",
+        "能量KJ": "280",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "菠菜",
+        "分类": "蔬菜",
+        "能量KJ": "97",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "蕨类",
+        "分类": "蔬菜",
+        "能量KJ": "143",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "藜",
+        "分类": "蔬菜",
+        "能量KJ": "180",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "141",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "西兰花",
+        "分类": "蔬菜",
+        "能量KJ": "141",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "西红柿",
+        "分类": "蔬菜",
+        "能量KJ": "74",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "豆芽",
+        "分类": "蔬菜",
+        "能量KJ": "510",
+        "蛋白g": "13",
+        "脂肪g": "6",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "豇豆",
+        "分类": "蔬菜",
+        "能量KJ": "376",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "豌豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1435",
+        "蛋白g": "21",
+        "脂肪g": "1",
+        "碳水化合物g": "62",
+        "总膳食纤维g": "15"
+      },
+      {
+        "名称": "辣椒",
+        "分类": "蔬菜",
+        "能量KJ": "88",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "韭菜",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "香菇",
+        "分类": "蔬菜",
+        "能量KJ": "160",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "黄瓜",
+        "分类": "蔬菜",
+        "能量KJ": "65",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "水煮蛋",
+        "分类": "蛋类",
+        "能量KJ": "597",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "炒蛋",
+        "分类": "蛋类",
+        "能量KJ": "621",
+        "蛋白g": "9",
+        "脂肪g": "10",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "煎蛋",
+        "分类": "蛋类",
+        "能量KJ": "643",
+        "蛋白g": "10",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋",
+        "分类": "蛋类",
+        "能量KJ": "599",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋白",
+        "分类": "蛋类",
+        "能量KJ": "216",
+        "蛋白g": "10",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋黄",
+        "分类": "蛋类",
+        "能量KJ": "1346",
+        "蛋白g": "15",
+        "脂肪g": "26",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹌鹑蛋",
+        "分类": "蛋类",
+        "能量KJ": "663",
+        "蛋白g": "13",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "利马豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1414",
+        "蛋白g": "21",
+        "脂肪g": "0",
+        "碳水化合物g": "63",
+        "总膳食纤维g": "19"
+      },
+      {
+        "名称": "大豆面粉",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1816",
+        "蛋白g": "37",
+        "脂肪g": "20",
+        "碳水化合物g": "31",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "嫩豆腐",
+        "分类": "豆类及豆制品",
+        "能量KJ": "253",
+        "蛋白g": "7",
+        "脂肪g": "3",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "纳豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "883",
+        "蛋白g": "19",
+        "脂肪g": "11",
+        "碳水化合物g": "12",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "羽扇豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1554",
+        "蛋白g": "36",
+        "脂肪g": "9",
+        "碳水化合物g": "40",
+        "总膳食纤维g": "18"
+      },
+      {
+        "名称": "老豆腐",
+        "分类": "豆类及豆制品",
+        "能量KJ": "326",
+        "蛋白g": "9",
+        "脂肪g": "4",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "花生",
+        "分类": "豆类及豆制品",
+        "能量KJ": "2374",
+        "蛋白g": "25",
+        "脂肪g": "49",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "花生酱",
+        "分类": "豆类及豆制品",
+        "能量KJ": "2464",
+        "蛋白g": "24",
+        "脂肪g": "49",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "蚕豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1425",
+        "蛋白g": "26",
+        "脂肪g": "1",
+        "碳水化合物g": "58",
+        "总膳食纤维g": "25"
+      },
+      {
+        "名称": "豆浆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "226",
+        "蛋白g": "3",
+        "脂肪g": "1",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹰嘴豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1581",
+        "蛋白g": "20",
+        "脂肪g": "6",
+        "碳水化合物g": "62",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "黄豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1443",
+        "蛋白g": "22",
+        "脂肪g": "2",
+        "碳水化合物g": "60",
+        "总膳食纤维g": "25"
+      }
+    ]
+  },
+  "菌属功能库": {
+    "说明": "所有菌属的功能说明、高低影响、调整方向。学名为主键,个人JSON用学名匹配",
+    "菌属": [
+      {
+        "学名": "Clostridium",
+        "中文名": "梭菌属",
+        "分组": "核心菌属",
+        "功能说明": "多导致⼈体炎症;致病;导致菌群失衡;产丁酸;肥胖⼈群丰度较⾼;参与胆汁酸代谢;对抗艰难梭菌;",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Prevotella",
+        "中文名": "普雷沃氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "核心菌,健康的植物性饮食相关菌,在自闭症、多发性硬化中减少;丰度⾼促炎,加剧过敏、",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Ruminococcus",
+        "中文名": "瘤胃球菌属",
+        "分组": "核心菌属",
+        "功能说明": "消化抗性淀粉、纤维素,丰度⾼促进肠炎和过敏相关疾病,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bacteroides",
+        "中文名": "拟杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,消化蔬菜和谷食,蛋白,降解复杂多糖,交叉喂养关键菌,维持免疫和肠道稳态,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Eubacterium",
+        "中文名": "优杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,产短链脂肪酸尤其丁酸,有助于肠道健康,降解胆固醇、调节餐后血糖、",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lachnoclostridium",
+        "中文名": "",
+        "分组": "核心菌属",
+        "功能说明": "丁酸,与内脏脂肪积累相关,与肥胖、⾼血压、糖尿病正相关,与肠道炎症、肠癌和阿尔茨海默病进展有关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Faecalibacterium",
+        "中文名": "粪杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Blautia",
+        "中文名": "经黏液真杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Dialister",
+        "中文名": "戴阿利斯特杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "代谢碳水化合物、产短链脂肪酸,许多种都可能导致感染,但是抑郁症患者缺乏,关节炎患者富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Roseburia",
+        "中文名": "罗氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Agathobacter",
+        "中文名": "直肠真杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "可利用抗性淀粉,具有抗炎和调节免疫功能的作用,类⻛湿性关节炎和溃疡性结肠炎⼈群显著减少。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Gemmiger",
+        "中文名": "吉米菌属",
+        "分组": "核心菌属",
+        "功能说明": "健康饮食,⾼果蔬、谷物及豆类饮食含量⾼,与雄激素分泌相关,缓解便秘,与脂肪堆积分布负相关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Parabacteroides",
+        "中文名": "副拟杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "帮助糖脂代谢,改善⾼脂影响,产生强大的降解酶,参与胆碱代谢,顺产宝宝和⻓寿老⼈肠道丰富,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Alistipes",
+        "中文名": "另枝菌属",
+        "分组": "核心菌属",
+        "功能说明": "耐胆汁酸菌,丙酸,乙酸生产者,参与腐败途径产生氨、H2S、甲酚、吲哚和苯酚,诱发结直肠癌,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lachnospira",
+        "中文名": "母螺菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,发酵代谢膳食纤维,利用果蔬果㬵产生乙酸,丁酸,与睡眠质量呈负相关,过少与多种疾病相关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Phascolarctobacterium",
+        "中文名": "考拉杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "东⽅⼈肠道的核心菌属,⾼易减肥,与水果蔬菜摄⼊相关,随年龄增加,在重度抑郁、阿尔茨海默病(AD)、自闭症⼉童富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Megamonas",
+        "中文名": "巨单胞菌属",
+        "分组": "核心菌属",
+        "功能说明": "发酵各种碳水化合物、产乙酸、丙酸、乳酸,自闭症谱系障碍、注意缺陷、多动障碍 (ADHD)急性脑卒中(AIS)",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Coprococcus",
+        "中文名": "粪球菌属",
+        "分组": "核心菌属",
+        "功能说明": "可产丁酸,抑制免疫反应,降低过敏,抑郁、帕金森、认知障碍、便秘,慢性肾病、虚弱者减少,过多导致菌群紊乱,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium",
+        "中文名": "双歧杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "最重要的",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus",
+        "中文名": "乳杆菌属",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rogosae",
+        "中文名": "罗氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium adolescentis",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium longum",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus reuteri",
+        "中文名": "罗伊氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium bifidum",
+        "中文名": "双歧双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium catenulatum",
+        "中文名": "链状双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium pseudolongum",
+        "中文名": "假长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium gallicum",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium stercoris",
+        "中文名": "排泄物双岐杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus paracasei",
+        "中文名": "副干酪乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus plantarum",
+        "中文名": "植物乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus johnsonii",
+        "中文名": "约氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus helveticus",
+        "中文名": "瑞一乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium animalis",
+        "中文名": "动物双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus fermentum",
+        "中文名": "发酵乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium breve",
+        "中文名": "短双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rhamnosus",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus brevis",
+        "中文名": "短乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus delbrueckii",
+        "中文名": "德氏乳酸乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus acidophilus",
+        "中文名": "嗜酸乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Escherichia",
+        "中文名": "埃希氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "正常菌属,条件致病菌,过多致病,导致菌群失衡",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Streptococcus",
+        "中文名": "",
+        "分组": "有害菌属",
+        "功能说明": "可引起化脓性炎症,个别菌为",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Desulfovibrio",
+        "中文名": "脱硫弧菌属",
+        "分组": "有害菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Helicobacter",
+        "中文名": "螺杆菌属",
+        "分组": "有害菌属",
+        "功能说明": "⾰兰氏阴性菌,微需氧菌,该菌属下的⼀些菌种被发现在⼈类上消化道内壁,部分种为致病菌,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Arcobacter",
+        "中文名": "",
+        "分组": "有害菌属",
+        "功能说明": "好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,⼈畜共患菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Anaerobiospirillum",
+        "中文名": "厌氧螺菌",
+        "分组": "有害菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Enterococcus",
+        "中文名": "肠球菌属",
+        "分组": "有害菌属",
+        "功能说明": "常⻅上呼吸道,⼝腔或肠道的常居菌,也分布在畜、禽养殖环境,饲料或肠道,抑菌调节肠道菌群,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Neisseria",
+        "中文名": "奈瑟氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "部分为⼈体病原菌,⼝腔,唾液,⿐腔,肺部正常菌,需氧,对干燥、热、消毒剂敏感,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Acinetobacter",
+        "中文名": "不动杆菌属",
+        "分组": "有害菌属",
+        "功能说明": "条件致病菌,医院感染病原体之⼀,尤其ICU,易引起呼吸道感染、泌尿道感染、创伤感染,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Pseudomonas",
+        "中文名": "假单胞菌属",
+        "分组": "有害菌属",
+        "功能说明": "属于变形菌⻔,在环境中⼴泛存在,代谢多变适应⼒强,好氧或微需,会导致感染和食物变质,医院获得性感染主要原因,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Holdemania",
+        "中文名": "霍尔德曼氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "肠道共生菌,降解黏蛋白,机会致病菌,少数研究表明与痛⻛正相关,帕金森,双向情感障碍,过敏,抑郁患者富集",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Collinsella",
+        "中文名": "柯林斯氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "产气菌,与脂质代谢及心脑血管相关,过多可导致菌群紊乱,部分病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bilophila",
+        "中文名": "嗜胆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "条件致病菌,与耐胆汁酸和脂肪摄⼊相关,便秘⼈群丰度更⾼",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Flavonifractor",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "参与肠道⼉茶素代谢,减轻免疫反应,产丁酸",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Dorea",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "消化碳水化合物,多发性硬化症、炎症性肠病、结直肠癌、自闭症谱系障碍以及肥胖⼈群中⾼丰度富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Hungatella",
+        "中文名": "亨盖特氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "参与生成氧化三甲胺和牛磺酸。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Oscillospira",
+        "中文名": "颤螺菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "基石菌、核心菌群,帮助消化抗性淀粉,产丁酸,并在大肠中发酵。与⼉童过敏和肥胖呈负相关。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Citrobacter",
+        "中文名": "枸橼酸杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "常⻅菌,免疫⼒下降可能引发感染。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Akkermansia",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "基石菌,可降解淀粉,黏蛋白降解菌,可控制体重,改善代谢和炎症,过多导致肠粘膜屏障破坏。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Enterobacter",
+        "中文名": "肠杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "产酸产气,不引起腹泻,机会性感染,过多导致菌群紊乱和肥胖。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Turicibacter",
+        "中文名": "苏黎世杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "发酵生成乳酸,参与肌肉和疲劳调节。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Butyrivibrio",
+        "中文名": "丁酸弧菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "利用纤维素、淀粉和其他多聚糖生成丁酸,有助于维持肠道上皮,发挥抗炎、抗氧化作用。可调节体内的氨水平,影响免疫。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Christensenella",
+        "中文名": "克里斯滕森氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "过多:肥胖,代谢综合征,包括⾼血压、⾼血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Haemophilus",
+        "中文名": "嗜血杆菌属",
+        "分组": "病原菌属",
+        "功能说明": "病原菌,过多可导致菌群紊乱,可引发呼吸道感染,常⻅于呼吸道感染",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella",
+        "中文名": "沙门氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "是引起食物中毒和肠道感染的常⻅病原菌之⼀",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Sutterella",
+        "中文名": "萨特氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "肠道共生菌,潜在病原菌,自闭症相关,减少IgA",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Corynebacterium",
+        "中文名": "棒杆菌属",
+        "分组": "病原菌属",
+        "功能说明": "可导致急性腹泻、腹痛、恶心",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Aeromonas",
+        "中文名": "气单胞菌属",
+        "分组": "病原菌属",
+        "功能说明": "病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Staphylococcus",
+        "中文名": "葡萄球菌属",
+        "分组": "病原菌属",
+        "功能说明": "利用碳水化合物或氨基酸,产生乳酸。部分产生毒素,如金黄色葡萄球菌,可能引发肠道炎症、并影响肠道屏障功能",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Vibrio",
+        "中文名": "",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bilophila wadsworthia",
+        "中文名": "沃氏嗜胆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella enterica",
+        "中文名": "肠炎沙门氏菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Escherichia coli",
+        "中文名": "大肠杆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bacteroides fragilis",
+        "中文名": "脆弱拟杆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium adolescentis",
+        "中文名": "青春双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium longum",
+        "中文名": "长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium gallicum",
+        "中文名": "高卢双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium pseudolongum",
+        "中文名": "假长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rhamnosus",
+        "中文名": "鼠李糖乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Arcobacter",
+        "中文名": "弓形菌属",
+        "分组": "有害菌属",
+        "功能说明": "好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,人畜共患菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Christensenella",
+        "中文名": "克里斯滕森氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "过多:肥胖,代谢综合征,包括高血压、高血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella",
+        "中文名": "沙门氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "是引起食物中毒和肠道感染的常见病原菌之一",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Streptococcus sanguinis",
+        "中文名": "血链球菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Pseudomonas aeruginosa",
+        "中文名": "铜绿假单胞菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Actinomyces oris",
+        "中文名": "口腔放线菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Coprobacter",
+        "中文名": "粪杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,参与短链脂肪酸代谢",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Paraprevotella",
+        "中文名": "副普雷沃氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,与植物性饮食相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Parasutterella",
+        "中文名": "副萨特氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,与宿主代谢相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      }
+    ]
+  }
+}

+ 23 - 0
cfc-backend/src/main/resources/mapper/ReviewOrderMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.etotem.cfc.mapper.ReviewOrderMapper">
+
+    <select id="findByOrderId" resultType="com.etotem.cfc.entity.ReviewOrder">
+        SELECT *
+        FROM review_orders
+        WHERE order_id = #{orderId}
+        LIMIT 1
+    </select>
+
+    <select id="getStatsByOrderId" resultType="java.util.Map">
+        SELECT
+            AVG(rating) AS overallAvg,
+            AVG(organization_rating) AS organizationAvg,
+            AVG(content_rating) AS contentAvg,
+            AVG(experience_rating) AS experienceAvg,
+            COUNT(*) AS totalReviews
+        FROM review_orders
+        WHERE order_id = #{orderId}
+    </select>
+
+</mapper>

+ 239 - 6
cfc-backend/src/main/resources/schema.sql

@@ -1097,8 +1097,12 @@ CREATE TABLE IF NOT EXISTS product_orders (
     points_cost INT DEFAULT 0 COMMENT '积分抵扣金额(分)',
     money_amount INT DEFAULT 0 COMMENT '现金支付金额(分)',
     consignee_id BIGINT COMMENT '收货人ID',
-    purchase_info TEXT COMMENT '购买信息JSON: {id_card, hand_signature, ...}',
-    created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+purchase_info TEXT COMMENT '购买信息JSON: {id_card, hand_signature, ...}',
+provision_status VARCHAR(32) COMMENT '活动provision状态: unprovisioned(待审核)/provisioned(已发货)/signed_in(已签到)/completed(已完成)/cancelled(审核拒绝)',
+auditor_id BIGINT COMMENT '审核人ID',
+audited_at DATETIME COMMENT '审核时间',
+audit_reason TEXT COMMENT '审核拒绝原因',
+created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     INDEX idx_user_id (user_id),
     INDEX idx_family_id (family_id),
@@ -1817,7 +1821,7 @@ CREATE TABLE IF NOT EXISTS onboarding_task (
 
 CREATE TABLE IF NOT EXISTS growth_task (
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
-    type VARCHAR(16) NOT NULL COMMENT 'DAILY/NEWBIE',
+    type VARCHAR(16) NOT NULL COMMENT 'DAILY/NEWBIE/AI_GENERATED',
     title VARCHAR(100) NOT NULL,
     description TEXT,
     reward_points INT DEFAULT 0,
@@ -1827,6 +1831,8 @@ CREATE TABLE IF NOT EXISTS growth_task (
     enabled TINYINT DEFAULT 1,
     sort_order INT DEFAULT 0,
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    dimension VARCHAR(20) NULL COMMENT '五维维度(body/mind/wisdom/action/wealth)',
+    source_conversation_id VARCHAR(100) NULL COMMENT '来源AI会话ID',
     INDEX idx_type (type)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长任务配置表';
 
@@ -2683,7 +2689,234 @@ CREATE TABLE IF NOT EXISTS dimension_weights (
     dimension VARCHAR(20) NOT NULL COMMENT '维度: body/mind/wisdom/action/wealth',
     weight INT DEFAULT 0 COMMENT '权重百分比',
     enabled TINYINT(1) DEFAULT 0 COMMENT '是否启用',
-    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
-    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    INDEX idx_target (target_type, target_id)
+created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+INDEX idx_target (target_type, target_id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维度权重表';
+
+-- 健康打卡 - 运动记录
+CREATE TABLE IF NOT EXISTS sleep_record (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    member_id BIGINT NOT NULL COMMENT '家庭成员ID',
+    checkin_id BIGINT COMMENT '关联打卡ID',
+    sleep_time DATETIME COMMENT '入睡时间',
+    wake_time DATETIME COMMENT '醒来时间',
+    duration_minutes INT COMMENT '总睡眠时长(分钟)',
+    deep_sleep_minutes INT COMMENT '深睡时长(分钟)',
+    light_sleep_minutes INT COMMENT '浅睡时长(分钟)',
+    rem_minutes INT COMMENT 'REM时长(分钟)',
+    quality_score INT COMMENT '睡眠质量评分1-10',
+    dream_count INT COMMENT '做梦次数',
+    remark TEXT COMMENT '备注',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    INDEX idx_member_id (member_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='睡眠打卡记录';
+
+-- 健康打卡 - 饮水记录
+CREATE TABLE IF NOT EXISTS water_record (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    member_id BIGINT NOT NULL COMMENT '家庭成员ID',
+    checkin_id BIGINT COMMENT '关联打卡ID',
+    amount_ml INT COMMENT '饮水量(毫升)',
+    water_type VARCHAR(32) COMMENT '类型: plain/sparkling/tea/other',
+    drunk_at DATETIME COMMENT '饮水时间',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    INDEX idx_member_id (member_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='饮水打卡记录';
+
+-- 健康打卡 - 饮食记录
+CREATE TABLE IF NOT EXISTS health_meal_record (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    member_id BIGINT NOT NULL COMMENT '家庭成员ID',
+    checkin_id BIGINT COMMENT '关联打卡ID',
+    meal_type VARCHAR(32) COMMENT '餐次: breakfast/lunch/dinner/snack',
+    food_items TEXT COMMENT '食物清单JSON',
+    total_calories INT COMMENT '总卡路里',
+    protein_g INT COMMENT '蛋白质克数',
+    fat_g INT COMMENT '脂肪克数',
+    carbs_g INT COMMENT '碳水克数',
+    fiber_g INT COMMENT '膳食纤维克数',
+    meal_time DATETIME COMMENT '用餐时间',
+    remark VARCHAR(500) COMMENT '备注',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    INDEX idx_member_id (member_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='饮食打卡记录';
+
+-- 健康打卡 - 冥想记录
+CREATE TABLE IF NOT EXISTS health_meditation_record (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    member_id BIGINT NOT NULL COMMENT '家庭成员ID',
+    checkin_id BIGINT COMMENT '关联打卡ID',
+    duration_minutes INT COMMENT '时长(分钟)',
+    type VARCHAR(32) COMMENT '类型: mindfulness/guided/breathing/body_scan',
+    mood VARCHAR(32) COMMENT '冥想后心情',
+    remark VARCHAR(500) COMMENT '备注',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    INDEX idx_member_id (member_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='冥想打卡记录';
+
+-- 电商供应商
+CREATE TABLE IF NOT EXISTS ecom_supplier (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    name VARCHAR(100) NOT NULL COMMENT '供应商名称',
+    contact_name VARCHAR(50) COMMENT '联系人',
+    contact_phone VARCHAR(20) COMMENT '联系电话',
+    status TINYINT DEFAULT 1 COMMENT '启用状态 1启用 0禁用',
+    remark VARCHAR(500) COMMENT '备注',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电商供应商';
+
+-- 佣金返利配置
+CREATE TABLE IF NOT EXISTS rebate_commission_config (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    name VARCHAR(100) NOT NULL COMMENT '配置名称',
+    rate INT COMMENT '佣金比例(万分比)',
+    rate_type TINYINT DEFAULT 1 COMMENT '比例类型 1百分比 2固定金额',
+    min_amount INT COMMENT '最低金额(分)',
+    max_amount INT COMMENT '最高金额(分)',
+    remark VARCHAR(500) COMMENT '备注',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='佣金返利配置';
+
+-- DAN测评服务闭环表
+
+CREATE TABLE IF NOT EXISTS `dan_assessment_executions` (
+    `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
+    `assessment_execution_id` BIGINT NOT NULL COMMENT '执行记录ID',
+    `assessment_order_id` BIGINT NOT NULL COMMENT '订单ID',
+    `child_id` BIGINT NOT NULL COMMENT '孩子ID',
+    `family_id` BIGINT NOT NULL COMMENT '家庭ID',
+    `quota_id` BIGINT COMMENT '额度ID',
+    `assessor_id` BIGINT NOT NULL COMMENT '测评师userId',
+    `assessor_status` ENUM('pending','completed','rejected') DEFAULT 'pending' COMMENT '测评师状态',
+    `assessor_completed_at` DATETIME COMMENT '测评师完成时间',
+    `assessor_notes` VARCHAR(200) COMMENT '测评摘要/服务备注',
+    `planner_id` BIGINT COMMENT '规划师userId',
+    `planner_status` ENUM('pending','completed','rejected') DEFAULT 'pending' COMMENT '规划师状态',
+    `planner_completed_at` DATETIME COMMENT '规划师完成时间',
+    `planner_notes` VARCHAR(200) COMMENT '规划服务备注',
+    `user_confirmed` TINYINT(1) DEFAULT 0 COMMENT '用户确认:0未确认,1已确认',
+    `user_confirmed_at` DATETIME COMMENT '用户确认时间',
+    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
+    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    KEY `idx_assessment_execution_id` (`assessment_execution_id`),
+    KEY `idx_assessment_order_id` (`assessment_order_id`),
+    KEY `idx_assessor_id` (`assessor_id`),
+    KEY `idx_planner_id` (`planner_id`),
+    KEY `idx_child_id` (`child_id`),
+    KEY `idx_family_id` (`family_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DAN测评服务执行记录';
+
+CREATE TABLE IF NOT EXISTS `service_ratings` (
+    `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
+    `execution_id` BIGINT NOT NULL COMMENT '执行记录ID',
+    `assessment_order_id` BIGINT NOT NULL COMMENT '订单ID',
+    `user_id` BIGINT NOT NULL COMMENT '评分用户ID',
+    `assessor_id` BIGINT NOT NULL COMMENT '测评师userId',
+    `assessor_rating` TINYINT DEFAULT 0 COMMENT '测评师评分 1-5',
+    `assessor_comment` VARCHAR(500) COMMENT '评价内容',
+    `planner_id` BIGINT COMMENT '规划师userId',
+    `planner_rating` TINYINT COMMENT '规划师评分 1-5',
+    `planner_comment` VARCHAR(500) COMMENT '评价内容',
+    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
+    UNIQUE KEY `uniq_execution_user` (`execution_id`, `user_id`),
+    KEY `idx_assessor_id` (`assessor_id`),
+    KEY `idx_planner_id` (`planner_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评分记录';
+
+CREATE TABLE IF NOT EXISTS `service_settlements` (
+    `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
+    `execution_id` BIGINT NOT NULL COMMENT '执行记录ID',
+    `assessment_order_id` BIGINT NOT NULL COMMENT '订单ID',
+    `provider_id` BIGINT NOT NULL COMMENT '服务提供方userId',
+    `provider_type` ENUM('assessor','planner') NOT NULL COMMENT '服务方类型',
+    `service_fee` BIGINT DEFAULT 0 COMMENT '服务费用(分)',
+    `commission_rate` INT COMMENT '佣金比例(bps)',
+    `commission_amount` BIGINT DEFAULT 0 COMMENT '结算金额(分)',
+    `status` ENUM('pending','settled','failed') DEFAULT 'pending' COMMENT '结算状态',
+    `settled_at` DATETIME COMMENT '结算时间',
+    `transaction_id` VARCHAR(100) COMMENT '转账交易ID',
+    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
+    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    KEY `idx_execution_id` (`execution_id`),
+    KEY `idx_provider_id` (`provider_id`),
+    KEY `idx_status` (`status`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务结算记录';
+
+-- 健康知识库 — 菌属/营养素/指标说明
+CREATE TABLE IF NOT EXISTS `health_knowledge_base` (
+    `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
+    `item_type` VARCHAR(50) NOT NULL COMMENT '类型: bacteria/nutrient/indicator/vitamin/amino_acid/disease',
+    `item_name` VARCHAR(200) NOT NULL COMMENT '项目名称(精确匹配)',
+    `category` VARCHAR(100) COMMENT '分类(如 有益菌/有害菌)',
+    `normal_range` VARCHAR(200) COMMENT '正常范围参考',
+    `description` TEXT COMMENT '详细说明',
+    `suggestion` TEXT COMMENT '相关建议',
+    `source` VARCHAR(100) COMMENT '数据来源',
+    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
+    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    UNIQUE KEY `uk_item_type_name` (`item_type`, `item_name`),
+    KEY `idx_item_type` (`item_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康知识库 - 菌属/营养素/指标说明';
+-- =============================================
+-- DAN报告上传独立化(拆分 PDF 报告生命周期与数值结果)
+-- =============================================
+
+-- DAN PDF 报告上传/解析/确认记录表
+CREATE TABLE IF NOT EXISTS dan_report_uploads (
+    id                   BIGINT AUTO_INCREMENT PRIMARY KEY,
+    family_id            BIGINT       NOT NULL COMMENT '家庭ID',
+    family_member_id     BIGINT       NOT NULL COMMENT '家庭成员ID',
+    uploader_user_id     BIGINT       NOT NULL COMMENT '上传者用户ID',
+    dimension            VARCHAR(16)  NOT NULL COMMENT '维度: mind(心-A2)/wisdom(智-B4)',
+    report_type          VARCHAR(16)  COMMENT 'A2/B4 报告类型(解析后确认)',
+    file_url             VARCHAR(500) NOT NULL COMMENT 'PDF 文件URL',
+    file_id              VARCHAR(100) COMMENT '媒资文件ID',
+    file_name            VARCHAR(200) COMMENT '原始文件名',
+    file_size            BIGINT       COMMENT '文件大小(字节)',
+    uploaded_at          DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
+    parsed_items         JSON         COMMENT '解析的指标项 [{code, name, value, category}]',
+    parsed_extra         JSON         COMMENT '解析的额外信息(姓名/性别/年龄/报告日期等)',
+    parsed_summary       TEXT         COMMENT '解析的总结文本',
+    parsed_suggestions   TEXT         COMMENT '解析的建议文本',
+    parser_version       VARCHAR(32)  COMMENT '解析器版本',
+    parse_status         VARCHAR(16)  DEFAULT 'pending' COMMENT 'pending/success/failed',
+    parse_error          VARCHAR(500) COMMENT '解析失败原因',
+    parsed_at            DATETIME     COMMENT '解析完成时间',
+    draft_status         VARCHAR(16)  DEFAULT 'pending' COMMENT 'pending/confirmed/discarded',
+    confirmed_at         DATETIME     COMMENT '确认时间',
+    confirmed_by         BIGINT       COMMENT '确认操作人用户ID',
+    edited_items         JSON         COMMENT '编辑后的指标项(覆盖 parsed_items)',
+    edited_extra         JSON         COMMENT '编辑后的额外信息',
+    edited_summary       TEXT         COMMENT '编辑后的总结',
+    edited_suggestions   TEXT         COMMENT '编辑后的建议',
+    edit_count           INT          DEFAULT 0 COMMENT '编辑次数',
+    linked_result_id     BIGINT       COMMENT '关联 dan_assessment_results.id',
+    created_at           DATETIME     DEFAULT CURRENT_TIMESTAMP,
+    updated_at           DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    deleted_at           DATETIME     COMMENT '软删除时间',
+    INDEX idx_family_id (family_id),
+    INDEX idx_member_id (family_member_id),
+    INDEX idx_draft_status (draft_status),
+    INDEX idx_dimension (dimension),
+    INDEX idx_parse_status (parse_status),
+    INDEX idx_linked_result (linked_result_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DAN测评PDF报告上传/解析/确认记录';
+
+CREATE TABLE IF NOT EXISTS review_orders (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
+    order_id BIGINT NOT NULL COMMENT '订单ID',
+    reviewer_id BIGINT NOT NULL COMMENT '评价人ID',
+    rating INT COMMENT '总体评分',
+    review_text TEXT COMMENT '评价内容',
+    review_at DATETIME COMMENT '评价时间',
+    organization_rating INT COMMENT '活动组织评分(0-5)',
+    content_rating INT COMMENT '活动内容评分(0-5)',
+    experience_rating INT COMMENT '活动体验评分(0-5)',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    UNIQUE KEY uk_order_id (order_id),
+    INDEX idx_reviewer_id (reviewer_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动订单评价表';

+ 14 - 5
cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java

@@ -7,6 +7,7 @@ import com.etotem.cfc.dto.BindGuideDTO;
 import com.etotem.cfc.entity.GuideFamily;
 import com.etotem.cfc.service.BindInviteService;
 import com.etotem.cfc.service.GuideFamilyService;
+import com.etotem.cfc.service.MembershipService;
 import com.etotem.cfc.service.TeacherMessageService;
 import com.etotem.cfc.mapper.GuideFamilyMapper;
 import org.junit.jupiter.api.*;
@@ -63,6 +64,9 @@ public class PlannerBindInviteFlowTest {
     @MockBean
     private GuideFamilyMapper guideFamilyMapper;
 
+    @MockBean
+    private MembershipService membershipService;
+
     // ========== 测试数据 ==========
 
     private static final Long GUIDE_USER_ID = 4001L;
@@ -183,10 +187,11 @@ public class PlannerBindInviteFlowTest {
 
         when(guideFamilyService.confirmBind(eq(GUIDE_USER_ID), eq(FAMILY_ID), eq("学业规划"), eq(29900)))
                 .thenReturn(true);
+        when(membershipService.getUserFamilyId(PARENT_USER_ID)).thenReturn(FAMILY_ID);
 
         // === When:家长点击"确认绑定" ===
         Result<Boolean> result = bindController.acceptBind(
-                PARENT_USER_ID, FAMILY_ID, bindDTO);
+                PARENT_USER_ID, bindDTO);
 
         // === Then:Milestone-3 - 绑定成功 ===
         assertEquals(200, result.getCode());
@@ -209,10 +214,11 @@ public class PlannerBindInviteFlowTest {
 
         when(guideFamilyService.confirmBind(eq(GUIDE_USER_ID), eq(FAMILY_ID), anyString(), anyInt()))
                 .thenThrow(new RuntimeException("该规划师已在服务中,无需重复绑定"));
+        when(membershipService.getUserFamilyId(PARENT_USER_ID)).thenReturn(FAMILY_ID);
 
         // === When:家长尝试再次绑定 ===
         Result<Boolean> result = bindController.acceptBind(
-                PARENT_USER_ID, FAMILY_ID, bindDTO);
+                PARENT_USER_ID, bindDTO);
 
         // === Then:返回错误提示 ===
         assertEquals(400, result.getCode());
@@ -236,9 +242,10 @@ public class PlannerBindInviteFlowTest {
         );
 
         when(guideFamilyService.getGuidesByFamily(FAMILY_ID)).thenReturn(mockBindings);
+        when(membershipService.getUserFamilyId(PARENT_USER_ID)).thenReturn(FAMILY_ID);
 
         // === When:家长请求规划师列表 ===
-        Result<List<Map<String, Object>>> result = bindController.getBoundGuides(FAMILY_ID);
+        Result<List<Map<String, Object>>> result = bindController.getBoundGuides(PARENT_USER_ID);
 
         // === Then:Milestone-4 - 返回已绑定规划师列表 ===
         assertEquals(200, result.getCode());
@@ -264,10 +271,11 @@ public class PlannerBindInviteFlowTest {
         GuideFamily unbindGuide = createGuideFamily(BINDING_ID, GUIDE_USER_ID, "学业规划", 29900, "unbound");
         when(guideFamilyService.unbindAndGet(eq(BINDING_ID), eq(FAMILY_ID))).thenReturn(unbindGuide);
         doNothing().when(teacherMessageService).sendMessage(eq(FAMILY_ID), eq(PARENT_USER_ID), eq(GUIDE_USER_ID), anyString());
+        when(membershipService.getUserFamilyId(PARENT_USER_ID)).thenReturn(FAMILY_ID);
 
         // === When:家长确认解除绑定 ===
         Result<Boolean> result = bindController.unbind(
-                PARENT_USER_ID, FAMILY_ID, unbindRequest);
+                PARENT_USER_ID, unbindRequest);
 
         // === Then:Milestone-5 - 解绑成功并通知规划师 ===
         assertEquals(200, result.getCode());
@@ -346,8 +354,9 @@ public class PlannerBindInviteFlowTest {
 
         when(guideFamilyService.confirmBind(eq(GUIDE_USER_ID), eq(FAMILY_ID), eq("学业规划"), eq(29900)))
                 .thenReturn(true);
+        when(membershipService.getUserFamilyId(PARENT_USER_ID)).thenReturn(FAMILY_ID);
 
-        Result<Boolean> step3 = bindController.acceptBind(PARENT_USER_ID, FAMILY_ID, bindDTO);
+        Result<Boolean> step3 = bindController.acceptBind(PARENT_USER_ID, bindDTO);
         assertEquals(200, step3.getCode());
         assertTrue(step3.getData());
     }

+ 533 - 0
cfc-backend/src/test/java/com/etotem/cfc/service/DanReportParseServiceTest.java

@@ -0,0 +1,533 @@
+package com.etotem.cfc.service;
+
+import com.etotem.cfc.service.DanReportParseService.DanParsedReport;
+import com.etotem.cfc.service.DanReportParseService.DataItem;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * DanReportParseService 纯单元测试(无 SpringBootTest,避免 MySQL 连接)
+ *
+ * 测试范围:
+ * - A1 (cognition) 解析:6认知维度提取
+ * - B3 (learning) 解析:执行功能/学习动机/学习策略提取
+ * - A2 (mind) 回归:确保已有解析不受影响
+ * - B4 (wisdom) 回归:确保已有解析不受影响
+ */
+class DanReportParseServiceTest {
+
+    private DanReportParseService service;
+
+    @BeforeEach
+    void setUp() {
+        service = new DanReportParseService();
+    }
+
+    // ==================== A1 儿童核心认知 ====================
+
+    @Test
+    void testParseA1_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "cognition");
+        assertTrue(result.isEmpty(), "空文本应返回空结果");
+        assertEquals("A1", result.getReportType());
+        assertEquals("cognition", result.getDimension());
+    }
+
+    @Test
+    void testParseA1_extractsTotalScore() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n感知觉 | Perception\n百分位(%)\n14";
+        DanParsedReport result = service.parseText(text, "cognition");
+
+        assertFalse(result.isEmpty());
+
+        // 总分
+        DataItem totalItem = findItemByCode(result.getItems(), "total_score");
+        assertNotNull(totalItem, "应有总分项");
+        assertEquals("112", totalItem.getValue());
+    }
+
+    @Test
+    void testParseA1_shouldExtractPercentile() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n感知觉 | Perception\n百分位(%)\n14";
+        DanParsedReport result = service.parseText(text, "cognition");
+
+        DataItem pctItem = findItemByCode(result.getItems(), "percentile");
+        assertNotNull(pctItem, "应有百分位项");
+        assertEquals("79", pctItem.getValue());
+    }
+
+    @Test
+    void testParseA1_shouldExtractCognitiveDimensionFromSummaryPage() {
+        // 模拟 A1 summary 页格式: "感知觉 |  Perception\n百分位(%)\n14"
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "感知觉 |  Perception\n百分位(%)\n14\n"
+                + "注意力 |  Attention\n百分位(%)\n28\n"
+                + "记忆力 |  Memory\n百分位(%)\n42";
+
+        DanParsedReport result = service.parseText(text, "cognition");
+
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "perception_pct"), "应有感知觉百分位");
+        assertNotNull(findItemByCode(result.getItems(), "attention_pct"), "应有注意力百分位");
+        assertNotNull(findItemByCode(result.getItems(), "memory_pct"), "应有记忆力百分位");
+    }
+
+    @Test
+    void testParseA1_shouldExtractCognitiveDimensionFromDetailPage() {
+        // 模拟 A1 detail 页格式: "我的感知觉得分 41  | 14%"
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "我的感知觉得分 41  | 14%\n"
+                + "我的注意力得分 55  | 28%\n"
+                + "我的记忆力得分 63  | 42%\n"
+                + "我的推理能力得分 70  | 55%\n"
+                + "我的空间能力得分 68  | 50%\n"
+                + "我的加工速度得分 72  | 60%";
+
+        DanParsedReport result = service.parseText(text, "cognition");
+
+        assertFalse(result.isEmpty());
+
+        // 验证所有6个维度都有得分和百分位
+        String[] codes = {"perception", "attention", "memory", "reasoning", "spatial", "processingSpeed"};
+        for (String code : codes) {
+            assertNotNull(findItemByCode(result.getItems(), code + "_score"),
+                    "应有" + code + "_score");
+            assertNotNull(findItemByCode(result.getItems(), code + "_pct"),
+                    "应有" + code + "_pct");
+        }
+
+        // 验证具体值
+        DataItem perceptionScore = findItemByCode(result.getItems(), "perception_score");
+        assertEquals("41", perceptionScore.getValue());
+    }
+
+    @Test
+    void testParseA1_shouldFallbackToGenericPattern() {
+        // 模拟 A1 fallback 格式: "感知觉\n百分位(%)\n14"
+        String text = "总分 112\n百分位 79\n感知觉\n百分位(%)\n14\n注意力\n百分位(%)\n28\n记忆力\n百分位(%)\n42\n推理能力\n百分位(%)\n55\n空间能力\n百分位(%)\n50\n加工速度\n百分位(%)\n60";
+
+        DanParsedReport result = service.parseText(text, "cognition");
+
+        assertFalse(result.isEmpty());
+        // 应通过 fallback 逻辑提取到
+        assertNotNull(findItemByCode(result.getItems(), "perception_pct"), "应通过fallback提取感知觉百分位");
+    }
+
+    // ==================== B3 核心学习能力 ====================
+
+    @Test
+    void testParseB3_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "learning");
+        assertTrue(result.isEmpty());
+        assertEquals("B3", result.getReportType());
+        assertEquals("learning", result.getDimension());
+    }
+
+    @Test
+    void testParseB3_shouldExtractExecutiveFunction() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "抑制控制 94%  工作记忆 89%  认知灵活性 60%";
+
+        DanParsedReport result = service.parseText(text, "learning");
+
+        assertFalse(result.isEmpty());
+        DataItem ic = findItemByCode(result.getItems(), "inhibitoryControl");
+        assertNotNull(ic, "应有抑制控制");
+        assertEquals("94", ic.getValue());
+
+        DataItem wm = findItemByCode(result.getItems(), "workingMemory");
+        assertNotNull(wm, "应有工作记忆");
+        assertEquals("89", wm.getValue());
+
+        DataItem cf = findItemByCode(result.getItems(), "cognitiveFlexibility");
+        assertNotNull(cf, "应有认知灵活性");
+        assertEquals("60", cf.getValue());
+    }
+
+    @Test
+    void testParseB3_shouldExtractLearningMotivation() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "抑制控制 94%\n"
+                + "深层动机\n我的得分:8分\n"
+                + "表面动机\n我的得分:3分\n"
+                + "自我效能感\n我的得分:7分";
+
+        DanParsedReport result = service.parseText(text, "learning");
+
+        assertFalse(result.isEmpty());
+        DataItem dm = findItemByCode(result.getItems(), "deepMotivation");
+        assertNotNull(dm, "应有深层动机");
+        assertEquals("8", dm.getValue());
+    }
+
+    @Test
+    void testParseB3_shouldExtractLearningStrategy() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "深层方法与策略\n我的得分:6.8分\n"
+                + "表面方法与策略\n我的得分:4.2分\n"
+                + "学习自我调节\n我的得分:7.5分";
+
+        DanParsedReport result = service.parseText(text, "learning");
+
+        assertFalse(result.isEmpty());
+        DataItem ds = findItemByCode(result.getItems(), "deepStrategy");
+        assertNotNull(ds, "应有深层方法与策略");
+        assertEquals("6.8", ds.getValue());
+    }
+
+    @Test
+    void testParseB3_shouldExtractAllDimensions() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "抑制控制 94%  工作记忆 89%  认知灵活性 60%\n"
+                + "深层动机\n我的得分:8分\n"
+                + "表面动机\n我的得分:3分\n"
+                + "自我效能感\n我的得分:7分\n"
+                + "深层方法与策略\n我的得分:6.8分\n"
+                + "表面方法与策略\n我的得分:4.2分\n"
+                + "学习自我调节\n我的得分:7.5分";
+
+        DanParsedReport result = service.parseText(text, "learning");
+
+        assertFalse(result.isEmpty());
+
+        // 执行功能3项
+        assertNotNull(findItemByCode(result.getItems(), "inhibitoryControl"));
+        assertNotNull(findItemByCode(result.getItems(), "workingMemory"));
+        assertNotNull(findItemByCode(result.getItems(), "cognitiveFlexibility"));
+
+        // 学习动机3项
+        assertNotNull(findItemByCode(result.getItems(), "deepMotivation"));
+        assertNotNull(findItemByCode(result.getItems(), "surfaceMotivation"));
+        assertNotNull(findItemByCode(result.getItems(), "selfEfficacy"));
+
+        // 学习策略3项
+        assertNotNull(findItemByCode(result.getItems(), "deepStrategy"));
+        assertNotNull(findItemByCode(result.getItems(), "surfaceStrategy"));
+        assertNotNull(findItemByCode(result.getItems(), "selfRegulation"));
+
+        // 总分和百分位
+        assertNotNull(findItemByCode(result.getItems(), "total_score"));
+        assertNotNull(findItemByCode(result.getItems(), "percentile"));
+    }
+
+    @Test
+    void testParseB3_shouldHandleInlineScoreFormat() {
+        // 处理 "深层动机 8分" 格式(没有"我的得分")
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "深层动机 8分\n"
+                + "表面动机 3分\n"
+                + "自我效能感 7分";
+
+        DanParsedReport result = service.parseText(text, "learning");
+
+        assertFalse(result.isEmpty());
+        DataItem dm = findItemByCode(result.getItems(), "deepMotivation");
+        assertNotNull(dm, "应有深层动机");
+        assertEquals("8", dm.getValue());
+    }
+
+    // ==================== 回归测试 ====================
+
+    @Test
+    void testParseA2_regression() {
+        // A2 解析仍正常工作
+        String text = "测试数据\n测评日期:2024-01-01\n"
+                + "大五人格\n开放性 7.5分\n尽责性 8.0分";
+
+        DanParsedReport result = service.parseText(text, "mind");
+
+        assertFalse(result.isEmpty(), "A2 解析应正常");
+        assertEquals("A2", result.getReportType());
+    }
+
+    @Test
+    void testParseB4_regression() {
+        // B4 解析仍正常工作
+        String text = "测试数据\n测评日期:2024-01-01\n"
+                + "自我概念\n自信心 7分\n自尊心 8分";
+
+        DanParsedReport result = service.parseText(text, "wisdom");
+
+        assertFalse(result.isEmpty(), "B4 解析应正常");
+        assertEquals("B4", result.getReportType());
+    }
+
+    @Test
+    void testParse_unknownDimension_returnsEmpty() {
+        DanParsedReport result = service.parseText("some text", "unknown");
+        assertTrue(result.isEmpty());
+    }
+
+    @Test
+    void testParseA1_nonNumericText_returnsEmpty() {
+        DanParsedReport result = service.parseText("纯中文文本 没有数字", "cognition");
+        assertNotNull(result);
+    }
+
+    // ==================== B2 儿童自我与家庭教养 ====================
+
+    @Test
+    void testParseB2_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "behavior");
+        assertTrue(result.isEmpty());
+        assertEquals("B2", result.getReportType());
+        assertEquals("behavior", result.getDimension());
+    }
+
+    @Test
+    void testParseB2_shouldExtractSelfConcept() {
+        String text = "112\n总得分\nTotal Score\n79\n百分位(%)\n"
+                + "行为表现 9分\n能力与学校表现 8分\n躯体外貌 7分\n"
+                + "情绪状态 6分\n合群 8分\n幸福与满足 9分";
+
+        DanParsedReport result = service.parseText(text, "behavior");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "selfConcept_behavior"), "应有自我概念_行为表现");
+        assertNotNull(findItemByCode(result.getItems(), "selfConcept_school"), "应有自我概念_能力与学校");
+        assertNotNull(findItemByCode(result.getItems(), "selfConcept_happiness"), "应有自我概念_幸福与满足");
+    }
+
+    @Test
+    void testParseB2_shouldExtractBehavior() {
+        String text = "总得分 112\n品行问题 1分 优秀\n情绪问题 2分 良好\n学习问题 3分 一般\n"
+                + "Emotional state 2分\nConduct problems 1分";
+
+        DanParsedReport result = service.parseText(text, "behavior");
+        assertFalse(result.isEmpty());
+
+        // 中文优先匹配
+        DataItem conduct = findItemByCode(result.getItems(), "conduct");
+        assertNotNull(conduct, "应有品行问题");
+    }
+
+    @Test
+    void testParseB2_shouldExtractFamilyEnvironment() {
+        String text = "总得分 112\n亲密 9分\n情感表达 7分\n和谐 5分\n"
+                + "独立性 8分\n成就向导 6分\n文化氛围 7分\n娱乐活动 8分\n"
+                + "道德观念 9分\n家务安排 6分\n家庭规则 7分";
+
+        DanParsedReport result = service.parseText(text, "behavior");
+
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "family_intimacy"), "应有家庭_亲密");
+        assertNotNull(findItemByCode(result.getItems(), "family_rules"), "应有家庭_家庭规则");
+    }
+
+    // ==================== B6 职业发展 ====================
+
+    @Test
+    void testParseB6_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "career");
+        assertTrue(result.isEmpty());
+        assertEquals("B6", result.getReportType());
+        assertEquals("career", result.getDimension());
+    }
+
+    @Test
+    void testParseB6_shouldExtractHollandInterest() {
+        String text = "总得分 112\n"
+                + "NO.1: 艺术型 Artistic 7分  NO.2: 社会型 Social 5分\n";
+
+        DanParsedReport result = service.parseText(text, "career");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "interest_artistic"), "应有兴趣_艺术型");
+        assertNotNull(findItemByCode(result.getItems(), "interest_social"), "应有兴趣_社会型");
+    }
+
+    @Test
+    void testParseB6_shouldExtractMultipleIntelligence() {
+        String text = "总得分 112\n"
+                + "内省能力 INTRAPERSONAL 8分\n"
+                + "逻辑数学能力 LOGICAL 7分\n";
+
+        DanParsedReport result = service.parseText(text, "career");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "ability_intrapersonal"), "应有能力_内省");
+        assertNotNull(findItemByCode(result.getItems(), "ability_logical"), "应有能力_逻辑数学");
+    }
+
+    // ==================== C1 校园版 ====================
+
+    @Test
+    void testParseC1_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "campus");
+        assertTrue(result.isEmpty());
+        assertEquals("C1", result.getReportType());
+        assertEquals("campus", result.getDimension());
+    }
+
+    @Test
+    void testParseC1_shouldExtractCognitiveFromDetail() {
+        String text = "总得分 112\n"
+                + "我的感知觉得分 41  | 14%\n"
+                + "我的注意力得分 55  | 28%\n"
+                + "SELF-CONCEPT\n";
+
+        DanParsedReport result = service.parseText(text, "campus");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "perception_score"), "应有感知觉得分");
+        assertNotNull(findItemByCode(result.getItems(), "perception_pct"), "应有感知觉百分位");
+    }
+
+    @Test
+    void testParseC1_shouldExtractBigFive() {
+        String text = "总得分 112\n您在「开放性」上的得分是 7.5 分\n您在「宜人性」上的得分是 8.0 分\n";
+
+        DanParsedReport result = service.parseText(text, "campus");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "big5_开放性"), "应有大五_开放性");
+        assertNotNull(findItemByCode(result.getItems(), "big5_宜人性"), "应有大五_宜人性");
+    }
+
+    @Test
+    void testParseC1_shouldExtractSelfDriving() {
+        String text = "总得分 112\n我的得分:8分\n我的得分:7分\n我的得分:9分\nSELF-CONCEPT\n";
+
+        DanParsedReport result = service.parseText(text, "campus");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "autonomy"), "应有自主性");
+        assertNotNull(findItemByCode(result.getItems(), "competence"), "应有胜任感");
+        assertNotNull(findItemByCode(result.getItems(), "belonging"), "应有归属感");
+    }
+
+    @Test
+    void testParseC1_shouldExtractSelfConcept() {
+        String text = "总得分 112\n"
+                + "14% 28% 42% 55% 50% 60% 70% 65% 80% 75% 90% 85%\n"
+                + "SELF-CONCEPT\n";
+
+        DanParsedReport result = service.parseText(text, "campus");
+        assertFalse(result.isEmpty());
+        // 应能从SELF-CONCEPT前的百分位中提取自我概念
+        assertNotNull(findItemByCode(result.getItems(), "sc_behavior"), "应有自我概念_行为表现");
+    }
+
+    // ==================== B5 青春期挑战 ====================
+
+    @Test
+    void testParseB5_emptyText_returnsEmpty() {
+        DanParsedReport result = service.parseText("", "adolescent");
+        assertTrue(result.isEmpty());
+        assertEquals("B5", result.getReportType());
+        assertEquals("adolescent", result.getDimension());
+    }
+
+    @Test
+    void testParseB5_shouldExtractEmotionRegulation() {
+        String text = "总得分 112\n"
+                + "认知重评 Cognitive Reappraisal 7.5分\n"
+                + "表达抑制 Expressive Suppression 4.2分";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        DataItem reappraisal = findItemByCode(result.getItems(), "er_reappraisal");
+        assertNotNull(reappraisal, "应有认知重评");
+        assertEquals("7.5", reappraisal.getValue());
+    }
+
+    @Test
+    void testParseB5_shouldExtractAcademicStress() {
+        String text = "总得分 112\n"
+                + "学业压力源\n学业负担\n7\n家庭期望\n5\n师生关系\n3\n自我期望\n8\n同伴竞争\n6\n人际关系问题";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "stress_burden"), "应有学业压力_学业负担");
+        assertNotNull(findItemByCode(result.getItems(), "stress_family"), "应有学业压力_家庭期望");
+    }
+
+    @Test
+    void testParseB5_shouldExtractInterpersonal() {
+        String text = "总得分 112\n"
+                + "人际关系问题\n"
+                + "母亲关系\n与母亲关系良好。\n7\n"
+                + "父亲关系\n与父亲交流较少。\n5\n社交能力";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        DataItem mother = findItemByCode(result.getItems(), "rel_mother");
+        assertNotNull(mother, "应有人际_母亲关系");
+        assertEquals("7", mother.getValue());
+    }
+
+    @Test
+    void testParseB5_shouldExtractSocialAbility() {
+        String text = "总得分 112\n社交能力\n"
+                + "同龄人平均水平\n5\n6\n7\n8\n9\n睡眠";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "soc_initiative"), "应有社交_主动交往");
+        assertNotNull(findItemByCode(result.getItems(), "soc_conflict"), "应有社交_冲突解决");
+    }
+
+    @Test
+    void testParseB5_shouldExtractSleepData() {
+        String text = "总得分 112\n"
+                + "睡眠时长 7.5小时\n"
+                + "睡眠效率 85%\n"
+                + "入睡时间 15-30分钟\n"
+                + "主观睡眠质量\n3";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "sleep_hours"), "应有睡眠时长");
+        assertNotNull(findItemByCode(result.getItems(), "sleep_efficiency"), "应有睡眠效率");
+        assertNotNull(findItemByCode(result.getItems(), "sleep_latency"), "应有入睡时间");
+    }
+
+    @Test
+    void testParseB5_shouldExtractExerciseAndInternet() {
+        String text = "总得分 112\n"
+                + "运动时长 60分钟\n"
+                + "运动强度 中\n"
+                + "网络使用 2.5小时";
+
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+        assertNotNull(findItemByCode(result.getItems(), "exercise_duration"), "应有运动时长");
+        assertNotNull(findItemByCode(result.getItems(), "internet_duration"), "应有网络使用时长");
+    }
+
+    // ==================== B5 指南针图像分析 ====================
+
+    @Test
+    void testParseB5_noCompassImage_shouldNotFail() {
+        // 没有指南针图像时parseB5Report应正常工作, 不抛异常
+        String text = "总得分 200\n认知重评 5分\n表达抑制 3分\n学业压力源\n学业负担\n3\n睡眠时长 8小时";
+        DanParsedReport result = service.parseText(text, "adolescent");
+
+        assertFalse(result.isEmpty());
+        assertEquals("B5", result.getReportType());
+        // 文本提取应正常工作
+        assertNotNull(findItemByCode(result.getItems(), "er_reappraisal"), "应能提取认知重评");
+        assertNotNull(findItemByCode(result.getItems(), "sleep_hours"), "应能提取睡眠时长");
+    }
+
+    @Test
+    void testParseB5_withCompassScoringAlgorithm_shouldProduceValidResults() {
+        // 验证指南针评分算法: 验证常数、象限角度有效性、子维度数量
+        String text = "总得分 200\n认知重评 5.0分\n母亲关系\n5\n父亲关系\n4\n师生关系\n3\n同伴关系\n2";
+
+        // 不能直接访问私有方法 extractB5CompassScores, 
+        // 但可以验证 parseB5Report 在不抛异常的情况下正常工作
+        DanParsedReport result = service.parseText(text, "adolescent");
+        assertFalse(result.isEmpty());
+    }
+
+    // ==================== 工具方法 ====================
+
+    private DataItem findItemByCode(List<DataItem> items, String code) {
+        if (items == null) return null;
+        for (DataItem item : items) {
+            if (item.getCode().equals(code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+}

+ 157 - 0
cfc-frontend/components/feedback-popup.vue

@@ -0,0 +1,157 @@
+<template>
+  <view class="fb-overlay" v-if="visible" @tap="close">
+    <view class="fb-body" @tap.stop>
+      <view class="fb-header">
+        <text class="fb-title">报告反馈</text>
+        <text class="fb-close" @tap="close">×</text>
+      </view>
+      <textarea class="fb-textarea" v-model="content" placeholder="请描述您的问题或建议..." maxlength="500" />
+      <picker :value="typeIndex" :range="types" @change="onTypeChange">
+        <view class="fb-picker">
+          <text>{{ types[typeIndex] }}</text>
+          <text class="fb-arrow">▼</text>
+        </view>
+      </picker>
+      <view class="fb-actions">
+        <view class="fb-btn fb-btn-cancel" @tap="close">取消</view>
+        <view class="fb-btn fb-btn-submit" @tap="submit">提交反馈</view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { submitFeedback } from '../utils/api.js'
+
+export default {
+  props: {
+    visible: Boolean,
+    reportId: Number
+  },
+  data: function() {
+    return {
+      content: '',
+      types: ['功能建议', '数据疑问', '内容错误', '其他'],
+      typeIndex: 0,
+      submitting: false
+    }
+  },
+  methods: {
+    onTypeChange: function(e) {
+      this.typeIndex = e.detail.value
+    },
+    close: function() {
+      this.$emit('close')
+    },
+    submit: function() {
+      if (!this.content.trim()) {
+        uni.showToast({ title: '请填写内容', icon: 'none' })
+        return
+      }
+      if (this.submitting) return
+      this.submitting = true
+      var self = this
+      var payload = {
+        reportId: this.reportId,
+        type: this.types[this.typeIndex],
+        content: this.content.trim()
+      }
+      submitFeedback(payload).then(function(res) {
+        if (res.code === 200) {
+          uni.showToast({ title: '感谢反馈', icon: 'success' })
+          self.content = ''
+          self.typeIndex = 0
+          self.close()
+        } else {
+          uni.showToast({ title: res.message || '提交失败', icon: 'none' })
+        }
+      }).catch(function() {
+        uni.showToast({ title: '提交失败', icon: 'none' })
+      }).then(function() {
+        self.submitting = false
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.fb-overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0,0,0,0.4);
+  z-index: 999;
+  display: flex;
+  align-items: flex-end;
+}
+.fb-body {
+  background: #fff;
+  border-radius: 20rpx 20rpx 0 0;
+  padding: 30rpx;
+  width: 100%;
+  box-sizing: border-box;
+}
+.fb-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20rpx;
+}
+.fb-title {
+  font-size: 32rpx;
+  font-weight: 600;
+  color: #333;
+}
+.fb-close {
+  font-size: 40rpx;
+  color: #999;
+  padding: 0 10rpx;
+}
+.fb-textarea {
+  width: 100%;
+  height: 200rpx;
+  border: 1rpx solid #eee;
+  border-radius: 12rpx;
+  padding: 20rpx;
+  font-size: 26rpx;
+  box-sizing: border-box;
+  margin-bottom: 16rpx;
+}
+.fb-picker {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 20rpx;
+  border: 1rpx solid #eee;
+  border-radius: 12rpx;
+  margin-bottom: 20rpx;
+  font-size: 26rpx;
+  color: #333;
+}
+.fb-arrow {
+  color: #999;
+  font-size: 22rpx;
+}
+.fb-actions {
+  display: flex;
+}
+.fb-btn {
+  flex: 1;
+  text-align: center;
+  padding: 20rpx;
+  border-radius: 12rpx;
+  font-size: 28rpx;
+}
+.fb-btn-cancel {
+  border: 1rpx solid #ddd;
+  color: #666;
+  margin-right: 20rpx;
+}
+.fb-btn-submit {
+  background: #4A9BD7;
+  color: #fff;
+}
+</style>

+ 60 - 66
cfc-frontend/manifest.json

@@ -1,68 +1,62 @@
 {
-    "name" : "浠艾福",
-    "appid" : "__UNI__DA59D6D",
-    "description" : "关爱家庭成长小程序",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
-    "transformPx" : false,
-    "app-plus" : {
-        "usingComponents" : true,
-        "nvueStyleCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        "modules" : {},
-        "distribute" : {
-            "android" : {
-                "permissions" : [
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            "ios" : {},
-            "sdkConfigs" : {}
-        }
+  "name": "浠艾福",
+  "appid": "__UNI__DA59D6D",
+  "description": "关爱家庭成长小程序",
+  "versionName": "1.0.0",
+  "versionCode": "100",
+  "transformPx": false,
+  "app-plus": {
+    "nvueStyleCompiler": "uni-app",
+    "compilerVersion": 3,
+    "splashscreen": {
+      "alwaysShowBeforeRender": true,
+      "waiting": true,
+      "autoclose": true,
+      "delay": 0
     },
-    "quickapp" : {},
-    "mp-weixin" : {
-        "appid" : "wx5ba8038ef16fb245",
-        "setting" : {
-            "urlCheck" : false,
-            "es6" : true,
-            "postcss" : true,
-            "minified" : true,
-            "lazyCodeLoading" : "requiredComponents"
-        },
-        "usingComponents" : true
-    },
-    "mp-alipay" : {
-        "usingComponents" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "uniStatistics" : {
-        "enable" : false
-    },
-    "vueVersion" : "2"
-}
+    "modules": {},
+    "distribute": {
+      "android": {
+        "permissions": [
+          "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+          "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+          "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+          "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+          "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+          "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+          "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+          "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+          "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+          "<uses-feature android:name=\"android.hardware.camera\"/>",
+          "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+        ]
+      },
+      "ios": {},
+      "sdkConfigs": {}
+    }
+  },
+  "quickapp": {},
+  "mp-weixin": {
+    "appid": "wx5ba8038ef16fb245",
+    "setting": {
+      "urlCheck": false,
+      "es6": true,
+      "postcss": true,
+      "minified": true,
+      "lazyCodeLoading": "requiredComponents"
+    }
+  },
+  "mp-alipay": {},
+  "mp-baidu": {},
+  "mp-toutiao": {
+    "usingComponents": true
+  },
+  "uniStatistics": {
+    "enable": false
+  },
+  "vueVersion": "2"
+}

+ 12 - 0
cfc-frontend/pages.json

@@ -770,6 +770,12 @@
             "navigationBarTitleText": "健康报告"
           }
         },
+        {
+          "path": "physical-exam-detail",
+          "style": {
+            "navigationBarTitleText": "体检报告详情"
+          }
+        },
         {
           "path": "nutrition-profile",
           "style": {
@@ -1331,5 +1337,11 @@
         "selectedIconPath": "static/tab-profile-active.png"
       }
     ]
+  },
+  "easycom": {
+    "auto": "components/@dcloudio/uni-$2/components/uni-$1/uni-$1.vue",
+    "pages": {
+      "pages/*": "components/@dcloudio/uni-$2/components/uni-$1/uni-$1.vue"
+    }
   }
 }

+ 138 - 4
cfc-frontend/pages/dan-assessment/report-upload.vue

@@ -15,17 +15,40 @@
         <view class="dimension-options">
           <view
             :class="['dimension-option', dimension === 'mind' ? 'active' : '']"
-            @click="dimension = 'mind'">
+            @click="selectDimension('mind')">
             <text class="dimension-name">&#x2764; 心维度 (A2)</text>
           </view>
           <view
             :class="['dimension-option', dimension === 'wisdom' ? 'active' : '']"
-            @click="dimension = 'wisdom'">
+            @click="selectDimension('wisdom')">
             <text class="dimension-name">&#x1F9E0; 智维度 (B4)</text>
           </view>
         </view>
       </view>
 
+      <!-- 购买推荐 -->
+      <view class="purchase-section" v-if="recommendedProducts.length > 0">
+        <view class="purchase-header">
+          <text class="purchase-icon">📦</text>
+          <text class="purchase-title">为家人购买检测服务</text>
+        </view>
+        <scroll-view class="purchase-scroll" scroll-x enable-flex show-scrollbar="false">
+          <view
+            class="purchase-card"
+            v-for="item in recommendedProducts"
+            :key="item.id"
+            @click="goToProduct(item.id)"
+          >
+            <image class="purchase-cover" :src="item.coverImage || '/static/default-product.png'" mode="aspectFill" />
+            <text class="purchase-name">{{ item.name }}</text>
+            <text class="purchase-price">{{ formatPriceWithSymbol(item.price) }}</text>
+            <view class="purchase-btn">
+              <text class="purchase-btn-text">去购买</text>
+            </view>
+          </view>
+        </scroll-view>
+      </view>
+
       <view class="upload-area" @click="chooseFile">
         <view class="upload-icon" v-if="!selectedFile">&#x1F4C4;</view>
         <view class="upload-icon" v-else>&#x2705;</view>
@@ -117,7 +140,12 @@
 </template>
 
 <script>
-import { danParsePreview, danConfirmReport } from '../../utils/api.js'
+import { danParsePreview, danConfirmReport, productList } from '../../utils/api.js'
+
+var REPORT_DOMAIN_MAP = {
+  mind: 'mind',
+  wisdom: 'wisdom'
+}
 
 export default {
   data() {
@@ -128,9 +156,14 @@ export default {
       previewData: null,
       draftId: null,
       loading: false,
-      confirming: false
+      confirming: false,
+      recommendedProducts: [],
+      loadingProducts: false
     }
   },
+  onLoad: function() {
+    this.loadRecommendProducts(this.dimension)
+  },
   methods: {
     goBack: function() {
       uni.navigateBack()
@@ -215,6 +248,37 @@ export default {
       this.selectedFile = null
       this.previewData = null
       this.draftId = null
+    },
+    selectDimension: function(dim) {
+      this.dimension = dim
+      this.loadRecommendProducts(dim)
+    },
+    loadRecommendProducts: function(dimension) {
+      var domain = REPORT_DOMAIN_MAP[dimension]
+      if (!domain) {
+        this.recommendedProducts = []
+        return
+      }
+      var self = this
+      self.loadingProducts = true
+      productList({ domain: domain, productType: 'assessment', size: 4 }).then(function(res) {
+        if (res && res.data && res.data.records) {
+          self.recommendedProducts = res.data.records
+        } else {
+          self.recommendedProducts = []
+        }
+      }).catch(function() {
+        self.recommendedProducts = []
+      }).finally(function() {
+        self.loadingProducts = false
+      })
+    },
+    goToProduct: function(productId) {
+      uni.navigateTo({ url: '/pages/discover/product-detail/product-detail?id=' + productId })
+    },
+    formatPriceWithSymbol: function(cents) {
+      if (cents === null || cents === undefined) return '¥0'
+      return '¥' + (cents / 100).toFixed(2)
     }
   }
 }
@@ -502,4 +566,74 @@ export default {
   font-size: 30rpx;
   color: #333;
 }
+.purchase-section {
+  background: #F0F9FF;
+  border-radius: 16rpx;
+  padding: 24rpx;
+  margin-top: 24rpx;
+  border: 2rpx solid #BAE6FD;
+}
+.purchase-header {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-bottom: 16rpx;
+}
+.purchase-icon {
+  font-size: 28rpx;
+  margin-right: 8rpx;
+}
+.purchase-title {
+  font-size: 26rpx;
+  font-weight: bold;
+  color: #0369A1;
+}
+.purchase-scroll {
+  display: flex;
+  flex-direction: row;
+  white-space: nowrap;
+}
+.purchase-card {
+  display: inline-flex;
+  flex-direction: column;
+  width: 220rpx;
+  background: #fff;
+  border-radius: 12rpx;
+  padding: 16rpx;
+  margin-right: 16rpx;
+  flex-shrink: 0;
+}
+.purchase-cover {
+  width: 188rpx;
+  height: 120rpx;
+  border-radius: 8rpx;
+  background: #F1F5F9;
+  margin-bottom: 8rpx;
+}
+.purchase-name {
+  font-size: 22rpx;
+  color: #333;
+  line-height: 1.3;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  margin-bottom: 4rpx;
+}
+.purchase-price {
+  font-size: 24rpx;
+  color: #EF4444;
+  font-weight: bold;
+  margin-bottom: 8rpx;
+}
+.purchase-btn {
+  background: #3B82F6;
+  border-radius: 8rpx;
+  padding: 8rpx 0;
+  text-align: center;
+}
+.purchase-btn-text {
+  font-size: 22rpx;
+  color: #fff;
+  font-weight: 500;
+}
 </style>

+ 96 - 2
cfc-frontend/pages/health/gut-flora-detail.vue

@@ -24,6 +24,10 @@
           <text class="badge" v-if="report.gutAge">肠龄: {{ report.gutAge }}</text>
           <text class="badge" v-if="report.gutType">肠型: {{ report.gutType }}</text>
         </view>
+        <!-- 报告解读 -->
+        <view class="interpretation-box" v-if="reportInterpretation && reportInterpretation.gutAgeAssessment">
+          <text class="interp-text">{{ reportInterpretation.gutAgeAssessment }}</text>
+        </view>
       </view>
 
       <!-- 评分圆环 -->
@@ -43,6 +47,16 @@
           <text class="nav-label">菌群详情</text>
           <text class="nav-count">{{ floraCount }}种</text>
         </view>
+        <view class="nav-card" @tap="goToPathogen">
+          <text class="nav-icon">🔬</text>
+          <text class="nav-label">病原菌</text>
+          <text class="nav-count">{{ pathogenCount }}项</text>
+        </view>
+        <view class="nav-card" @tap="goToTaxonomy">
+          <text class="nav-icon">📊</text>
+          <text class="nav-label">菌群层级</text>
+          <text class="nav-count">5级</text>
+        </view>
         <view class="nav-card" @tap="goToRisks">
           <text class="nav-icon">⚠️</text>
           <text class="nav-label">疾病风险</text>
@@ -125,11 +139,19 @@
         </view>
       </view>
 
+      <view class="feedback-section" @tap="openFeedback">
+        <text class="feedback-icon">💬</text>
+        <text class="feedback-text">对这个报告有疑问或建议?告诉我们</text>
+        <text class="feedback-arrow">›</text>
+      </view>
+
       <view class="bottom-spacer"></view>
     </scroll-view>
 
     <health-knowledge-popup :visible="knowledgeVisible" :data="knowledgeData" @close="closeKnowledge" />
 
+    <feedback-popup :visible="feedbackVisible" :report-id="reportId" @close="closeFeedback" />
+
     <view class="fab" v-if="!isEditing" @tap="toggleEdit">
       <text class="fab-icon">✏️</text>
     </view>
@@ -141,8 +163,9 @@
 </template>
 
 <script>
-import { getReportDetail, editHealthReport, queryKnowledgeBase } from '../../utils/api.js'
+import { getReportDetail, editHealthReport, queryKnowledgeBase, queryIndicatorKnowledge } from '../../utils/api.js'
 import HealthKnowledgePopup from '../../components/health-knowledge-popup.vue'
+import FeedbackPopup from '../../components/feedback-popup.vue'
 
 var INDICATOR_TYPE_MAP = {
   '维生素': 'vitamin',
@@ -155,12 +178,13 @@ var INDICATOR_TYPE_MAP = {
 }
 
 export default {
-  components: { HealthKnowledgePopup },
+  components: { HealthKnowledgePopup, FeedbackPopup },
   data() {
     return {
       reportId: null,
       reportData: null,
       report: {},
+      reportInterpretation: null,
       isEditing: false,
       accordionOpen: { gut: false, nutri: false },
       scoreItems: [],
@@ -171,8 +195,10 @@ export default {
       riskCount: 0,
       foodCount: 0,
       indicatorCount: 0,
+      pathogenCount: 0,
       knowledgeVisible: false,
       knowledgeData: {},
+      feedbackVisible: false,
       indStatuses: ['正常', '偏低', '偏高', '缺乏', '不足', '过多', '异常']
     }
   },
@@ -195,12 +221,18 @@ export default {
         if (res.code === 200 && res.data) {
           self.reportData = res.data
           self.report = res.data.report || res.data
+          self.reportInterpretation = res.data.reportInterpretation || null
           self.buildScores(res.data)
           self.buildIndicators(res.data)
           self.floraCount = (res.data.gutFlora || []).length
           self.riskCount = (res.data.diseaseRisks || []).length
           self.foodCount = (res.data.foods || []).length
           self.indicatorCount = (res.data.indicators || []).length
+          // 计算病原菌总数
+          var flora = res.data.gutFlora || []
+          self.pathogenCount = flora.filter(function(i) {
+            return i.category === 'pathogen_genus' || i.category === 'pathogen_detection'
+          }).length
         }
       })
     },
@@ -270,6 +302,29 @@ export default {
       item.status = this.indStatuses[e.detail.value]
     },
     showKnowledge: function(type, name) {
+      var self = this
+      // 优先使用 KB v3 查询指标调整建议
+      queryIndicatorKnowledge(name).then(function(res) {
+        if (res.code === 200 && res.data) {
+          var v3 = res.data
+          var high = v3['偏高影响'] || ''
+          var low = v3['偏低影响'] || ''
+          self.knowledgeData = {
+            itemName: v3['名称'] || name,
+            category: v3['说明'] || '',
+            description: (high ? '偏高影响:' + high + '\n' : '') + (low ? '偏低影响:' + low : ''),
+            suggestion: v3['调整建议'] || ''
+          }
+          self.knowledgeVisible = true
+        } else {
+          // 回退旧版 DB 查询
+          self.queryOldKnowledgeBase(type, name)
+        }
+      }).catch(function() {
+        self.queryOldKnowledgeBase(type, name)
+      })
+    },
+    queryOldKnowledgeBase: function(type, name) {
       var self = this
       queryKnowledgeBase(type, name).then(function(res) {
         if (res.code === 200 && res.data) {
@@ -285,6 +340,12 @@ export default {
       this.knowledgeVisible = false
       this.knowledgeData = {}
     },
+    openFeedback: function() {
+      this.feedbackVisible = true
+    },
+    closeFeedback: function() {
+      this.feedbackVisible = false
+    },
     toggleEdit: function() {
       this.isEditing = true
     },
@@ -313,6 +374,12 @@ export default {
     goToSpecies: function() {
       uni.navigateTo({ url: '/pages/health/gut-flora-species-detail?reportId=' + this.reportId })
     },
+    goToPathogen: function() {
+      uni.navigateTo({ url: '/pages/health/gut-flora-species-detail?reportId=' + this.reportId + '&tab=pathogen_genus' })
+    },
+    goToTaxonomy: function() {
+      uni.navigateTo({ url: '/pages/health/gut-flora-species-detail?reportId=' + this.reportId + '&tab=taxonomy_class' })
+    },
     goToRisks: function() {
       uni.navigateTo({ url: '/pages/health/gut-flora-risks-detail?reportId=' + this.reportId })
     },
@@ -389,5 +456,32 @@ export default {
 .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; padding: 20rpx 30rpx; background: #fff; border-top: 1rpx solid #eee; gap: 20rpx; z-index: 100; }
 .btn-cancel { flex: 1; padding: 20rpx; border: 1rpx solid #ddd; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #666; }
 .btn-save { flex: 1; padding: 20rpx; background: #4A9BD7; border-radius: 12rpx; text-align: center; font-size: 28rpx; color: #fff; }
+.feedback-section {
+  display: flex;
+  align-items: center;
+  padding: 24rpx 30rpx;
+  background: #fff;
+  margin: 16rpx;
+  border-radius: 12rpx;
+  border: 1rpx solid #f0f0f0;
+}
+.feedback-icon { font-size: 32rpx; margin-right: 12rpx; }
+.feedback-text { flex: 1; font-size: 26rpx; color: #4A9BD7; }
+.feedback-arrow { font-size: 28rpx; color: #ccc; }
+
 .bottom-spacer { height: 40rpx; }
+
+/* 报告解读 */
+.interpretation-box {
+  background: #FFF8E1;
+  border-radius: 12rpx;
+  padding: 16rpx 20rpx;
+  margin: 16rpx 0 0;
+  border-left: 6rpx solid #FFB300;
+}
+.interp-text {
+  font-size: 24rpx;
+  color: #795548;
+  line-height: 1.6;
+}
 </style>

+ 37 - 5
cfc-frontend/pages/health/gut-flora-foods-detail.vue

@@ -55,7 +55,7 @@
 </template>
 
 <script>
-import { getReportDetail, editHealthReport } from '../../utils/api.js'
+import { getReportDetail, editHealthReport, getKnowledgeSection } from '../../utils/api.js'
 
 export default {
   data() {
@@ -105,10 +105,42 @@ export default {
     },
     loadData: function() {
       var self = this
-      getReportDetail(this.reportId).then(function(res) {
-        if (res.code === 200 && res.data) {
-          self.reportData = res.data
-          self.foods = res.data.foods || []
+      Promise.all([
+        getReportDetail(this.reportId),
+        getKnowledgeSection('食物库')
+      ]).then(function(results) {
+        var reportRes = results[0]
+        var kbRes = results[1]
+
+        // 构建 KB 食物 map
+        var kbFoodMap = {}
+        if (kbRes.code === 200 && kbRes.data && kbRes.data['数据']) {
+          var kbFoods = kbRes.data['数据']
+          for (var i = 0; i < kbFoods.length; i++) {
+            var f = kbFoods[i]
+            kbFoodMap[f['名称']] = f
+          }
+        }
+
+        if (reportRes.code === 200 && reportRes.data) {
+          self.reportData = reportRes.data
+          var reportFoods = reportRes.data.foods || []
+          // 合并 KB 营养数据(个人 JSON 只保存名称和推荐指数,营养数据从 KB 查)
+          self.foods = reportFoods.map(function(item) {
+            var name = item.foodName || item.name
+            var kb = kbFoodMap[name] || {}
+            return {
+              foodName: name,
+              name: name,
+              score: item.score,
+              category: item.category || kb['分类'] || '其它',
+              protein: kb['蛋白g'] || item.protein,
+              fat: kb['脂肪g'] || item.fat,
+              carb: kb['碳水化合物g'] || item.carb,
+              fiber: kb['总膳食纤维g'] || item.fiber,
+              energy: kb['能量KJ'] || item.energy
+            }
+          })
         }
       })
     },

+ 24 - 1
cfc-frontend/pages/health/gut-flora-risks-detail.vue

@@ -68,7 +68,7 @@
 </template>
 
 <script>
-import { getReportDetail, editHealthReport, queryKnowledgeBase } from '../../utils/api.js'
+import { getReportDetail, editHealthReport, queryKnowledgeBase, queryIndicatorKnowledge } from '../../utils/api.js'
 import HealthKnowledgePopup from '../../components/health-knowledge-popup.vue'
 
 export default {
@@ -159,6 +159,29 @@ export default {
       item.riskLevel = this.riskLevels[e.detail.value]
     },
     showKnowledge: function(type, name) {
+      var self = this
+      // 优先使用 KB v3 查询指标调整建议
+      queryIndicatorKnowledge(name).then(function(res) {
+        if (res.code === 200 && res.data) {
+          var v3 = res.data
+          var high = v3['偏高影响'] || ''
+          var low = v3['偏低影响'] || ''
+          self.knowledgeData = {
+            itemName: v3['名称'] || name,
+            category: v3['说明'] || '',
+            description: (high ? '偏高影响:' + high + '\n' : '') + (low ? '偏低影响:' + low : ''),
+            suggestion: v3['调整建议'] || ''
+          }
+          self.knowledgeVisible = true
+        } else {
+          // 回退旧版 DB 查询
+          self.queryOldKnowledgeBase(type, name)
+        }
+      }).catch(function() {
+        self.queryOldKnowledgeBase(type, name)
+      })
+    },
+    queryOldKnowledgeBase: function(type, name) {
       var self = this
       queryKnowledgeBase(type, name).then(function(res) {
         if (res.code === 200 && res.data) {

+ 67 - 11
cfc-frontend/pages/health/gut-flora-species-detail.vue

@@ -54,7 +54,7 @@
 </template>
 
 <script>
-import { getReportDetail, editHealthReport, queryKnowledgeBase } from '../../utils/api.js'
+import { getReportDetail, editHealthReport, queryKnowledgeBase, queryBacteriaKnowledge } from '../../utils/api.js'
 import HealthKnowledgePopup from '../../components/health-knowledge-popup.vue'
 
 export default {
@@ -76,13 +76,13 @@ export default {
         { key: 'probiotic', label: '益生菌' },
         { key: 'harmful', label: '有害菌' },
         { key: 'other', label: '其它菌属' },
-        { key: 'pathogen', label: '病原菌' },
-        { key: 'obesity', label: '肥胖相关' },
-        { key: 'constipation', label: '便秘相关' },
-        { key: 'depression', label: '抑郁相关' },
-        { key: 'allergy', label: '过敏相关' },
-        { key: 'bloating', label: '腹胀相关' },
-        { key: 'insomnia', label: '失眠相关' },
+        { key: 'pathogen_genus', label: '病原菌属' },
+        { key: 'pathogen_detection', label: '病原菌检出' },
+        { key: 'taxonomy_class', label: '菌纲' },
+        { key: 'taxonomy_order', label: '菌目' },
+        { key: 'taxonomy_family', label: '菌科' },
+        { key: 'taxonomy_genus', label: '菌属' },
+        { key: 'taxonomy_species', label: '菌种' },
         { key: 'all', label: '全部' }
       ]
     }
@@ -96,13 +96,42 @@ export default {
           ? this.editFlora.filter(function(i) { return i.category === 'probiotic' })
           : this.probioticSpecies
       }
-      return list.filter(function(item) {
-        return item.category === this.selectedTab
-      }.bind(this))
+      // Taxonomy tabs: filter by category='taxonomy' + level
+      if (this.selectedTab.indexOf('taxonomy_') === 0) {
+        var levelMap = {
+          'taxonomy_class': 'CLASS',
+          'taxonomy_order': 'ORDER',
+          'taxonomy_family': 'FAMILY',
+          'taxonomy_genus': 'GENUS',
+          'taxonomy_species': 'SPECIES'
+        }
+        var targetLevel = levelMap[this.selectedTab]
+        return list.filter(function(item) {
+          return item.category === 'taxonomy' && item.level === targetLevel
+        })
+      }
+      // Other category tabs: filter by category field
+      var categoryMap = {
+        'core': 'core',
+        'harmful': 'harmful',
+        'other': 'other',
+        'pathogen_genus': 'pathogen_genus',
+        'pathogen_detection': 'pathogen_detection'
+      }
+      var targetCategory = categoryMap[this.selectedTab]
+      if (targetCategory) {
+        return list.filter(function(item) {
+          return item.category === targetCategory
+        })
+      }
+      return []
     }
   },
   onLoad: function(options) {
     this.reportId = options.reportId ? parseInt(options.reportId) : null
+    if (options.tab) {
+      this.selectedTab = options.tab
+    }
     if (this.reportId) {
       this.loadData()
     }
@@ -158,6 +187,33 @@ export default {
       item.status = this.floraStatuses[e.detail.value]
     },
     showKnowledge: function(type, name) {
+      var self = this
+      // 优先使用 KB v3 查询菌属功能
+      queryBacteriaKnowledge(name).then(function(res) {
+        if (res.code === 200 && res.data) {
+          var v3 = res.data
+          var high = v3['偏高影响'] || ''
+          var low = v3['偏低影响'] || ''
+          var direction = v3['调整方向'] || ''
+          var suggestion = ''
+          if (high) suggestion += '偏高影响:' + high + '\n'
+          if (low) suggestion += '偏低影响:' + low + '\n'
+          if (direction) suggestion += '调整方向:' + direction
+          self.knowledgeData = {
+            itemName: v3['学名'] || name,
+            category: (v3['中文名'] ? v3['中文名'] + ' ' : '') + (v3['分组'] || ''),
+            description: v3['功能说明'] || '',
+            suggestion: suggestion.trim()
+          }
+          self.knowledgeVisible = true
+        } else {
+          self.queryOldKnowledgeBase(type, name)
+        }
+      }).catch(function() {
+        self.queryOldKnowledgeBase(type, name)
+      })
+    },
+    queryOldKnowledgeBase: function(type, name) {
       var self = this
       queryKnowledgeBase(type, name).then(function(res) {
         if (res.code === 200 && res.data) {

+ 326 - 0
cfc-frontend/pages/health/physical-exam-detail.vue

@@ -0,0 +1,326 @@
+<template>
+  <view class="detail-container">
+    <!-- 导航栏 -->
+    <view class="nav-bar">
+      <text class="nav-back" @click="goBack">‹ 返回</text>
+      <text class="nav-title">体检报告详情</text>
+      <view class="nav-placeholder"></view>
+    </view>
+
+    <!-- 加载状态 -->
+    <view class="loading-wrap" v-if="loading">
+      <text class="loading-text">加载中...</text>
+    </view>
+
+    <template v-else>
+      <!-- 报告摘要卡片 -->
+      <view class="summary-card">
+        <view class="summary-header">
+          <text class="summary-icon">🏥</text>
+          <text class="summary-title">体检报告</text>
+        </view>
+        <view class="summary-body">
+          <view class="summary-row">
+            <text class="summary-label">报告日期</text>
+            <text class="summary-value">{{ report.reportDate || '--' }}</text>
+          </view>
+          <view class="summary-row">
+            <text class="summary-label">综合评分</text>
+            <text class="summary-score" :class="scoreClass">{{ report.overallScore || '--' }}<text class="score-unit">分</text></text>
+          </view>
+          <view class="summary-row">
+            <text class="summary-label">报告编号</text>
+            <text class="summary-value">{{ report.reportNumber || '--' }}</text>
+          </view>
+          <view class="summary-row">
+            <text class="summary-label">备注</text>
+            <text class="summary-value">{{ report.remark || '无' }}</text>
+          </view>
+        </view>
+      </view>
+
+      <!-- 指标分类列表 -->
+      <view class="indicator-section" v-for="(group, groupName) in groupedIndicators" :key="groupName">
+        <view class="group-header">
+          <text class="group-icon">{{ getCategoryIcon(groupName) }}</text>
+          <text class="group-title">{{ groupName }}</text>
+          <text class="group-count">{{ group.length }}项</text>
+        </view>
+
+        <view class="indicator-list">
+          <view class="indicator-item" v-for="ind in group" :key="ind.id || ind.indicatorName">
+            <view class="indicator-left">
+              <text class="indicator-name">{{ ind.indicatorName }}</text>
+              <text class="indicator-range" v-if="ind.refRange">参考值: {{ ind.refRange }}</text>
+            </view>
+            <view class="indicator-right">
+              <text class="indicator-value" :class="getStatusClass(ind)">{{ ind.indicatorValue }}</text>
+              <text class="indicator-unit" v-if="ind.unit">{{ ind.unit }}</text>
+              <text class="indicator-status" :class="getStatusClass(ind)">{{ ind.status || '--' }}</text>
+            </view>
+          </view>
+        </view>
+      </view>
+
+      <!-- 空状态 -->
+      <view class="empty-wrap" v-if="!loading && indicatorGroups.length === 0">
+        <text class="empty-icon">📋</text>
+        <text class="empty-text">暂无指标数据</text>
+      </view>
+    </template>
+
+    <view class="bottom-spacer"></view>
+  </view>
+</template>
+
+<script>
+import { getReportDetail } from '../../utils/api.js'
+
+export default {
+  data() {
+    return {
+      reportId: null,
+      report: {},
+      indicators: [],
+      loading: false
+    }
+  },
+  computed: {
+    groupedIndicators: function() {
+      var groups = {}
+      var self = this
+      self.indicators.forEach(function(ind) {
+        var cat = ind.category || '其他指标'
+        if (!groups[cat]) {
+          groups[cat] = []
+        }
+        groups[cat].push(ind)
+      })
+      // 按分类排序,常用分类在前
+      var priority = ['血常规', '肝功能', '肾功能', '血脂', '血糖', '尿常规', '便常规',
+        '甲状腺功能', '肿瘤标志物', '维生素', '微量元素', '营养状况', '炎症指标',
+        '免疫指标', '其他指标']
+      var sorted = {}
+      priority.forEach(function(p) {
+        if (groups[p]) {
+          sorted[p] = groups[p]
+          delete groups[p]
+        }
+      })
+      // 剩余分类保持原序
+      Object.keys(groups).forEach(function(k) {
+        sorted[k] = groups[k]
+      })
+      return sorted
+    },
+    scoreClass: function() {
+      var s = parseInt(this.report.overallScore)
+      if (isNaN(s)) return ''
+      if (s >= 80) return 'score-good'
+      if (s >= 60) return 'score-warn'
+      return 'score-bad'
+    }
+  },
+  onLoad: function(options) {
+    this.reportId = options.reportId ? parseInt(options.reportId) : null
+    this.loadData()
+  },
+  methods: {
+    loadData: function() {
+      var self = this
+      if (!self.reportId) {
+        uni.showToast({ title: '参数错误', icon: 'none' })
+        return
+      }
+      self.loading = true
+      getReportDetail(self.reportId).then(function(res) {
+        if (res.code === 200 && res.data) {
+          var data = res.data
+          self.report = data.report || data
+          // 指标可能来自 indicators 字段或直接是 report 的一部分
+          if (data.indicators) {
+            self.indicators = data.indicators
+          } else if (data.indicatorList) {
+            self.indicators = data.indicatorList
+          } else {
+            self.indicators = []
+          }
+        } else {
+          uni.showToast({ title: res.message || '加载失败', icon: 'none' })
+        }
+      }).catch(function(e) {
+        console.log('获取报告详情失败', e)
+        uni.showToast({ title: '加载失败', icon: 'none' })
+      }).finally(function() {
+        self.loading = false
+      })
+    },
+    getCategoryIcon: function(cat) {
+      var icons = {
+        '血常规': '🩸',
+        '肝功能': '🫁',
+        '肾功能': '🫘',
+        '血脂': '🫧',
+        '血糖': '🍬',
+        '尿常规': '💧',
+        '便常规': '💩',
+        '甲状腺功能': '🦋',
+        '肿瘤标志物': '🔬',
+        '维生素': '🍊',
+        '微量元素': '⚗️',
+        '营养状况': '🥗',
+        '炎症指标': '🔥',
+        '免疫指标': '🛡️',
+      }
+      return icons[cat] || '📊'
+    },
+    getStatusClass: function(ind) {
+      var status = (ind.status || '').toLowerCase()
+      if (status.indexOf('偏高') !== -1 || status.indexOf('高') !== -1 || status.indexOf('过多') !== -1) {
+        return 'status-high'
+      }
+      if (status.indexOf('偏低') !== -1 || status.indexOf('低') !== -1 || status.indexOf('缺乏') !== -1) {
+        return 'status-low'
+      }
+      if (status.indexOf('注意') !== -1 || status.indexOf('风险') !== -1) {
+        return 'status-warn'
+      }
+      if (status.indexOf('正常') !== -1 || status.indexOf('未检出') !== -1) {
+        return 'status-normal'
+      }
+      return ''
+    },
+    goBack: function() {
+      uni.navigateBack()
+    }
+  }
+}
+</script>
+
+<style scoped>
+.detail-container {
+  min-height: 100vh;
+  background: #F5F7FA;
+}
+.nav-bar {
+  position: sticky;
+  top: 0;
+  background: #fff;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  padding: 20rpx 30rpx;
+  box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.06);
+  z-index: 100;
+}
+.nav-back { font-size: 32rpx; color: #5B9BD5; }
+.nav-title { font-size: 32rpx; font-weight: bold; color: #333; }
+.nav-placeholder { width: 80rpx; }
+
+.loading-wrap {
+  display: flex;
+  justify-content: center;
+  padding: 80rpx 0;
+}
+.loading-text { font-size: 28rpx; color: #999; }
+
+/* 摘要卡片 */
+.summary-card {
+  background: linear-gradient(135deg, #E3F2FD, #BBDEFB);
+  border-radius: 20rpx;
+  margin: 20rpx 30rpx;
+  padding: 28rpx 24rpx;
+}
+.summary-header {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-bottom: 20rpx;
+}
+.summary-icon { font-size: 40rpx; margin-right: 12rpx; }
+.summary-title { font-size: 32rpx; font-weight: bold; color: #1565C0; }
+.summary-body { display: flex; flex-direction: column; gap: 14rpx; }
+.summary-row {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+}
+.summary-label { font-size: 26rpx; color: #555; }
+.summary-value { font-size: 26rpx; color: #333; font-weight: 500; }
+.summary-score { font-size: 40rpx; font-weight: bold; }
+.score-unit { font-size: 22rpx; font-weight: normal; }
+.score-good { color: #2E7D32; }
+.score-warn { color: #E65100; }
+.score-bad { color: #C62828; }
+
+/* 指标分组 */
+.indicator-section {
+  margin: 0 30rpx 20rpx;
+}
+.group-header {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  padding: 16rpx 20rpx;
+  background: #fff;
+  border-radius: 16rpx 16rpx 0 0;
+  border-bottom: 2rpx solid #E2E8F0;
+}
+.group-icon { font-size: 28rpx; margin-right: 8rpx; }
+.group-title { font-size: 28rpx; font-weight: bold; color: #333; flex: 1; }
+.group-count { font-size: 22rpx; color: #999; }
+
+.indicator-list {
+  background: #fff;
+  border-radius: 0 0 16rpx 16rpx;
+  overflow: hidden;
+}
+.indicator-item {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  padding: 18rpx 20rpx;
+  border-bottom: 1rpx solid #F0F0F0;
+}
+.indicator-item:last-child { border-bottom: none; }
+.indicator-left {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  gap: 4rpx;
+}
+.indicator-name { font-size: 28rpx; color: #333; font-weight: 500; }
+.indicator-range { font-size: 22rpx; color: #999; }
+.indicator-right {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+  gap: 4rpx;
+  margin-left: 20rpx;
+  min-width: 120rpx;
+}
+.indicator-value { font-size: 32rpx; font-weight: bold; }
+.indicator-unit { font-size: 22rpx; color: #999; }
+.indicator-status { font-size: 20rpx; padding: 2rpx 10rpx; border-radius: 10rpx; }
+
+/* 状态颜色 */
+.status-high { color: #C62828; }
+.status-low { color: #E65100; }
+.status-warn { color: #F57F17; }
+.status-normal { color: #2E7D32; }
+
+/* 空状态 */
+.empty-wrap {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 100rpx 0;
+}
+.empty-icon { font-size: 80rpx; margin-bottom: 20rpx; }
+.empty-text { font-size: 28rpx; color: #999; }
+
+.bottom-spacer { height: 60rpx; }
+</style>

+ 9 - 7
cfc-frontend/pages/health/report-list.vue

@@ -77,13 +77,15 @@ export default {
     goBack() {
       uni.navigateBack()
     },
-    goToDetail(reportId, reportType) {
-      if (reportType === 'gut_flora') {
-        uni.navigateTo({ url: '/pages/health/gut-flora-detail?reportId=' + reportId })
-      } else {
-        uni.navigateTo({ url: '/pages/body/health-report?reportId=' + reportId })
-      }
-    },
+	goToDetail(reportId, reportType) {
+		var detailPages = {
+		'gut_flora': '/pages/health/gut-flora-detail',
+		'physical_exam': '/pages/health/physical-exam-detail',
+		'tongue': '/pages/health/tongue-index'
+	  }
+	  var url = detailPages[reportType] || '/pages/body/health-report'
+	  uni.navigateTo({ url: url + '?reportId=' + reportId })
+	},
     goToUpload() {
       uni.navigateTo({ url: '/pages/health/report-upload' })
     },

+ 456 - 45
cfc-frontend/pages/health/report-survey.vue

@@ -15,14 +15,21 @@
     <!-- 提示说明 -->
     <view class="tip-banner">
       <text class="tip-icon">💡</text>
-      <text class="tip-text">请根据孩子最近的实际情况填写,帮助AI更准确地解读报告并提供个性化方案</text>
+      <text class="tip-text">请根据孩子和家庭的实际情况填写,帮助AI更准确地解读报告</text>
     </view>
 
     <!-- 表单 -->
     <view class="form-section">
-      <!-- Q1: 饮食情况 -->
+
+      <!-- ===================== 第一部分:生活习惯 ===================== -->
+      <view class="section-header">
+        <text class="section-icon">🍚</text>
+        <text class="section-title">生活习惯</text>
+      </view>
+
+      <!-- Q1: 饮食结构 -->
       <view class="question-card">
-        <text class="q-number">1/6</text>
+        <text class="q-number">1/12</text>
         <text class="q-title">孩子平时的饮食结构是怎样的?</text>
         <view class="q-options">
           <view class="q-option" :class="{ 'q-selected': survey.diet === 'balanced' }" @click="survey.diet = 'balanced'">
@@ -46,23 +53,23 @@
 
       <!-- Q2: 消化状况 -->
       <view class="question-card">
-        <text class="q-number">2/6</text>
+        <text class="q-number">2/12</text>
         <text class="q-title">孩子近期消化状况如何?</text>
         <view class="q-options">
           <view class="q-option" :class="{ 'q-selected': survey.digestion === 'good' }" @click="survey.digestion = 'good'">
-            <text class="q-icon">😊</text>
+            <text>😊</text>
             <text class="q-text">正常,消化良好</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.digestion === 'constipation' }" @click="survey.digestion = 'constipation'">
-            <text class="q-icon">😣</text>
+            <text>😣</text>
             <text class="q-text">容易便秘</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.digestion === 'diarrhea' }" @click="survey.digestion = 'diarrhea'">
-            <text class="q-icon">😟</text>
+            <text>😟</text>
             <text class="q-text">容易腹泻</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.digestion === 'irregular' }" @click="survey.digestion = 'irregular'">
-            <text class="q-icon">🤔</text>
+            <text>🤔</text>
             <text class="q-text">不太规律</text>
           </view>
         </view>
@@ -70,23 +77,23 @@
 
       <!-- Q3: 睡眠质量 -->
       <view class="question-card">
-        <text class="q-number">3/6</text>
+        <text class="q-number">3/12</text>
         <text class="q-title">孩子近期的睡眠质量如何?</text>
         <view class="q-options">
           <view class="q-option" :class="{ 'q-selected': survey.sleep === 'good' }" @click="survey.sleep = 'good'">
-            <text class="q-icon">😴</text>
+            <text>😴</text>
             <text class="q-text">睡得好,作息规律</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.sleep === 'late' }" @click="survey.sleep = 'late'">
-            <text class="q-icon">🦉</text>
+            <text>🦉</text>
             <text class="q-text">睡得太晚</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.sleep === 'restless' }" @click="survey.sleep = 'restless'">
-            <text class="q-icon">😰</text>
+            <text>😰</text>
             <text class="q-text">翻来覆去睡不安稳</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.sleep === 'short' }" @click="survey.sleep = 'short'">
-            <text class="q-icon">⏰</text>
+            <text>⏰</text>
             <text class="q-text">睡眠时间不足</text>
           </view>
         </view>
@@ -94,69 +101,281 @@
 
       <!-- Q4: 运动习惯 -->
       <view class="question-card">
-        <text class="q-number">4/6</text>
+        <text class="q-number">4/12</text>
         <text class="q-title">孩子每周运动情况?</text>
         <view class="q-options">
           <view class="q-option" :class="{ 'q-selected': survey.exercise === 'frequent' }" @click="survey.exercise = 'frequent'">
-            <text class="q-icon">🏃</text>
+            <text>🏃</text>
             <text class="q-text">经常运动(3次以上/周)</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.exercise === 'moderate' }" @click="survey.exercise = 'moderate'">
-            <text class="q-icon">🚶</text>
+            <text>🚶</text>
             <text class="q-text">偶尔运动(1-2次/周)</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.exercise === 'rare' }" @click="survey.exercise = 'rare'">
-            <text class="q-icon">🪑</text>
+            <text>🪑</text>
             <text class="q-text">很少运动</text>
           </view>
         </view>
       </view>
 
-      <!-- Q5: 过敏/不适 -->
+      <!-- Q5: 饮水习惯 -->
       <view class="question-card">
-        <text class="q-number">5/6</text>
-        <text class="q-title">孩子是否有以下过敏或不适症状?(可多选)</text>
+        <text class="q-number">5/12</text>
+        <text class="q-title">孩子每日饮水量如何?</text>
         <view class="q-options">
+          <view class="q-option" :class="{ 'q-selected': survey.water === 'enough' }" @click="survey.water = 'enough'">
+            <text>💧</text>
+            <text class="q-text">充足(>1500ml)</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.water === 'moderate' }" @click="survey.water = 'moderate'">
+            <text>🥤</text>
+            <text class="q-text">一般(500-1500ml)</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.water === 'little' }" @click="survey.water = 'little'">
+            <text>😥</text>
+            <text class="q-text">偏少(<500ml)</text>
+          </view>
+        </view>
+      </view>
+
+      <!-- Q6: 用药情况 -->
+      <view class="question-card">
+        <text class="q-number">6/12</text>
+        <text class="q-title">孩子近期是否有以下用药情况?(可多选)</text>
+        <view class="q-options multi">
+          <view class="q-option" :class="{ 'q-selected': hasMedication('antibiotic') }" @click="toggleMedication('antibiotic')">
+            <text class="q-text">抗生素(近3个月内使用过)</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasMedication('probiotic') }" @click="toggleMedication('probiotic')">
+            <text class="q-text">益生菌/益生元</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasMedication('cold') }" @click="toggleMedication('cold')">
+            <text class="q-text">感冒药/退烧药</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasMedication('stomach') }" @click="toggleMedication('stomach')">
+            <text class="q-text">肠胃药</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasMedication('none') }" @click="toggleMedication('none')">
+            <text class="q-text">无特殊用药</text>
+          </view>
+        </view>
+      </view>
+
+      <!-- ===================== 第二部分:疾病史 ===================== -->
+      <view class="section-header">
+        <text class="section-icon">🏥</text>
+        <text class="section-title">疾病史</text>
+      </view>
+
+      <!-- Q7: 慢性病/系统性疾病 -->
+      <view class="question-card">
+        <text class="q-number">7/12</text>
+        <text class="q-title">孩子是否有以下慢性或系统性疾病?(可多选)</text>
+        <view class="q-options multi">
+          <view class="q-option" :class="{ 'q-selected': hasChronic('none') }" @click="toggleChronic('none')">
+            <text class="q-text">无已知疾病</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('asthma') }" @click="toggleChronic('asthma')">
+            <text class="q-text">哮喘/过敏性鼻炎</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('eczema') }" @click="toggleChronic('eczema')">
+            <text class="q-text">湿疹/特应性皮炎</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('anemia') }" @click="toggleChronic('anemia')">
+            <text class="q-text">贫血</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('obesity') }" @click="toggleChronic('obesity')">
+            <text class="q-text">超重/肥胖</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('underweight') }" @click="toggleChronic('underweight')">
+            <text class="q-text">偏瘦/营养不良</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('thyroid') }" @click="toggleChronic('thyroid')">
+            <text class="q-text">甲状腺问题</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('digestive') }" @click="toggleChronic('digestive')">
+            <text class="q-text">消化系统疾病(胃炎/肠炎等)</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': hasChronic('other') }" @click="toggleChronic('other')">
+            <text class="q-text">其他(请在备注说明)</text>
+          </view>
+        </view>
+        <!-- 其他疾病描述 -->
+        <textarea v-if="hasChronic('other')" class="extra-input" v-model="survey.diseaseHistory.otherDesc" placeholder="请描述其他疾病情况..." maxlength="200" />
+      </view>
+
+      <!-- Q8: 过敏史 -->
+      <view class="question-card">
+        <text class="q-number">8/12</text>
+        <text class="q-title">孩子是否有以下过敏情况?(可多选)</text>
+        <view class="q-options multi">
+          <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('none') !== -1 }" @click="toggleAllergy('none')">
+            <text class="q-text">无明显过敏</text>
+          </view>
           <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('food') !== -1 }" @click="toggleAllergy('food')">
-            <text class="q-text">食物过敏</text>
+            <text class="q-text">食物过敏(牛奶/鸡蛋/海鲜等)</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('drug') !== -1 }" @click="toggleAllergy('drug')">
+            <text class="q-text">药物过敏</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('pollen') !== -1 }" @click="toggleAllergy('pollen')">
             <text class="q-text">花粉/尘螨过敏</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('skin') !== -1 }" @click="toggleAllergy('skin')">
-            <text class="q-text">皮肤湿疹/皮疹</text>
-          </view>
-          <view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('none') !== -1 }" @click="toggleAllergy('none')">
-            <text class="q-text">无明显过敏</text>
+            <text class="q-text">皮肤过敏/荨麻疹</text>
           </view>
         </view>
+        <!-- 过敏详情 -->
+        <textarea v-if="survey.allergies.length > 0 && survey.allergies.indexOf('none') === -1" class="extra-input" v-model="survey.allergyDetail" placeholder="请补充过敏详情(过敏原、症状等)..." maxlength="200" />
       </view>
 
-      <!-- Q6: 健康目标 -->
+      <!-- Q9: 手术/住院史 -->
       <view class="question-card">
-        <text class="q-number">6/6</text>
-        <text class="q-title">您希望通过精准营养改善什么?(可多选)</text>
+        <text class="q-number">9/12</text>
+        <text class="q-title">孩子是否有手术或住院史?</text>
         <view class="q-options">
+          <view class="q-option" :class="{ 'q-selected': survey.surgery === 'none' }" @click="survey.surgery = 'none'">
+            <text class="q-text">无</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.surgery === 'yes' }" @click="survey.surgery = 'yes'">
+            <text class="q-text">有</text>
+          </view>
+        </view>
+        <textarea v-if="survey.surgery === 'yes'" class="extra-input" v-model="survey.surgeryDetail" placeholder="请描述手术/住院原因和时间..." maxlength="200" />
+      </view>
+
+      <!-- ===================== 第三部分:家族史 ===================== -->
+      <view class="section-header">
+        <text class="section-icon">🧬</text>
+        <text class="section-title">家族病史</text>
+      </view>
+
+      <!-- Q10: 家族病史 -->
+      <view class="question-card">
+        <text class="q-number">10/12</text>
+        <text class="q-title">直系亲属是否有以下疾病史?(可多选)</text>
+        <view class="family-grid">
+          <view class="family-col">
+            <text class="family-role">父亲</text>
+            <view class="family-options">
+              <view v-for="opt in familyDiseaseOptions" :key="'f_' + opt.value"
+                class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('father', opt.value) }"
+                @click="toggleFamilyDisease('father', opt.value)">
+                <text>{{ opt.label }}</text>
+              </view>
+              <view class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('father', 'other') }"
+                @click="toggleFamilyDisease('father', 'other')">
+                <text>其他</text>
+              </view>
+            </view>
+          </view>
+          <view class="family-col">
+            <text class="family-role">母亲</text>
+            <view class="family-options">
+              <view v-for="opt in familyDiseaseOptions" :key="'m_' + opt.value"
+                class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('mother', opt.value) }"
+                @click="toggleFamilyDisease('mother', opt.value)">
+                <text>{{ opt.label }}</text>
+              </view>
+              <view class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('mother', 'other') }"
+                @click="toggleFamilyDisease('mother', 'other')">
+                <text>其他</text>
+              </view>
+            </view>
+          </view>
+          <view class="family-col">
+            <text class="family-role">兄弟姐妹</text>
+            <view class="family-options">
+              <view v-for="opt in familyDiseaseOptions" :key="'s_' + opt.value"
+                class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('sibling', opt.value) }"
+                @click="toggleFamilyDisease('sibling', opt.value)">
+                <text>{{ opt.label }}</text>
+              </view>
+              <view class="family-tag" :class="{ 'tag-selected': hasFamilyDisease('sibling', 'other') }"
+                @click="toggleFamilyDisease('sibling', 'other')">
+                <text>其他</text>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+
+      <!-- Q11: 祖父母病史 -->
+      <view class="question-card">
+        <text class="q-number">11/12</text>
+        <text class="q-title">祖父母/外祖父母是否有以下疾病史?(可多选)</text>
+        <view class="q-options multi">
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('unknown') !== -1 }" @click="toggleGrandparent('unknown')">
+            <text class="q-text">不清楚</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('hypertension') !== -1 }" @click="toggleGrandparent('hypertension')">
+            <text class="q-text">高血压</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('diabetes') !== -1 }" @click="toggleGrandparent('diabetes')">
+            <text class="q-text">糖尿病</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('heart') !== -1 }" @click="toggleGrandparent('heart')">
+            <text class="q-text">心脏病</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('stroke') !== -1 }" @click="toggleGrandparent('stroke')">
+            <text class="q-text">脑卒中</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('cancer') !== -1 }" @click="toggleGrandparent('cancer')">
+            <text class="q-text">癌症</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('autoimmune') !== -1 }" @click="toggleGrandparent('autoimmune')">
+            <text class="q-text">自身免疫病</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('none') !== -1 }" @click="toggleGrandparent('none')">
+            <text class="q-text">无明显疾病</text>
+          </view>
+        </view>
+      </view>
+
+      <!-- ===================== 第四部分:健康目标 ===================== -->
+      <view class="section-header">
+        <text class="section-icon">🎯</text>
+        <text class="section-title">健康目标</text>
+      </view>
+
+      <!-- Q12: 健康目标 -->
+      <view class="question-card">
+        <text class="q-number">12/12</text>
+        <text class="q-title">您希望通过本次健康管理改善什么?(可多选)</text>
+        <view class="q-options multi">
           <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('immunity') !== -1 }" @click="toggleGoal('immunity')">
-            <text class="q-icon">🛡️</text>
+            <text>🛡️</text>
             <text class="q-text">增强免疫力</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('digestion') !== -1 }" @click="toggleGoal('digestion')">
-            <text class="q-icon">🌿</text>
+            <text>🌿</text>
             <text class="q-text">改善消化</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('growth') !== -1 }" @click="toggleGoal('growth')">
-            <text class="q-icon">📈</text>
+            <text>📈</text>
             <text class="q-text">促进生长发育</text>
           </view>
           <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('focus') !== -1 }" @click="toggleGoal('focus')">
-            <text class="q-icon">🎯</text>
+            <text>🎯</text>
             <text class="q-text">提升专注力</text>
           </view>
+          <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('sleep') !== -1 }" @click="toggleGoal('sleep')">
+            <text>😴</text>
+            <text class="q-text">改善睡眠</text>
+          </view>
           <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('weight') !== -1 }" @click="toggleGoal('weight')">
-            <text class="q-icon">⚖️</text>
+            <text>⚖️</text>
             <text class="q-text">体重管理</text>
           </view>
+          <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('allergy') !== -1 }" @click="toggleGoal('allergy')">
+            <text>🌸</text>
+            <text class="q-text">改善过敏</text>
+          </view>
+          <view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('mood') !== -1 }" @click="toggleGoal('mood')">
+            <text>😊</text>
+            <text class="q-text">改善情绪</text>
+          </view>
         </view>
       </view>
 
@@ -181,29 +400,73 @@ export default {
       childId: null,
       surveyId: null,
       survey: {
+        // 生活习惯
         diet: '',
         digestion: '',
         sleep: '',
         exercise: '',
+        water: '',
+        medications: [],
+        // 疾病史
+        diseaseHistory: {
+          chronic: [],
+          otherDesc: ''
+        },
         allergies: [],
+        allergyDetail: '',
+        surgery: '',
+        surgeryDetail: '',
+        // 家族史
+        familyHistory: {
+          father: [],
+          mother: [],
+          sibling: []
+        },
+        grandparentHistory: [],
+        // 健康目标
         goals: []
       },
+      familyDiseaseOptions: [
+        { value: 'none', label: '无' },
+        { value: 'hypertension', label: '高血压' },
+        { value: 'diabetes', label: '糖尿病' },
+        { value: 'heart', label: '心脏病' },
+        { value: 'stroke', label: '脑卒中' },
+        { value: 'cancer', label: '癌症' },
+        { value: 'allergy', label: '过敏性疾病' },
+        { value: 'autoimmune', label: '自身免疫病' },
+        { value: 'mental', label: '精神/心理疾病' },
+        { value: 'obesity', label: '肥胖' },
+      ],
       submitting: false
     }
   },
   computed: {
     progressPercent: function() {
       var answered = 0
+      var total = 12
       if (this.survey.diet) answered++
       if (this.survey.digestion) answered++
       if (this.survey.sleep) answered++
       if (this.survey.exercise) answered++
+      if (this.survey.water) answered++
+      if (this.survey.medications.length > 0) answered++
+      if (this.survey.diseaseHistory.chronic.length > 0) answered++
       if (this.survey.allergies.length > 0) answered++
+      if (this.survey.surgery) answered++
+      // 家族史:至少填了父亲或母亲或兄弟姐妹或祖父母之一
+      if (this.survey.familyHistory.father.length > 0
+        || this.survey.familyHistory.mother.length > 0
+        || this.survey.familyHistory.sibling.length > 0) answered++
+      if (this.survey.grandparentHistory.length > 0) answered++
       if (this.survey.goals.length > 0) answered++
-      return Math.round((answered / 6) * 100)
+      return Math.round((answered / total) * 100)
     },
     canSubmit: function() {
-      return this.survey.diet && this.survey.digestion && this.survey.sleep && this.survey.exercise
+      return this.survey.diet && this.survey.sleep && this.survey.exercise
+        && this.survey.diseaseHistory.chronic.length > 0
+        && this.survey.allergies.length > 0
+        && this.survey.goals.length > 0
     }
   },
   onLoad: function(options) {
@@ -215,7 +478,6 @@ export default {
     initSurvey: function() {
       var self = this
       if (!self.reportId) return
-      // 先查状态
       getSurveyStatus(self.reportId).then(function(res) {
         if (res.code === 200 && res.data) {
           if (res.data.completed) {
@@ -227,7 +489,6 @@ export default {
             return
           }
         }
-        // 未创建,则创建
         return createReportSurvey(self.reportId, self.childId || 0)
       }).then(function(res) {
         if (res && res.code === 200 && res.data && res.data.id) {
@@ -237,12 +498,55 @@ export default {
         console.log('初始化问卷失败', e)
       })
     },
+    // === 用药多选 ===
+    hasMedication: function(val) {
+      return this.survey.medications.indexOf(val) !== -1
+    },
+    toggleMedication: function(val) {
+      var idx = this.survey.medications.indexOf(val)
+      if (val === 'none') {
+        this.survey.medications = ['none']
+      } else {
+        var noneIdx = this.survey.medications.indexOf('none')
+        if (noneIdx !== -1) this.survey.medications.splice(noneIdx, 1)
+        if (idx === -1) {
+          this.survey.medications.push(val)
+        } else {
+          this.survey.medications.splice(idx, 1)
+        }
+        if (this.survey.medications.length === 0) {
+          this.survey.medications.push('none')
+        }
+      }
+    },
+    // === 慢性病多选 ===
+    hasChronic: function(val) {
+      return this.survey.diseaseHistory.chronic.indexOf(val) !== -1
+    },
+    toggleChronic: function(val) {
+      var arr = this.survey.diseaseHistory.chronic
+      var idx = arr.indexOf(val)
+      if (val === 'none') {
+        this.survey.diseaseHistory.chronic = ['none']
+      } else {
+        var noneIdx = arr.indexOf('none')
+        if (noneIdx !== -1) arr.splice(noneIdx, 1)
+        if (idx === -1) {
+          arr.push(val)
+        } else {
+          arr.splice(idx, 1)
+        }
+        if (arr.length === 0) {
+          arr.push('none')
+        }
+      }
+    },
+    // === 过敏多选 ===
     toggleAllergy: function(val) {
       var idx = this.survey.allergies.indexOf(val)
       if (val === 'none') {
         this.survey.allergies = ['none']
       } else {
-        // 移除 none
         var noneIdx = this.survey.allergies.indexOf('none')
         if (noneIdx !== -1) this.survey.allergies.splice(noneIdx, 1)
         if (idx === -1) {
@@ -250,12 +554,52 @@ export default {
         } else {
           this.survey.allergies.splice(idx, 1)
         }
-        // 如果全删了,恢复 none
         if (this.survey.allergies.length === 0) {
           this.survey.allergies.push('none')
         }
       }
     },
+    // === 家族病史 ===
+    hasFamilyDisease: function(role, val) {
+      return this.survey.familyHistory[role].indexOf(val) !== -1
+    },
+    toggleFamilyDisease: function(role, val) {
+      var arr = this.survey.familyHistory[role]
+      var idx = arr.indexOf(val)
+      if (val === 'none') {
+        this.survey.familyHistory[role] = ['none']
+      } else {
+        var noneIdx = arr.indexOf('none')
+        if (noneIdx !== -1) arr.splice(noneIdx, 1)
+        if (idx === -1) {
+          arr.push(val)
+        } else {
+          arr.splice(idx, 1)
+        }
+        if (arr.length === 0) {
+          arr.push('none')
+        }
+      }
+    },
+    // === 祖父母病史 ===
+    toggleGrandparent: function(val) {
+      var idx = this.survey.grandparentHistory.indexOf(val)
+      if (val === 'unknown') {
+        this.survey.grandparentHistory = ['unknown']
+      } else {
+        var unkIdx = this.survey.grandparentHistory.indexOf('unknown')
+        if (unkIdx !== -1) this.survey.grandparentHistory.splice(unkIdx, 1)
+        if (idx === -1) {
+          this.survey.grandparentHistory.push(val)
+        } else {
+          this.survey.grandparentHistory.splice(idx, 1)
+        }
+        if (this.survey.grandparentHistory.length === 0) {
+          this.survey.grandparentHistory.push('unknown')
+        }
+      }
+    },
+    // === 健康目标 ===
     toggleGoal: function(val) {
       var idx = this.survey.goals.indexOf(val)
       if (idx === -1) {
@@ -273,15 +617,13 @@ export default {
       self.submitting = true
       uni.showLoading({ title: '提交中...' })
 
-      // 确保 surveyId 存在
       var doSubmit = function() {
         submitReportSurvey(self.surveyId, JSON.stringify(self.survey)).then(function(res) {
           uni.hideLoading()
           if (res.code === 200) {
             uni.showToast({ title: '提交成功', icon: 'success' })
-            // 跳转到 AI 对话页,带入报告和问卷数据
             setTimeout(function() {
-              var params = 'reportId=' + self.reportId + '&surveyId=' + self.surveyId + '&firstMessage=' + encodeURIComponent('请帮我解读孩子的健康报告')
+              var params = 'reportId=' + self.reportId + '&surveyId=' + self.surveyId + '&firstMessage=' + encodeURIComponent('请根据报告和问卷信息,提供个性化的健康建议')
               uni.redirectTo({ url: '/pages/ai/chat?' + params })
             }, 500)
           } else {
@@ -299,7 +641,6 @@ export default {
       if (this.surveyId) {
         doSubmit()
       } else {
-        // 先创建再提交
         createReportSurvey(this.reportId, this.childId || 0).then(function(res) {
           if (res.code === 200 && res.data && res.data.id) {
             self.surveyId = res.data.id
@@ -370,6 +711,21 @@ export default {
 
 .form-section { margin: 10rpx 30rpx 30rpx; }
 
+/* 分段标题 */
+.section-header {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin: 30rpx 0 16rpx;
+  padding-left: 8rpx;
+}
+.section-icon { font-size: 36rpx; margin-right: 12rpx; }
+.section-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  color: #333;
+}
+
 .question-card {
   background: #fff;
   border-radius: 20rpx;
@@ -396,6 +752,9 @@ export default {
   flex-direction: column;
   gap: 12rpx;
 }
+.q-options.multi {
+  gap: 10rpx;
+}
 .q-option {
   display: flex;
   flex-direction: row;
@@ -411,9 +770,61 @@ export default {
   border-color: #66BB6A;
 }
 .q-option:active { opacity: 0.7; }
-.q-icon { font-size: 32rpx; }
+.q-icon { font-size: 32rpx; flex-shrink: 0; }
 .q-text { font-size: 26rpx; color: #333; }
 
+/* 家族史网格 */
+.family-grid {
+  display: flex;
+  flex-direction: column;
+  gap: 20rpx;
+}
+.family-col {
+  background: #F5F7FA;
+  border-radius: 14rpx;
+  padding: 16rpx;
+}
+.family-role {
+  font-size: 26rpx;
+  font-weight: bold;
+  color: #5B9BD5;
+  display: block;
+  margin-bottom: 12rpx;
+}
+.family-options {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  gap: 8rpx;
+}
+.family-tag {
+  padding: 8rpx 16rpx;
+  border-radius: 20rpx;
+  font-size: 22rpx;
+  color: #666;
+  background: #fff;
+  border: 2rpx solid #E2E8F0;
+}
+.family-tag:active { opacity: 0.7; }
+.tag-selected {
+  background: #E3F2FD;
+  border-color: #5B9BD5;
+  color: #1565C0;
+}
+
+/* 额外文本输入 */
+.extra-input {
+  width: 100%;
+  min-height: 100rpx;
+  background: #F5F7FA;
+  border-radius: 12rpx;
+  padding: 16rpx 20rpx;
+  font-size: 24rpx;
+  color: #333;
+  margin-top: 16rpx;
+  box-sizing: border-box;
+}
+
 .submit-btn {
   background: linear-gradient(135deg, #43A047, #2E7D32);
   color: #fff;
@@ -428,4 +839,4 @@ export default {
 .btn-disabled { opacity: 0.5; }
 
 .bottom-spacer { height: 60rpx; }
-</style>
+</style>

+ 150 - 14
cfc-frontend/pages/health/report-upload.vue

@@ -89,6 +89,29 @@
         </view>
       </view>
 
+      <!-- 购买推荐 -->
+      <view class="purchase-section" v-if="recommendedProducts.length > 0">
+        <view class="purchase-header">
+          <text class="purchase-icon">📦</text>
+          <text class="purchase-title">为家人购买检测服务</text>
+        </view>
+        <scroll-view class="purchase-scroll" scroll-x enable-flex show-scrollbar="false">
+          <view
+            class="purchase-card"
+            v-for="item in recommendedProducts"
+            :key="item.id"
+            @click="goToProduct(item.id)"
+          >
+            <image class="purchase-cover" :src="item.coverImage || '/static/default-product.png'" mode="aspectFill" />
+            <text class="purchase-name">{{ item.name }}</text>
+            <text class="purchase-price">{{ formatPriceWithSymbol(item.price) }}</text>
+            <view class="purchase-btn">
+              <text class="purchase-btn-text">去购买</text>
+            </view>
+          </view>
+        </scroll-view>
+      </view>
+
       <!-- 舌诊拍照(仅 tongue 类型显示) -->
       <view class="form-item" v-if="isTongue">
         <text class="form-label">拍摄舌象</text>
@@ -186,9 +209,16 @@
 </template>
 
 <script>
-import { createHealthReport, parseReportPreview } from '../../utils/api.js'
+import { createHealthReport, parseReportPreview, productList } from '../../utils/api.js'
 import config from '@/config.js'
 
+// 报告类型 → 维度映射(用于推荐商品)
+var REPORT_DOMAIN_MAP = {
+  physical_exam: 'body',
+  gut_flora: 'body',
+  tongue: 'body'
+}
+
 export default {
   data() {
     return {
@@ -211,7 +241,10 @@ export default {
       familyMembers: [],
       // 舌诊
       photoPath: null,
-      tongueResult: null
+      tongueResult: null,
+      // 购买推荐
+      recommendedProducts: [],
+      loadingProducts: false
     }
   },
   computed: {
@@ -231,6 +264,7 @@ export default {
     if (options.reportType && ['physical_exam', 'gut_flora', 'tongue'].indexOf(options.reportType) !== -1) {
       this.form.reportType = options.reportType
     }
+    this.loadRecommendProducts(this.form.reportType)
     // 不默认填充日期 — 待解析后从报告中提取
     this.form.reportDate = ''
   },
@@ -242,6 +276,7 @@ export default {
     selectType(type) {
       if (this.form.reportType === type) return
       this.form.reportType = type
+      this.loadRecommendProducts(type)
       // 切类型时清理其他类型的状态
       if (type === 'tongue') {
         this.selectedFile = null
@@ -425,6 +460,33 @@ export default {
       this.showMemberSelector = false
       this.selectedMemberId = null
     },
+    loadRecommendProducts: function(reportType) {
+      var domain = REPORT_DOMAIN_MAP[reportType]
+      if (!domain) {
+        this.recommendedProducts = []
+        return
+      }
+      var self = this
+      self.loadingProducts = true
+      productList({ domain: domain, productType: 'assessment', size: 4 }).then(function(res) {
+        if (res && res.data && res.data.records) {
+          self.recommendedProducts = res.data.records
+        } else {
+          self.recommendedProducts = []
+        }
+      }).catch(function() {
+        self.recommendedProducts = []
+      }).finally(function() {
+        self.loadingProducts = false
+      })
+    },
+    goToProduct: function(productId) {
+      uni.navigateTo({ url: '/pages/discover/product-detail/product-detail?id=' + productId })
+    },
+    formatPriceWithSymbol: function(cents) {
+      if (cents === null || cents === undefined) return '¥0'
+      return '¥' + (cents / 100).toFixed(2)
+    },
     formatFileSize(bytes) {
       if (!bytes) return ''
       if (bytes < 1024) return bytes + 'B'
@@ -496,18 +558,20 @@ export default {
       }).then(function(res) {
         uni.hideLoading()
         if (res.code === 200) {
-          uni.showToast({ title: '提交成功', icon: 'success' })
-          var reportId = res.data && res.data.id
-          if (reportId) {
-            setTimeout(function() {
-              if (self.form.reportType === 'gut_flora') {
-                uni.redirectTo({
-                  url: '/pages/health/report-survey?reportId=' + reportId + '&childId=' + (self.childId || '')
-                })
-              } else {
-                uni.redirectTo({ url: '/pages/body/health-report?reportId=' + reportId })
-              }
-            }, 500)
+uni.showToast({ title: '提交成功', icon: 'success' })
+              var reportId = res.data && res.data.id
+              if (reportId) {
+                setTimeout(function() {
+                  // 需要调研问卷的类型走问卷页
+                  var surveyTypes = ['gut_flora', 'physical_exam', 'blood_test', 'urine_test']
+                  if (surveyTypes.indexOf(self.form.reportType) !== -1) {
+                    uni.redirectTo({
+                      url: '/pages/health/report-survey?reportId=' + reportId + '&childId=' + (self.childId || '')
+                    })
+                  } else {
+                    uni.redirectTo({ url: '/pages/body/health-report?reportId=' + reportId })
+                  }
+                }, 500)
           } else {
             setTimeout(function() {
               uni.navigateBack()
@@ -913,4 +977,76 @@ export default {
 .bottom-spacer {
   height: 60rpx;
 }
+
+/* ===== 购买推荐 ===== */
+.purchase-section {
+  background: #F0F9FF;
+  border-radius: 16rpx;
+  padding: 24rpx;
+  margin: 0 30rpx 20rpx;
+  border: 2rpx solid #BAE6FD;
+}
+.purchase-header {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-bottom: 16rpx;
+}
+.purchase-icon {
+  font-size: 28rpx;
+  margin-right: 8rpx;
+}
+.purchase-title {
+  font-size: 26rpx;
+  font-weight: bold;
+  color: #0369A1;
+}
+.purchase-scroll {
+  display: flex;
+  flex-direction: row;
+  white-space: nowrap;
+}
+.purchase-card {
+  display: inline-flex;
+  flex-direction: column;
+  width: 220rpx;
+  background: #fff;
+  border-radius: 12rpx;
+  padding: 16rpx;
+  margin-right: 16rpx;
+  flex-shrink: 0;
+}
+.purchase-cover {
+  width: 188rpx;
+  height: 120rpx;
+  border-radius: 8rpx;
+  background: #F1F5F9;
+  margin-bottom: 8rpx;
+}
+.purchase-name {
+  font-size: 22rpx;
+  color: #333;
+  line-height: 1.3;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  margin-bottom: 4rpx;
+}
+.purchase-price {
+  font-size: 24rpx;
+  color: #EF4444;
+  font-weight: bold;
+  margin-bottom: 8rpx;
+}
+.purchase-btn {
+  background: #3B82F6;
+  border-radius: 8rpx;
+  padding: 8rpx 0;
+  text-align: center;
+}
+.purchase-btn-text {
+  font-size: 22rpx;
+  color: #fff;
+  font-weight: 500;
+}
 </style>

+ 30 - 0
cfc-frontend/utils/api.js

@@ -1566,6 +1566,9 @@ export const createReportSurvey = (reportId, childId) => request('/api/health/su
 export const submitReportSurvey = (surveyId, surveyData) => request('/api/health/survey/submit', 'POST', { surveyId, surveyData })
 export const getSurveyStatus = (reportId) => request('/api/health/survey/status', 'POST', { reportId })
 
+// ===== Report Feedback (gut flora report feedback) =====
+export const submitFeedback = (data) => request('/api/health/feedback/submit', 'POST', data)
+
 // ===== 閲嶈鍏崇郴锛堣仈绯讳汉锛?=====
 export const getContactList = (data) => request('/api/contact/list', 'POST', data)
 export const getContactDetail = (id) => request('/api/contact/detail', 'POST', { id: id })
@@ -1831,4 +1834,31 @@ export const getRepurchaseReminders = (data) => {
 
 export const clickRepurchaseReminder = (id) => {
   return request('/api/recommend/repurchase-reminder/' + id + '/click', 'POST', {})
+}
+
+// ========== KB v3 知识库查询 ==========
+
+// 查询菌属功能(支持属级回退)
+export const queryBacteriaKnowledge = (name) => {
+  return request('/api/health/knowledge/v3/bacteria/query', 'POST', { name })
+}
+
+// 批量查询菌属功能
+export const batchQueryBacteriaKnowledge = (names) => {
+  return request('/api/health/knowledge/v3/bacteria/batch-query', 'POST', { names })
+}
+
+// 查询指标调整建议
+export const queryIndicatorKnowledge = (name) => {
+  return request('/api/health/knowledge/v3/indicator/query', 'POST', { name })
+}
+
+// 查询食物营养数据
+export const queryFoodKnowledge = (name) => {
+  return request('/api/health/knowledge/v3/food/query', 'POST', { name })
+}
+
+// 获取KB v3章节数据
+export const getKnowledgeSection = (section) => {
+  return request('/api/health/knowledge/v3/section', 'POST', { section: section || '' })
 }

+ 1 - 1
cfc-web/.env.production → cfc-web/.env.production.example

@@ -1,2 +1,2 @@
-VUE_APP_BASE_API=
+VUE_APP_BASE_API=/admin
 VUE_APP_SKIP_CAPTCHA=true

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-0d0b4674c74df59f814897d9e40ed9ffe691b378
+41ed561f1ea9afbd94c29248a6fd15d987dbdc69

+ 2 - 2
cfc-web/package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "cfc-web",
-  "version": "1.0.394",
+  "version": "1.0.410",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "cfc-web",
-      "version": "1.0.394",
+      "version": "1.0.410",
       "dependencies": {
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^1.0.2",

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
   "name": "cfc-web",
-  "version": "1.0.395",
+  "version": "1.0.411",
   "private": true,
   "scripts": {
     "dev": "vue-cli-service serve",

+ 233 - 40
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,82 +4,275 @@
 
 ---
 
-## v1.0.395 (2026-07-18)
+## v1.0.411 (2026-07-19)
+
+### 新功能
+- integrate KB v3 into gut-flora-risks-detail.vue
+
+### 其他
+- - Update showKnowledge() to query v3 KB first (偏高影响/偏低影响/调整建议)
+- - Fall back to old queryKnowledgeBase('disease', ...) when v3 returns nothing
+- - Follows same pattern as gut-flora-detail.vue and gut-flora-species-detail.vue
+- All 4 gut-flora report pages now use KB v3 with fallback.
+- 
+
+
+## v1.0.410 (2026-07-19)
+
+### 其他
+- - .gitignore: add .env.production
+- - git rm --cached .env.production (keep on disk)
+- Environment-specific configs should not be tracked in git.
+- 
+
+
+## v1.0.410 (2026-07-19)
 
 ### Bug 修复
-- add ProductService.getById() to resolve pre-existing compile error
+- resolve login API 405 and logo 404 on /admin/ deployment
 
 ### 其他
-- ProductService was missing this delegation method. Pre-existing bug
-- uncovered when running mvn compile for v1.1 verification.
+-   (auth.js URLs start with /api/, so baseURL=api caused axios to emit
+-    api/api/... → browser resolves to /admin/api/api/..., backend returns 405)
+- - Login.vue: <img src="/logo.png"> → src="logo.png" (relative,
+-   resolves correctly under /admin/ subpath)
+- - public/logo.png: added (copied from web/logo.png)
+- - .gitignore: add !cfc-web/public/logo.png exception
 - 
 
 
-## v1.0.394 (2026-07-18)
+## v1.0.409 (2026-07-19)
 
 ### Bug 修复
-- break circular dependency between HealthReportService and DimensionScoreServiceImpl
+- clean bacteria names (remove Chinese prefix) + add 3 missing genera
 
 ### 其他
-- to resolve Spring Boot 2.7+ circular reference rejection.
-- The cycle was:
--   HealthReportService → DimensionScoreService → DimensionScoreServiceImpl → HealthReportService
+- - Added 3 missing genera: Coprobacter, Paraprevotella, Parasutterella
+- - Verified: 50/55 genera match KB directly, 41/43 species match via genus backoff
 - 
 
 
-## v1.0.393 (2026-07-18)
+## v1.0.408 (2026-07-19)
+
+### 新功能
+- knowledge base v3 - data/template separation foundation
+
+### 其他
+- - extract_full_report_v5.py: normalize_output() - 字段统一/冗余删除/菌属名称清洗
+- - 字段拆分清单.md: personal data vs knowledge base 边界定义
+- - 设计规格: docs/superpowers/specs/2026-07-19-knowledge-base-v3-data-refactor.md
+- - 验证输出: 547982403.json, 朱评估报告.json 新格式确认
+- 
+
+
+## v1.0.407 (2026-07-19)
 
 ### Bug 修复
-- remove duplicate closing brace in CSS
-- 解决 git stash 合并冲突残留标记(body/index, gut-index, report-list)
+- update test to match new BindController signatures
 
 ### 其他
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- parameter - it's resolved internally via MembershipService.
+- Add @MockBean MembershipService and update call sites.
 - 
 
 
-## v1.0.392 (2026-07-17)
+## v1.0.406 (2026-07-19)
 
-### 测试
-- admin/health/nutrition 覆盖新增控制器
+### Bug 修复
+- resolve @RequestAttribute familyId 400 error by resolving via MembershipService
+- replace @RequestAttribute("familyId") with
 
 ### 其他
-- - 重写 admin-butler-review 用 13800138000 账号 + admin-auth/login-by-password 取 token
-- - 新增 health-knowledge-base / nutritionist-apply 覆盖 HealthKnowledgeBaseController (3 endpoints) 与 NutritionistController (2 endpoints)
-- - 附带 mass-create-users 脚本 + create-role-users.sql + 上一次批量建号结果 create-result.json 用于手动复现
+- no interceptor sets familyId as a request attribute → Spring 400 error.
+- @RequestAttribute("userId") + membershipService.getUserFamilyId(userId)
+- Affected controllers:
+- - MindFortuneController (getTodayFortune, refreshFortune, exportFortuneReport)
+- - PackagePaymentController (createOrder)
+- - MarketController (purchasePackage, getMyPlans)
+- - BindController (acceptBind, getBoundGuides, unbind)
 - 
 
+### 新功能
+- add purchase recommendation section to dan-assessment/report-upload page
+
 
-## v1.0.391 (2026-07-17)
+## v1.0.405 (2026-07-19)
+
+### Bug 修复
+- 商品图片上传两项关键修复
+
+### 新功能
+- add purchase recommendation section to report-upload page
+
+### 其他
+- - Add recommendedProducts/loadingProducts data states
+- - Implement loadRecommendProducts method with REPORT_DOMAIN_MAP
+- - Add goToProduct and formatPriceWithSymbol utility methods
+- - Insert horizontal scrollable purchase card section below type selector
+- - Add scoped styles for purchase recommendation section
+- 
+
+
+## v1.0.404 (2026-07-19)
+
+### 新功能
+- implement taxonomy level support, pathogen tabs, report interpretation, DB migration 98
+
+
+## v1.0.403 (2026-07-18)
+
+### 文档
+- add implementation plan for mini-program and Java backend modifications
+
+
+## v1.0.402 (2026-07-18)
+
+### 新功能
+- add personalized indicator interpretations (P0) and overall assessment descriptions
+
+### 其他
+- Merge remote-tracking branch 'origin/cfclub' for upstream changes
+
+### Bug 修复
+- 商品图片上传两项关键修复
+
+
+## v1.0.401 (2026-07-18)
+
+### 文档
+- add analysis of personalized descriptive content to extract from reports
+- add gap analysis between extraction results and miniprogram/backend
+
+
+## v1.0.400 (2026-07-18)
 
 ### 重构
-- 删除成长计划页面并合并推荐商品与活动为统一信息流
+- make indicator ranges computable with min/max + status levels
+
+### 新功能
+- add report indicator knowledge base with standard ranges and descriptions
+
+
+## v1.0.399 (2026-07-18)
+
+### Bug 修复
+- probiotic species-level extraction (22 items), inline format timeout
+- inline format bacteria table timeout - skip truly compressed format, 朱评估报告 now completes
+
+
+## v1.0.398 (2026-07-18)
+
+### 新功能
+- add taxonomy level extraction (class/order/family/genus/species) from unified section
+
+### Bug 修复
+- bacteria table inline parsing, pathogen tables, antibiotic dedup, harmful/other bacteria expansion
+
+
+## v1.0.397 (2026-07-18)
+
+### Bug 修复
+- comprehensive extraction fixes - Kangxi radicals, inline fallback, amino acid boundary, taxonomy levels
+
+
+## v1.0.396 (2026-07-18)
+
+### Bug 修复
+- 移除活动菜单项 + MembershipCenter 改用本地axios
+- 管理端API请求方法修复 — PUT/DELETE统一改用POST
+- 文件存储调用方适配 — upload→store、移除原始文件IO逻辑
+- 文件存储重构 — 可配置上传目录、MIME类型校验、delete方法
 
 ### 其他
--    - pages/parent/plans/index.vue, detail.vue
--    - pages/guide/plans/index.vue, detail.vue
--    - pages/guide/training-plans/index.vue, detail.vue
-- 2. pages.json 中移除对应的路由注册
-- 3. 新增 components/RecommendedFeed.vue:
--    - 将商品和活动混合为交替排列的信息流 (商品/活动/商品/活动...)
--    - 统一展示:封面图 + 类型标签 + 标题 + 价格 + 状态
--    - 点击统一跳转到对应详情页
-- 4. parent-index.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
-- 5. child-index.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
-- 6. member-detail.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- 导致生产环境 405 Method Not Allowed 错误。
+- 修复范围:
+- • 用户: updateUser/deleteUser — 方法+URL 修正
+- • 家庭: updateFamily/deleteFamily — 方法+URL 修正
+- • 孩子: updateChild/deleteChild — 方法+URL 修正
+- • 任务模板: updateTaskTemplate/deleteTaskTemplate — 方法+URL 修正
+- • 奖励模板: updateRewardTemplate/deleteRewardTemplate — 方法+URL 修正
+- • 系统配置: deleteSysConfig — 方法修正
+- • 教师任务模板: deleteTeacherTaskTemplate — 方法+URL 修正
+- • 心愿: setWishPrice/rejectWish/approveWishExchange/markWishFulfilled — 方法修正
+- • 心愿: deleteWish — 方法+URL 修正 (/api/wishes/{id}→/cancel)
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- • AssessmentReportController: upload() → store()
+- • DanReportUploadService: upload() → store()
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- • FileStorageService: 增加 delete() 方法用于删除已上传文件
+- • WebConfig: addResourceHandler 使用 upload.base-dir 替代 System.getProperty
+- • application.yml: 添加 upload.base-dir 和 upload.allowed-types 配置
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
 - 
 
 
-## v1.0.390 (2026-07-17)
+## v1.0.395 (2026-07-18)
+
+### Bug 修复
+- comprehensive bacteria table & indicator extraction fixes
+
+### 其他
+- - Fix regex patterns for abundance, normal range, population level
+- - Add inline fallback for missing disease risks, amino acids, barrier/scfa/nt
+- - Fix overview extraction for gut age, health score details
+- 
+
+
+## v1.0.394 (2026-07-18)
+
+### 新功能
+- 活动商品统一管理后续三项任务完成
+
+
+## v1.0.393 (2026-07-18)
+
+### Bug 修复
+- 非管理员登录避免死循环 — teacher 直接进 /teacher-dashboard
+
+### 新功能
+- B5指南针仪表盘图像提取 — 19个子维度分数
+
+### 其他
+- - DanReportParseService.parseB5Report(): 新增compassImage参数 + 第7步图像分析
+- - 新增常量: B5_QUAD_ANGLES/FACTORS/SUB_DIMS + B5_CENTER坐标
+- - 新增方法: extractB5CompassImage(PDDocument) — PDFBox提取PNG→BufferedImage
+- - 新增方法: measureFillAtAngle() — 沿角度射线逐像素扫描填充半径
+- - 新增方法: extractB5CompassScores() — 动态校准因子 + 19子维度分数映射
+- - parseText(): 新增两参数重载(public) + 三参数版本(private)
+- - 图像提取失败不影响文本数据(log.warn静默降级)
+- 算法: 从r=150扫描跳过中心色块, 25px间隙容忍跨越环线,
+-       每象限角度范围等分→子维度射线±2°偏移→平均fill×校准因子→1-5分
+- 测试: 37 tests run, 0 failures
+- 
+
+
+## v1.0.392 (2026-07-18)
+
+### 新功能
+- expand health survey with disease/family history, add physical exam detail page
+
+
+## v1.0.391 (2026-07-18)
+
+### 新功能
+- 健康知识库管理后台 CRUD
+
+### 其他
+- - HealthKnowledgeBaseService: listAll/save/updateById/removeById
+- - HealthKnowledgeBaseController: /list /add /update /delete
+- - cfc-web/views/admin/health-knowledge.vue: 列表+筛选+新增/编辑/删除/导入
+- - router: 注册 /health-knowledge,Layout 侧边栏 知识中心 下新增菜单
+- 
 
 ### Bug 修复
-- user delete soft-delete + ActivityProvision entity + DAN execution service
+- AdminArticleController.create 修复ArrayList强转String — visibility/visibleTo/articleType字段可能为JSON数组
 
 
 ## v1.0.389 (2026-07-17)

+ 234 - 41
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 
-> 当前版本: v1.0.395
+> 当前版本: v1.0.411
 
 ## 历史版本
 
@@ -8,82 +8,275 @@
 
 ---
 
-## v1.0.395 (2026-07-18)
+## v1.0.411 (2026-07-19)
+
+### 新功能
+- integrate KB v3 into gut-flora-risks-detail.vue
+
+### 其他
+- - Update showKnowledge() to query v3 KB first (偏高影响/偏低影响/调整建议)
+- - Fall back to old queryKnowledgeBase('disease', ...) when v3 returns nothing
+- - Follows same pattern as gut-flora-detail.vue and gut-flora-species-detail.vue
+- All 4 gut-flora report pages now use KB v3 with fallback.
+- 
+
+
+## v1.0.410 (2026-07-19)
+
+### 其他
+- - .gitignore: add .env.production
+- - git rm --cached .env.production (keep on disk)
+- Environment-specific configs should not be tracked in git.
+- 
+
+
+## v1.0.410 (2026-07-19)
 
 ### Bug 修复
-- add ProductService.getById() to resolve pre-existing compile error
+- resolve login API 405 and logo 404 on /admin/ deployment
 
 ### 其他
-- ProductService was missing this delegation method. Pre-existing bug
-- uncovered when running mvn compile for v1.1 verification.
+-   (auth.js URLs start with /api/, so baseURL=api caused axios to emit
+-    api/api/... → browser resolves to /admin/api/api/..., backend returns 405)
+- - Login.vue: <img src="/logo.png"> → src="logo.png" (relative,
+-   resolves correctly under /admin/ subpath)
+- - public/logo.png: added (copied from web/logo.png)
+- - .gitignore: add !cfc-web/public/logo.png exception
 - 
 
 
-## v1.0.394 (2026-07-18)
+## v1.0.409 (2026-07-19)
 
 ### Bug 修复
-- break circular dependency between HealthReportService and DimensionScoreServiceImpl
+- clean bacteria names (remove Chinese prefix) + add 3 missing genera
 
 ### 其他
-- to resolve Spring Boot 2.7+ circular reference rejection.
-- The cycle was:
--   HealthReportService → DimensionScoreService → DimensionScoreServiceImpl → HealthReportService
+- - Added 3 missing genera: Coprobacter, Paraprevotella, Parasutterella
+- - Verified: 50/55 genera match KB directly, 41/43 species match via genus backoff
 - 
 
 
-## v1.0.393 (2026-07-18)
+## v1.0.408 (2026-07-19)
+
+### 新功能
+- knowledge base v3 - data/template separation foundation
+
+### 其他
+- - extract_full_report_v5.py: normalize_output() - 字段统一/冗余删除/菌属名称清洗
+- - 字段拆分清单.md: personal data vs knowledge base 边界定义
+- - 设计规格: docs/superpowers/specs/2026-07-19-knowledge-base-v3-data-refactor.md
+- - 验证输出: 547982403.json, 朱评估报告.json 新格式确认
+- 
+
+
+## v1.0.407 (2026-07-19)
 
 ### Bug 修复
-- remove duplicate closing brace in CSS
-- 解决 git stash 合并冲突残留标记(body/index, gut-index, report-list)
+- update test to match new BindController signatures
 
 ### 其他
-- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- parameter - it's resolved internally via MembershipService.
+- Add @MockBean MembershipService and update call sites.
 - 
 
 
-## v1.0.392 (2026-07-17)
+## v1.0.406 (2026-07-19)
 
-### 测试
-- admin/health/nutrition 覆盖新增控制器
+### Bug 修复
+- resolve @RequestAttribute familyId 400 error by resolving via MembershipService
+- replace @RequestAttribute("familyId") with
 
 ### 其他
-- - 重写 admin-butler-review 用 13800138000 账号 + admin-auth/login-by-password 取 token
-- - 新增 health-knowledge-base / nutritionist-apply 覆盖 HealthKnowledgeBaseController (3 endpoints) 与 NutritionistController (2 endpoints)
-- - 附带 mass-create-users 脚本 + create-role-users.sql + 上一次批量建号结果 create-result.json 用于手动复现
+- no interceptor sets familyId as a request attribute → Spring 400 error.
+- @RequestAttribute("userId") + membershipService.getUserFamilyId(userId)
+- Affected controllers:
+- - MindFortuneController (getTodayFortune, refreshFortune, exportFortuneReport)
+- - PackagePaymentController (createOrder)
+- - MarketController (purchasePackage, getMyPlans)
+- - BindController (acceptBind, getBoundGuides, unbind)
 - 
 
+### 新功能
+- add purchase recommendation section to dan-assessment/report-upload page
+
 
-## v1.0.391 (2026-07-17)
+## v1.0.405 (2026-07-19)
+
+### Bug 修复
+- 商品图片上传两项关键修复
+
+### 新功能
+- add purchase recommendation section to report-upload page
+
+### 其他
+- - Add recommendedProducts/loadingProducts data states
+- - Implement loadRecommendProducts method with REPORT_DOMAIN_MAP
+- - Add goToProduct and formatPriceWithSymbol utility methods
+- - Insert horizontal scrollable purchase card section below type selector
+- - Add scoped styles for purchase recommendation section
+- 
+
+
+## v1.0.404 (2026-07-19)
+
+### 新功能
+- implement taxonomy level support, pathogen tabs, report interpretation, DB migration 98
+
+
+## v1.0.403 (2026-07-18)
+
+### 文档
+- add implementation plan for mini-program and Java backend modifications
+
+
+## v1.0.402 (2026-07-18)
+
+### 新功能
+- add personalized indicator interpretations (P0) and overall assessment descriptions
+
+### 其他
+- Merge remote-tracking branch 'origin/cfclub' for upstream changes
+
+### Bug 修复
+- 商品图片上传两项关键修复
+
+
+## v1.0.401 (2026-07-18)
+
+### 文档
+- add analysis of personalized descriptive content to extract from reports
+- add gap analysis between extraction results and miniprogram/backend
+
+
+## v1.0.400 (2026-07-18)
 
 ### 重构
-- 删除成长计划页面并合并推荐商品与活动为统一信息流
+- make indicator ranges computable with min/max + status levels
+
+### 新功能
+- add report indicator knowledge base with standard ranges and descriptions
+
+
+## v1.0.399 (2026-07-18)
+
+### Bug 修复
+- probiotic species-level extraction (22 items), inline format timeout
+- inline format bacteria table timeout - skip truly compressed format, 朱评估报告 now completes
+
+
+## v1.0.398 (2026-07-18)
+
+### 新功能
+- add taxonomy level extraction (class/order/family/genus/species) from unified section
+
+### Bug 修复
+- bacteria table inline parsing, pathogen tables, antibiotic dedup, harmful/other bacteria expansion
+
+
+## v1.0.397 (2026-07-18)
+
+### Bug 修复
+- comprehensive extraction fixes - Kangxi radicals, inline fallback, amino acid boundary, taxonomy levels
+
+
+## v1.0.396 (2026-07-18)
+
+### Bug 修复
+- 移除活动菜单项 + MembershipCenter 改用本地axios
+- 管理端API请求方法修复 — PUT/DELETE统一改用POST
+- 文件存储调用方适配 — upload→store、移除原始文件IO逻辑
+- 文件存储重构 — 可配置上传目录、MIME类型校验、delete方法
 
 ### 其他
--    - pages/parent/plans/index.vue, detail.vue
--    - pages/guide/plans/index.vue, detail.vue
--    - pages/guide/training-plans/index.vue, detail.vue
-- 2. pages.json 中移除对应的路由注册
-- 3. 新增 components/RecommendedFeed.vue:
--    - 将商品和活动混合为交替排列的信息流 (商品/活动/商品/活动...)
--    - 统一展示:封面图 + 类型标签 + 标题 + 价格 + 状态
--    - 点击统一跳转到对应详情页
-- 4. parent-index.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
-- 5. child-index.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
-- 6. member-detail.vue:
--    - 替换 DimensionActivities + DimensionProducts 为 RecommendedFeed
--    - 新增 onFeedItemClick 和 goMoreDiscover 方法
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- 导致生产环境 405 Method Not Allowed 错误。
+- 修复范围:
+- • 用户: updateUser/deleteUser — 方法+URL 修正
+- • 家庭: updateFamily/deleteFamily — 方法+URL 修正
+- • 孩子: updateChild/deleteChild — 方法+URL 修正
+- • 任务模板: updateTaskTemplate/deleteTaskTemplate — 方法+URL 修正
+- • 奖励模板: updateRewardTemplate/deleteRewardTemplate — 方法+URL 修正
+- • 系统配置: deleteSysConfig — 方法修正
+- • 教师任务模板: deleteTeacherTaskTemplate — 方法+URL 修正
+- • 心愿: setWishPrice/rejectWish/approveWishExchange/markWishFulfilled — 方法修正
+- • 心愿: deleteWish — 方法+URL 修正 (/api/wishes/{id}→/cancel)
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- • AssessmentReportController: upload() → store()
+- • DanReportUploadService: upload() → store()
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+- • FileStorageService: 增加 delete() 方法用于删除已上传文件
+- • WebConfig: addResourceHandler 使用 upload.base-dir 替代 System.getProperty
+- • application.yml: 添加 upload.base-dir 和 upload.allowed-types 配置
+- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
 - 
 
 
-## v1.0.390 (2026-07-17)
+## v1.0.395 (2026-07-18)
+
+### Bug 修复
+- comprehensive bacteria table & indicator extraction fixes
+
+### 其他
+- - Fix regex patterns for abundance, normal range, population level
+- - Add inline fallback for missing disease risks, amino acids, barrier/scfa/nt
+- - Fix overview extraction for gut age, health score details
+- 
+
+
+## v1.0.394 (2026-07-18)
+
+### 新功能
+- 活动商品统一管理后续三项任务完成
+
+
+## v1.0.393 (2026-07-18)
+
+### Bug 修复
+- 非管理员登录避免死循环 — teacher 直接进 /teacher-dashboard
+
+### 新功能
+- B5指南针仪表盘图像提取 — 19个子维度分数
+
+### 其他
+- - DanReportParseService.parseB5Report(): 新增compassImage参数 + 第7步图像分析
+- - 新增常量: B5_QUAD_ANGLES/FACTORS/SUB_DIMS + B5_CENTER坐标
+- - 新增方法: extractB5CompassImage(PDDocument) — PDFBox提取PNG→BufferedImage
+- - 新增方法: measureFillAtAngle() — 沿角度射线逐像素扫描填充半径
+- - 新增方法: extractB5CompassScores() — 动态校准因子 + 19子维度分数映射
+- - parseText(): 新增两参数重载(public) + 三参数版本(private)
+- - 图像提取失败不影响文本数据(log.warn静默降级)
+- 算法: 从r=150扫描跳过中心色块, 25px间隙容忍跨越环线,
+-       每象限角度范围等分→子维度射线±2°偏移→平均fill×校准因子→1-5分
+- 测试: 37 tests run, 0 failures
+- 
+
+
+## v1.0.392 (2026-07-18)
+
+### 新功能
+- expand health survey with disease/family history, add physical exam detail page
+
+
+## v1.0.391 (2026-07-18)
+
+### 新功能
+- 健康知识库管理后台 CRUD
+
+### 其他
+- - HealthKnowledgeBaseService: listAll/save/updateById/removeById
+- - HealthKnowledgeBaseController: /list /add /update /delete
+- - cfc-web/views/admin/health-knowledge.vue: 列表+筛选+新增/编辑/删除/导入
+- - router: 注册 /health-knowledge,Layout 侧边栏 知识中心 下新增菜单
+- 
 
 ### Bug 修复
-- user delete soft-delete + ActivityProvision entity + DAN execution service
+- AdminArticleController.create 修复ArrayList强转String — visibility/visibleTo/articleType字段可能为JSON数组
 
 
 ## v1.0.389 (2026-07-17)

BIN
cfc-web/public/logo.png


+ 29 - 29
cfc-web/src/api/admin.js

@@ -18,16 +18,16 @@ export function getUserDetail(id) {
 
 export function updateUser(id, data) {
   return request({
-    url: `/api/admin/users/${id}`,
-    method: 'put',
+    url: `/api/admin/users/${id}/update`,
+    method: 'post',
     data
   })
 }
 
 export function deleteUser(id) {
   return request({
-    url: `/api/admin/users/${id}`,
-    method: 'delete'
+    url: `/api/admin/users/${id}/delete`,
+    method: 'post'
   })
 }
 
@@ -57,16 +57,16 @@ export function getFamilyDetail(id) {
 
 export function updateFamily(id, data) {
   return request({
-    url: `/api/admin/families/${id}`,
-    method: 'put',
+    url: `/api/admin/families/${id}/update`,
+    method: 'post',
     data
   })
 }
 
 export function deleteFamily(id) {
   return request({
-    url: `/api/admin/families/${id}`,
-    method: 'delete'
+    url: `/api/admin/families/${id}/delete`,
+    method: 'post'
   })
 }
 
@@ -96,16 +96,16 @@ export function createTaskTemplate(data) {
 
 export function updateTaskTemplate(id, data) {
   return request({
-    url: `/api/admin/task-templates/${id}`,
-    method: 'put',
+    url: `/api/admin/task-templates/${id}/update`,
+    method: 'post',
     data
   })
 }
 
 export function deleteTaskTemplate(id) {
   return request({
-    url: `/api/admin/task-templates/${id}`,
-    method: 'delete'
+    url: `/api/admin/task-templates/${id}/delete`,
+    method: 'post'
   })
 }
 
@@ -127,16 +127,16 @@ export function getChildDetail(id) {
 
 export function updateChild(id, data) {
   return request({
-    url: `/api/admin/children/${id}`,
-    method: 'put',
+    url: `/api/admin/children/${id}/update`,
+    method: 'post',
     data
   })
 }
 
 export function deleteChild(id) {
   return request({
-    url: `/api/admin/children/${id}`,
-    method: 'delete'
+    url: `/api/admin/children/${id}/delete`,
+    method: 'post'
   })
 }
 
@@ -190,15 +190,15 @@ export function createRewardTemplate(data) {
 
 export function deleteRewardTemplate(id) {
   return request({
-    url: `/api/admin/rewards/templates/${id}`,
-    method: 'delete'
+    url: `/api/admin/rewards/templates/${id}/delete`,
+    method: 'post'
   })
 }
 
 export function updateRewardTemplate(id, data) {
   return request({
-    url: `/api/admin/rewards/templates/${id}`,
-    method: 'put',
+    url: `/api/admin/rewards/templates/${id}/update`,
+    method: 'post',
     data
   })
 }
@@ -259,7 +259,7 @@ export function getWishDetail(id) {
 export function setWishPrice(id, pointsRequired) {
   return request({
     url: `/api/wishes/${id}/set-price`,
-    method: 'put',
+    method: 'post',
     data: { pointsRequired }
   })
 }
@@ -268,7 +268,7 @@ export function setWishPrice(id, pointsRequired) {
 export function rejectWish(id, reason) {
   return request({
     url: `/api/wishes/${id}/reject`,
-    method: 'put',
+    method: 'post',
     data: { reason }
   })
 }
@@ -277,7 +277,7 @@ export function rejectWish(id, reason) {
 export function approveWishExchange(id, approved, reason) {
   return request({
     url: `/api/wishes/${id}/approve-exchange`,
-    method: 'put',
+    method: 'post',
     data: { approved, reason }
   })
 }
@@ -286,15 +286,15 @@ export function approveWishExchange(id, approved, reason) {
 export function markWishFulfilled(id) {
   return request({
     url: `/api/wishes/${id}/fulfill`,
-    method: 'put'
+    method: 'post'
   })
 }
 
 // 取消心愿
 export function deleteWish(id, reason) {
   return request({
-    url: `/api/wishes/${id}`,
-    method: 'delete',
+    url: `/api/wishes/${id}/cancel`,
+    method: 'post',
     data: { reason }
   })
 }
@@ -329,8 +329,8 @@ export function createTeacherTaskTemplate(data) {
 // 成长规划师删除任务模板
 export function deleteTeacherTaskTemplate(id) {
   return request({
-    url: `/api/admin/teacher/task-templates/${id}`,
-    method: 'delete'
+    url: `/api/admin/teacher/task-templates/${id}/delete`,
+    method: 'post'
   })
 }
 
@@ -714,7 +714,7 @@ export function updateSysConfig(id, data) {
 export function deleteSysConfig(id) {
   return request({
     url: `/api/admin/config/delete/${id}`,
-    method: 'delete'
+    method: 'post'
   })
 }
 

+ 6 - 0
cfc-web/src/router/index.js

@@ -520,6 +520,12 @@ const routes = [
         component: () => import('@/views/admin/knowledge'),
         meta: { title: '知识库管理', perm: 'system:config' }
       },
+      {
+        path: 'health-knowledge',
+        name: 'HealthKnowledge',
+        component: () => import('@/views/admin/health-knowledge'),
+        meta: { title: '健康知识库管理', perm: 'system:config' }
+      },
       // ========== 健康维度配置 ==========
       {
         path: 'health-norm-config',

+ 9 - 3
cfc-web/src/views/Layout.vue

@@ -203,11 +203,17 @@ export default {
             { path: '/article-manage', label: '知识管理', icon: 'el-icon-document', perm: 'articles:manage' },
             { path: '/knowledge-tags', label: '知识标签', icon: 'el-icon-price-tag', perm: 'articles:categories' },
             { path: '/knowledge-base', label: '知识库', icon: 'el-icon-reading', perm: 'system:config' },
-            { path: '/activities', label: '活动列表', icon: 'el-icon-date', perm: 'activity:list' },
-            { path: '/activity-review', label: '活动审核', icon: 'el-icon-document-checked', perm: 'activity:review' },
-            { path: '/activity-registration-review', label: '活动报名审核', icon: 'el-icon-document-checked', perm: 'activity:review' },
+            { path: '/health-knowledge', label: '健康知识库', icon: 'el-icon-first-aid-kit', perm: 'system:config' },
+        
           ]},
 
+      // ===== 6.5 活动管理(独立模块) =====
+      { title: '活动管理', icon: 'el-icon-date', perm: 'activity:*', children: [
+        { path: '/activities', label: '活动列表', icon: 'el-icon-date', perm: 'activity:list' },
+        { path: '/activity-review', label: '活动审核', icon: 'el-icon-document-checked', perm: 'activity:review' },
+        { path: '/activity-registration-review', label: '活动报名审核', icon: 'el-icon-document-checked', perm: 'activity:review' },
+      ]},
+
         // ===== 7. 健康饮食 (admin + nutritionist) =====
         { title: '健康饮食', icon: 'el-icon-first-aid-kit', perm: 'health',
           children: [

+ 4 - 3
cfc-web/src/views/Login.vue

@@ -6,7 +6,7 @@
 
         <!-- ===== Logo + 品牌标识 ===== -->
         <div class="brand-header">
-          <img src="/logo.png" alt="浠艾福" class="logo-img" />
+          <img src="logo.png" alt="浠艾福" class="logo-img" />
           <div class="brand-titles">
             <span class="brand-cn">亿图腾<span class="brand-dot">·</span>浠艾福</span>
             <span class="brand-en">Care Family</span>
@@ -274,8 +274,9 @@ export default {
           } else {
             console.log('登录成功')
           }
-          await this.$nextTick()
-          this.$router.replace({ path: '/' })
+        await this.$nextTick()
+        const redirectRole = role === 'teacher' ? '/teacher-dashboard' : '/'
+        this.$router.replace({ path: redirectRole })
         } catch (e) {
           const msg = e && e.message ? e.message : '登录失败,请检查账号密码'
           if (this.$message) {

+ 8 - 5
cfc-web/src/views/admin/MembershipCenter.vue

@@ -150,8 +150,6 @@
 </template>
 
 <script>
-import { getMembershipStats } from '@/api/admin'
-
 export default {
   name: 'MembershipCenter',
   data() {
@@ -220,9 +218,14 @@ export default {
         return []
       }
     },
+    async _request(url, data) {
+      const axios = this.$axios || (await import('axios')).default
+      const baseURL = process.env.VUE_APP_BASE_API || ''
+      return axios.post(baseURL + url, data)
+    },
     async loadOverview() {
       try {
-        const res = await this.$axios.post('/api/admin/membership/overview')
+        const res = await this._request('/api/admin/membership/overview')
         if (res.data && res.data.code === 200) {
           Object.assign(this.overview, res.data.data)
         }
@@ -233,7 +236,7 @@ export default {
     async loadLevels() {
       this.levelsLoading = true
       try {
-        const res = await this.$axios.post('/api/admin/membership/levels')
+        const res = await this._request('/api/admin/membership/levels')
         if (res.data && res.data.code === 200) {
           this.levels = res.data.data || []
         }
@@ -246,7 +249,7 @@ export default {
     async loadUpgradeRecords() {
       this.recordsLoading = true
       try {
-        const res = await this.$axios.post('/api/admin/membership/upgrade-records', {
+        const res = await this._request('/api/admin/membership/upgrade-records', {
           page: this.recordFilter.page,
           size: this.recordFilter.size
         })

+ 11 - 10
cfc-web/src/views/admin/ProductEdit.vue

@@ -87,13 +87,14 @@
               <img :src="img" class="image-preview" />
               <span class="image-remove" @click="removeImage(idx)">×</span>
             </div>
-            <el-upload
-              :action="uploadActionUrl"
-              :headers="uploadHeaders"
-              :show-file-list="false"
-              :on-success="handleImageSuccess"
-              :before-upload="beforeUpload"
-              accept="image/*"
+        <el-upload
+          :action="uploadActionUrl"
+          :headers="uploadHeaders"
+          :show-file-list="false"
+          :on-success="handleImageSuccess"
+          :before-upload="beforeUpload"
+          accept="image/*"
+          multiple
             >
               <i class="el-icon-plus image-add-icon"></i>
             </el-upload>
@@ -280,9 +281,9 @@ export default {
       const roles = rolesStr ? JSON.parse(rolesStr) : []
       return roles.includes('supplier_admin')
     },
-    uploadActionUrl() {
-      const baseURL = process.env.VUE_APP_BASE_API || 'http://localhost:9082'
-      return baseURL + '/api/admin/articles/upload/image'
+  uploadActionUrl() {
+    const baseURL = process.env.VUE_APP_BASE_API || ''
+    return baseURL + '/api/admin/articles/upload/image'
     },
     uploadHeaders() {
       const token = localStorage.getItem('token')

+ 2 - 2
cfc-web/src/views/admin/components/ProductSkuEditor.vue

@@ -125,8 +125,8 @@ export default {
       return this.editingId ? '编辑SKU' : '添加SKU'
     },
     uploadActionUrl() {
-      const baseURL = process.env.VUE_APP_BASE_API || 'http://localhost:9082'
-      return baseURL + '/api/admin/articles/upload/image'
+const baseURL = process.env.VUE_APP_BASE_API || ''
+    return baseURL + '/api/admin/articles/upload/image'
     },
     uploadHeaders() {
       const token = localStorage.getItem('token')

+ 148 - 0
cfc-web/src/views/admin/health-knowledge.vue

@@ -0,0 +1,148 @@
+<template>
+  <div class="knowledge-page">
+    <el-card>
+      <div slot="header" class="clearfix">
+        <span>健康知识库管理</span>
+        <div style="float:right; display:flex; gap:10px;">
+          <el-button type="warning" size="small" @click="importData">导入参考数据</el-button>
+          <el-button type="primary" size="small" @click="showAddDialog">新增条目</el-button>
+        </div>
+      </div>
+
+      <!-- 搜索 -->
+      <el-form :model="filters" inline size="small" style="margin-bottom:16px;">
+        <el-form-item label="名称">
+          <el-input v-model="filters.name" placeholder="搜索指标名称" clearable @input="fetchList" />
+        </el-form-item>
+        <el-form-item label="分类">
+          <el-select v-model="filters.category" placeholder="全部分类" clearable @change="fetchList" style="width:160px;">
+            <el-option v-for="c in categories" :key="c" :label="c" :value="c" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+
+      <el-table :data="list" border stripe v-loading="loading" empty-text="暂无数据" style="width:100%">
+        <el-table-column prop="id" label="ID" width="60" />
+        <el-table-column prop="itemName" label="指标名称" min-width="140" />
+        <el-table-column prop="category" label="分类" width="140" />
+        <el-table-column prop="normalRange" label="正常范围" width="140" />
+        <el-table-column prop="description" label="说明" min-width="260" show-overflow-tooltip />
+        <el-table-column prop="source" label="来源" width="120" show-overflow-tooltip />
+        <el-table-column label="操作" width="130" fixed="right">
+          <template slot-scope="{ row }">
+            <el-button type="text" @click="editRow(row)">编辑</el-button>
+            <el-button type="text" style="color:#f56c6c" @click="deleteRow(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-card>
+
+    <el-dialog :visible.sync="dialog.visible" :title="dialog.isEdit ? '编辑知识库条目' : '新增知识库条目'" width="560px" :close-on-click-modal="false">
+      <el-form :model="dialog.form" label-width="100px" size="small">
+        <el-form-item label="指标名称" required>
+          <el-input v-model="dialog.form.itemName" placeholder="如:维生素D" />
+        </el-form-item>
+        <el-form-item label="分类" required>
+          <el-select v-model="dialog.form.category" placeholder="请选择分类" style="width:100%">
+            <el-option v-for="c in categories" :key="c" :label="c" :value="c" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="正常范围">
+          <el-input v-model="dialog.form.normalRange" placeholder="如:30-100 ng/mL" />
+        </el-form-item>
+        <el-form-item label="说明">
+          <el-input type="textarea" :rows="4" v-model="dialog.form.description" placeholder="指标说明..." />
+        </el-form-item>
+        <el-form-item label="来源">
+          <el-input v-model="dialog.form.source" placeholder="数据来源" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialog.visible = false" size="small">取消</el-button>
+        <el-button type="primary" @click="saveDialog" size="small" :loading="dialog.saving">保存</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      loading: false,
+      list: [],
+      filters: { name: '', category: '' },
+      categories: ['维生素', '氨基酸', '微量元素', '短链脂肪酸', '神经递质与激素', '肠道屏障与代谢物', '抗生素风险评估'],
+      dialog: { visible: false, isEdit: false, saving: false, form: {} }
+    }
+  },
+  mounted() { this.fetchList() },
+  methods: {
+    fetchList() {
+      this.loading = true
+      var params = {}
+      if (this.filters.name) params.name = this.filters.name
+      if (this.filters.category) params.category = this.filters.category
+      this.$axios.post('/api/health/knowledge/list', params).then(res => {
+        var data = res.data || {}
+        if (data.code === 200) {
+          var rows = data.data || []
+          if (this.filters.name) {
+            rows = rows.filter(function(r) { return r.itemName && r.itemName.indexOf(this.filters.name) >= 0 }.bind(this))
+          }
+          if (this.filters.category) {
+            rows = rows.filter(function(r) { return r.category === this.filters.category }.bind(this))
+          }
+          this.list = rows
+        }
+      }).finally(() => { this.loading = false })
+    },
+    showAddDialog() {
+      this.dialog = { visible: true, isEdit: false, saving: false, form: { itemName: '', category: '', normalRange: '', description: '', source: '' } }
+    },
+    editRow(row) {
+      this.dialog = { visible: true, isEdit: true, saving: false, form: { id: row.id, itemName: row.itemName, category: row.category, normalRange: row.normalRange, description: row.description, source: row.source } }
+    },
+    saveDialog() {
+      if (!this.dialog.form.itemName || !this.dialog.form.category) {
+        this.$message.warning('指标名称和分类不能为空'); return
+      }
+      this.dialog.saving = true
+      var url = this.dialog.isEdit ? '/api/health/knowledge/update' : '/api/health/knowledge/add'
+      this.$axios.post(url, this.dialog.form).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success('已保存')
+          this.dialog.visible = false
+          this.fetchList()
+        } else {
+          this.$message.error(res.data.message || '保存失败')
+        }
+      }).finally(() => { this.dialog.saving = false })
+    },
+    deleteRow(row) {
+      this.$confirm('确认删除"' + row.itemName + '"?', '提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(function() {
+        this.$axios.post('/api/health/knowledge/delete', { id: row.id }).then(function(res) {
+          if (res.data.code === 200) {
+            this.$message.success('已删除')
+            this.fetchList()
+          }
+        }.bind(this))
+      }.bind(this)).catch(function() {})
+    },
+    importData() {
+      this.$confirm('将从参考JSON导入知识库数据,是否继续?', '提示', { confirmButtonText: '导入', cancelButtonText: '取消' }).then(function() {
+        this.$axios.post('/api/health/knowledge/import', {}).then(function(res) {
+          if (res.data.code === 200) {
+            this.$message.success(res.data.data || '导入完成')
+            this.fetchList()
+          }
+        }.bind(this))
+      }.bind(this)).catch(function() {})
+    }
+  }
+}
+</script>
+
+<style scoped>
+.knowledge-page { padding: 20px; }
+</style>

+ 178 - 0
docs/superpowers/specs/2026-07-19-knowledge-base-v3-data-refactor.md

@@ -0,0 +1,178 @@
+# 知识库 v3.0 + 数据提取重构 设计方案
+
+> 目标:数据与模板分离,个人JSON只存纯数据,知识库存标准内容和解释
+
+---
+
+## 一、知识库结构变更
+
+### 1.1 现有章节扩展:指标调整建议
+
+在现有的每个指标的 `说明` 字段旁,新增两个字段:
+
+```json
+{
+  "名称": "碳水化合物",
+  "说明": "主要能量来源",
+  "偏高影响": "碳水化合物偏高可能提示…",
+  "偏低影响": "碳水化合物偏低可能导致能量不足…",
+  "调整建议": "建议增加全谷物和杂豆摄入…"
+}
+```
+
+涉及章节:疾病风险评估(20) + 主要营养评估(5) + 氨基酸评估(15) + 维生素评估(10) + 微量元素评估(2) + 抗生素风险评估(9) + 肠道屏障及代谢物(11) + 短链脂肪酸(4) + 神经递质及激素(11) = **~87 项指标**
+
+### 1.2 新增章节:菌属功能库
+
+```json
+{
+  "菌属功能库": {
+    "说明": "所有菌属的功能说明、高低影响、调整方向",
+    "菌属": [
+      {
+        "学名": "Clostridium",
+        "中文名": "梭菌属",
+        "分组": "核心菌属",
+        "功能说明": "产丁酸,参与胆汁酸代谢",
+        "偏高影响": "多导致人体炎症,致病,导致菌群失衡;肥胖人群丰度较高",
+        "偏低影响": "",
+        "调整方向": ""
+      }
+    ]
+  }
+}
+```
+
+- `学名` 为主键(个人JSON用学名匹配)
+- `中文名` 用于展示
+- `分组` 对应:核心菌属 / 益生菌 / 有害菌属 / 其它重要菌属 / 病原菌属
+- `功能说明` / `偏高影响` / `偏低影响` / `调整方向`
+
+数据来源:从 501999942-某人.json 和 530010234-侯.json 等 5 份报告的菌属 `说明` 字段提取 + 领域知识补齐乱码。
+
+### 1.3 新增章节:食物库
+
+```json
+{
+  "食物库": {
+    "说明": "224种食物的基础营养数据",
+    "数据": [
+      {
+        "名称": "大麦",
+        "分类": "主食",
+        "能量KJ": "1481",
+        "蛋白g": "12",
+        "脂肪g": "2",
+        "碳水化合物g": "73",
+        "总膳食纤维g": "17"
+      }
+    ]
+  }
+}
+```
+
+直接从现有 personal JSON 的 `个体化食物推荐表.数据` 搬运。注意:个人JSON中的 `推荐指数` 是个人计算结果,不进知识库。
+
+---
+
+## 二、个人JSON输出结构变更(提取脚本重构)
+
+### 2.1 删除的字段
+
+| 字段 | 原因 |
+|------|------|
+| `正常范围`(各项指标中的字符串) | 知识库有结构化 min/max |
+| `解读`(大部分为空) | 改为知识库模板动态拼接 |
+| 菌属的 `说明` | 移入知识库 `菌属功能库` |
+
+### 2.2 统一的字段命名
+
+| 当前混乱的命名 | 统一为 |
+|---------------|--------|
+| `数值` / `评估值` / `丰度` / `丰度%` | `数值` |
+| `状态` / `健康状况` | `状态`(保留,方便前端) |
+| `致病菌`(主要消化道致病菌) | `名称` |
+| `名称: "梭菌属 Clostridium"` | `名称: "Clostridium"`(提取学名部分) |
+
+### 2.3 保留的输出结构示例
+
+```json
+{
+  "报告概述": {
+    "姓名": "某人", "年龄": "53岁", "性别": "男",
+    "肠道预测年龄": "55.52岁", "肠型": "普雷沃氏菌型",
+    "健康总分": 57, "菌群健康": 76, ...
+  },
+  "疾病风险评估": [
+    {"名称": "炎症性肠炎", "数值": 0.24, "状态": "低风险"},
+    ...
+  ],
+  "菌群检出详细列表": {
+    "核心菌属": [
+      {"名称": "Clostridium", "数值": 0.2787}
+    ],
+    "菌纲构成": [
+      {"名称": "Bacteroidia", "数值": 76.721}
+    ]
+  },
+  "个体化食物推荐表": [
+    {"名称": "大麦", "推荐指数": 17},
+    ...
+  ]
+}
+```
+
+### 2.4 名称一致性清洗
+
+提取脚本中新增名称清洗逻辑:
+- `"梭菌属 Clostridium"` → `"Clostridium"`
+- `"5.1543-18.1656"`(数据污染)→ 跳过或修正
+- `"心脑血管疾病风险"` → `"心脑血管疾病"`(与知识库匹配)
+- 去重:自动去重因PDF格式导致的重复条目
+
+---
+
+## 三、匹配关系设计
+
+### 3.1 匹配规则
+
+前端(或后端拼接层)按以下规则匹配:
+
+1. **指标类数据**:个人 JSON 的 `名称` ↔ 知识库各章节 `指标[].名称`
+   - 例如:`{"名称":"碳水化合物"}` → 知识库 `主要营养评估.指标[名称="碳水化合物"]`
+
+2. **菌属数据**:个人 JSON 的 `名称`(学名) ↔ 知识库 `菌属功能库.菌属[].学名`
+   - 例如:`{"名称":"Clostridium"}` → 知识库 `菌属功能库.菌属[学名="Clostridium"]`
+
+3. **食物数据**:个人 JSON 的 `名称` + `推荐指数` ↔ 知识库 `食物库.数据[].名称`
+   - 例如:`{"名称":"大麦","推荐指数":17}` → 知识库 `食物库.数据[名称="大麦"]` + 推荐指数
+
+4. **状态判定**:个人 JSON 的 `数值` + 知识库的 `标准范围`/`状态分级` → 可验证或重新计算 `状态`
+
+### 3.2 前端展示流程
+
+```
+个人JSON.json(数值)       知识库.json(解释)
+     │                            │
+     └──────────┬─────────────────┘
+                │ 按名称匹配
+                ▼
+      动态拼接渲染
+     ┌─────────────────────┐
+     │ 指标名称(知识库)    │
+     │ 数值(个人)          │
+     │ 状态(个人或动态计算) │
+     │ 说明(知识库)        │
+     │ 调整建议(知识库)    │
+     └─────────────────────┘
+```
+
+---
+
+## 四、实施步骤
+
+1. **知识库补充**:在 `报告指标知识库.json` 中增加调整建议、菌属功能库、食物库
+2. **提取脚本重构**:修改 `extract_full_report_v5.py` 的输出结构
+3. **验证**:用 5 份测试 PDF 重新提取,验证名称匹配率和数据正确性
+4. **同步更新**:同步 `schema.sql`(如有表结构变化)
+5. **提交**:`git commit -m "feat: knowledge base v3 with flora library, food library, adjustment tips; refactor extraction script"`

+ 938 - 558
docs/参考资料/501999942-某人.json

@@ -8,7 +8,7 @@
     "年龄": "53岁",
     "性别": "男",
     "肠道预测年龄": "55.52岁",
-    "肠型": "普雷沃⽒菌型",
+    "肠型": "普雷沃氏菌型",
     "肠道菌群平衡": "38",
     "菌群多样性": "50",
     "有益菌": "22",
@@ -23,200 +23,310 @@
     {
       "名称": "炎症性肠炎",
       "数值": "0.24",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "结直肠癌",
       "数值": "0.26",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "肠易激综合征",
       "数值": "0.18",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "感染性腹泻",
       "数值": "0.16",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "胃病",
       "数值": "0.20",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "肝病",
       "数值": "0.21",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "胆病",
       "数值": "0.14",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "肾病",
       "数值": "0.05",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
+    },
+    {
+      "名称": "心脑血管疾病",
+      "数值": "0.37",
+      "状态": "注意",
+      "解读": ""
     },
     {
       "名称": "II型糖尿病",
       "数值": "0.21",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "抑郁症",
       "数值": "0.27",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
     },
     {
       "名称": "甲状腺疾病",
       "数值": "0.33",
-      "状态": "注意"
+      "状态": "注意",
+      "解读": ""
     },
     {
       "名称": "肺部感染或疾病",
       "数值": "0.12",
-      "状态": "低⻛险"
+      "状态": "低⻛险",
+      "解读": ""
+    },
+    {
+      "名称": "自体免疫病",
+      "数值": "0.08",
+      "状态": "低⻛险",
+      "解读": ""
+    },
+    {
+      "名称": "肺部疾病",
+      "数值": "0.12",
+      "状态": "低",
+      "解读": ""
+    },
+    {
+      "名称": "自体免疫疾病",
+      "数值": "0.08",
+      "状态": "低",
+      "解读": ""
+    },
+    {
+      "名称": "心脑血管疾病风险",
+      "数值": "0.37",
+      "状态": "与肠道菌群失衡",
+      "解读": ""
+    },
+    {
+      "名称": "甲状腺疾病风险",
+      "数值": "0.33",
+      "状态": "菌群紊乱可能干扰甲状腺激素代谢",
+      "解读": ""
     }
   ],
   "主要营养评估": [
     {
       "名称": "碳水化合物",
       "数值": "96",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的碳水化合物营养状况评估分值为96分,表明您的碳\n水化合物摄"
     },
     {
       "名称": "蛋白质",
       "数值": "44",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的蛋白质营养状况评估分值为44分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "脂肪",
       "数值": "71",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的脂肪营养状况评估分值为71分,属于正常范围,保持现有\n饮食即可"
     },
     {
       "名称": "纤维素",
       "数值": "96",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的纤维素营养状况评估分值为96分,表明您的纤维素摄"
     },
     {
       "名称": "乳制品",
       "数值": "36",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的乳制品营养状况评估分值为36分,属于正常范围,保持\n现有饮食即可"
     }
   ],
   "氨基酸评估": [
+    {
+      "名称": "苏氨酸",
+      "数值": "10",
+      "状态": "偏低",
+      "解读": "您的苏氨酸营养状况评估分值为10分,有些偏低,建议在现\n有饮食中适当增加苏氨酸的摄"
+    },
+    {
+      "名称": "异亮氨酸",
+      "数值": "3",
+      "状态": "缺乏",
+      "解读": "您的异亮氨酸营养状况评估分值为3分,表明您的异亮氨酸\n摄"
+    },
+    {
+      "名称": "亮氨酸",
+      "数值": "1",
+      "状态": "缺乏",
+      "解读": "您的亮氨酸营养状况评估分值为1分,表明您的亮氨酸摄"
+    },
+    {
+      "名称": "赖氨酸",
+      "数值": "7",
+      "状态": "偏低",
+      "解读": "您的赖氨酸营养状况评估分值为7分,有些偏低,建议在现有\n饮食中适当增加赖氨酸的摄"
+    },
+    {
+      "名称": "蛋氨酸",
+      "数值": "8",
+      "状态": "偏低",
+      "解读": "您的蛋氨酸营养状况评估分值为8分,有些偏低,建议在现有\n饮食中适当增加蛋氨酸的摄"
+    },
     {
       "名称": "胱氨酸",
       "数值": "86",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的胱氨酸营养状况评估分值为86分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "苯丙氨酸",
       "数值": "1",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的苯丙氨酸营养状况评估分值为1分,表明您的苯丙氨酸\n摄"
     },
     {
       "名称": "酪氨酸",
       "数值": "47",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的酪氨酸营养状况评估分值为47分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "缬氨酸",
       "数值": "2",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的缬氨酸营养状况评估分值为2分,表明您的缬氨酸摄"
     },
     {
       "名称": "组氨酸",
       "数值": "40",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的组氨酸营养状况评估分值为40分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "丙氨酸",
       "数值": "1",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的丙氨酸营养状况评估分值为1分,表明您的丙氨酸摄"
     },
     {
       "名称": "谷氨酸",
       "数值": "7",
-      "状态": "偏低"
+      "状态": "偏低",
+      "解读": "您的谷氨酸营养状况评估分值为7分,有些偏低,建议在现有\n饮食中适当增加谷氨酸的摄"
     },
     {
       "名称": "甘氨酸",
       "数值": "5",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的甘氨酸营养状况评估分值为5分,表明您的甘氨酸摄"
     },
     {
       "名称": "脯氨酸",
       "数值": "1",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的脯氨酸营养状况评估分值为1分,表明您的脯氨酸摄"
     },
     {
       "名称": "丝氨酸",
       "数值": "9",
-      "状态": "偏低"
+      "状态": "偏低",
+      "解读": "您的丝氨酸营养状况评估分值为9分,属于正常范围但有些偏\n低,建议在现有饮食中适当增加丝氨酸的摄"
     }
   ],
   "维生素评估": [
     {
       "名称": "维生素A",
       "数值": "84",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": ""
     },
     {
       "名称": "维生素B1",
       "数值": "2",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的维生素B1状况评估分值为2分,表明您的维生素B1摄"
     },
     {
       "名称": "维生素B2",
       "数值": "77",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B2状况评估分值为77分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素B5",
       "数值": "64",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B5状况评估分值为64分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素B6",
       "数值": "38",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B6状况评估分值为38分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "叶酸",
       "数值": "35",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的叶酸状况评估分值为35分,属于正常范围,保持现有饮食\n即可"
     },
     {
       "名称": "维生素B12",
       "数值": "25",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B12状况评估分值为25分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素C",
       "数值": "31",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素C状况评估分值为31分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素D",
       "数值": "93",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素D状况评估分值为93分,属于正常范围,保持现有饮食即可"
+    },
+    {
+      "名称": "维生素K2",
+      "数值": "75",
+      "状态": "正常",
+      "解读": ""
     }
   ],
   "微量元素评估": [
     {
       "名称": "铁",
       "数值": "2",
-      "状态": "缺乏"
+      "状态": "缺乏",
+      "解读": "您的铁状况评估分值为2分,表明您的铁摄"
     },
     {
       "名称": "锌",
       "数值": "52",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的锌状况评估分值为52分,属于正常范围,保持现有饮食即可"
     }
   ],
   "主要消化道致病菌": [
@@ -231,12 +341,12 @@
       "评估": "未检出"
     },
     {
-      "致病菌": "沙⻔⽒菌",
+      "致病菌": "沙⻔氏菌",
       "丰度": "0%",
       "评估": "未检出"
     },
     {
-      "致病菌": "志贺⽒菌",
+      "致病菌": "志贺氏菌",
       "丰度": "0%",
       "评估": "未检出"
     },
@@ -247,51 +357,6 @@
     }
   ],
   "抗生素风险评估": [
-    {
-      "名称": "β-内酰胺酶类",
-      "数值": "20",
-      "状态": "正常"
-    },
-    {
-      "名称": "氨基糖苷类",
-      "数值": "5",
-      "状态": "正常"
-    },
-    {
-      "名称": "大环内酯类",
-      "数值": "39",
-      "状态": "正常"
-    },
-    {
-      "名称": "呋喃类",
-      "数值": "82",
-      "状态": "正常"
-    },
-    {
-      "名称": "喹诺酮类",
-      "数值": "30",
-      "状态": "正常"
-    },
-    {
-      "名称": "磺胺类",
-      "数值": "61",
-      "状态": "正常"
-    },
-    {
-      "名称": "甲氧苄啶类",
-      "数值": "55",
-      "状态": "正常"
-    },
-    {
-      "名称": "氯霉素类",
-      "数值": "8",
-      "状态": "正常"
-    },
-    {
-      "名称": "四环素类",
-      "数值": "48",
-      "状态": "正常"
-    },
     {
       "名称": "β-内酰胺酶类",
       "数值": "20",
@@ -343,55 +408,78 @@
       "名称": "肠道炎症水平",
       "评估值": "16",
       "健康状况": "正常",
-      "正常范围": "0-80"
+      "正常范围": "0-80",
+      "解读": ""
+    },
+    {
+      "名称": "肠道产气",
+      "评估值": "8",
+      "健康状况": "正常",
+      "正常范围": "0-50",
+      "解读": ""
     },
     {
       "名称": "肠道屏障",
       "评估值": "65",
       "健康状况": "正常",
-      "正常范围": "15-100"
+      "正常范围": "15-100",
+      "解读": ""
     },
     {
       "名称": "脂多糖LPS",
       "评估值": "58",
       "健康状况": "正常",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "次级胆汁酸",
       "评估值": "9",
       "健康状况": "不⾜",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "对甲酚(p-Cresol)",
       "评估值": "54",
       "健康状况": "正常",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "吲哚",
       "评估值": "9",
       "健康状况": "不⾜",
-      "正常范围": "15-90"
+      "正常范围": "15-90",
+      "解读": ""
     },
     {
       "名称": "苯酚",
       "评估值": "7",
       "健康状况": "正常",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "腐胺",
       "评估值": "4",
       "健康状况": "缺乏",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     },
     {
       "名称": "硫化氢",
       "评估值": "8",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
+    },
+    {
+      "名称": "尸胺",
+      "评估值": "21",
+      "健康状况": "正常",
+      "正常范围": "5-85",
+      "解读": ""
     }
   ],
   "短链脂肪酸": [
@@ -399,69 +487,107 @@
       "名称": "丁酸盐(Butyrate)",
       "评估值": "14",
       "健康状况": "不⾜",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": "您的丁酸盐状况评估分值为14\n分,有些偏低,建议注意饮食,适当增加丁酸盐的摄"
     },
     {
       "名称": "丙酸盐(Propionate)",
       "评估值": "71",
       "健康状况": "正常",
-      "正常范围": "15-90"
+      "正常范围": "15-90",
+      "解读": "您的丙酸盐状况评估分值为71\n分,属于正常范围,保持现有饮食即可"
+    },
+    {
+      "名称": "乙酸盐(Acetate)",
+      "评估值": "21",
+      "健康状况": "正常",
+      "正常范围": "15-95",
+      "解读": "您的乙酸盐状况评估分值为21\n分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "异戊酸盐(Isovaleric)",
       "评估值": "6",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     }
   ],
   "神经递质及激素": [
+    {
+      "名称": "血清素(5-HT)",
+      "评估值": "57",
+      "健康状况": "正常",
+      "正常范围": "15-95",
+      "解读": ""
+    },
     {
       "名称": "γ-氨基丁酸(GABA)",
       "评估值": "8",
       "健康状况": "不⾜",
-      "正常范围": "15-85"
+      "正常范围": "15-85",
+      "解读": ""
     },
     {
       "名称": "谷氨酸(Glutamate)",
       "评估值": "7",
       "健康状况": "不⾜",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": "您的谷氨酸营养状况评估分值为7分,有些偏低,建议在现有\n饮食中适当增加谷氨酸的摄"
+    },
+    {
+      "名称": "色氨酸(Tryptophan)",
+      "评估值": "2",
+      "健康状况": "缺乏",
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "DOPAC",
       "评估值": "19",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "多巴胺",
       "评估值": "94",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "组胺(Histamine)",
       "评估值": "67",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "喹啉(Quinolinic)",
       "评估值": "5",
       "健康状况": "正常",
-      "正常范围": "0-95"
+      "正常范围": "0-95",
+      "解读": ""
     },
     {
       "名称": "维生素K2",
       "评估值": "75",
       "健康状况": "正常",
-      "正常范围": "15-99"
+      "正常范围": "15-99",
+      "解读": ""
     },
     {
       "名称": "肌醇(Inositol)",
       "评估值": "31",
       "健康状况": "正常",
-      "正常范围": "15-99"
+      "正常范围": "15-99",
+      "解读": ""
+    },
+    {
+      "名称": "一氧化氮",
+      "数值": "73",
+      "状态": "正常",
+      "解读": ""
     }
   ],
   "个体化食物推荐表": {
@@ -3169,12 +3295,12 @@
         "说明": "说明:多导致⼈体炎症;致病;导致菌群失衡;产丁酸;肥胖⼈群丰度较⾼;参与胆汁酸代谢;对抗艰难梭菌;"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
+        "名称": "普雷沃氏菌属 Prevotella",
         "丰度%": "60.0857",
         "正常范围%": "0.3652-81.2736",
         "人群水平%": "96%",
         "检出率%": "99.52%",
-        "说明": "说明:核心菌,健康的植物性饮食相关菌,在⾃闭症、多发性硬化中减少;丰度⾼促炎,加剧过敏、"
+        "说明": "说明:核心菌,健康的植物性饮食相关菌,在自闭症、多发性硬化中减少;丰度⾼促炎,加剧过敏、"
       },
       {
         "名称": "瘤胃球菌属 Ruminococcus",
@@ -3198,7 +3324,7 @@
         "正常范围%": "0.0574-5.8432",
         "人群水平%": "35%",
         "检出率%": "98.56%",
-        "说明": "说明:基石菌,产短链脂肪酸尤其丁酸,有助于肠道健康,降解胆固醇、调节餐后⾎糖、"
+        "说明": "说明:基石菌,产短链脂肪酸尤其丁酸,有助于肠道健康,降解胆固醇、调节餐后血糖、"
       },
       {
         "名称": "Lachnoclostridium",
@@ -3206,7 +3332,7 @@
         "正常范围%": "0.117-6.2036",
         "人群水平%": "27%",
         "检出率%": "98.56%",
-        "说明": "说明:丁酸,与内脏脂肪积累相关,与肥胖、⾼⾎压、糖尿病正相关,与肠道炎症、肠癌和阿尔茨海默病进展有关,"
+        "说明": "说明:丁酸,与内脏脂肪积累相关,与肥胖、⾼血压、糖尿病正相关,与肠道炎症、肠癌和阿尔茨海默病进展有关,"
       },
       {
         "名称": "粪杆菌属 Faecalibacterium",
@@ -3215,7 +3341,7 @@
       {
         "名称": "5.1543-18.1656",
         "丰度%": "59%",
-        "检出率%": "98.08%",
+        "人群水平%": "98.08%",
         "说明": "说明:基石菌,丁酸生产菌,下⼀代"
       },
       {
@@ -3225,16 +3351,66 @@
       {
         "名称": "0.3366-3.237",
         "丰度%": "21%",
-        "检出率%": "97.60%",
+        "人群水平%": "97.60%",
         "说明": "说明:消化复合碳水化合物,健康菌,偏低与炎症肠病,营养不良相关,减肥有效菌,缓解炎症性疾病和代谢疾病,"
       },
       {
-        "名称": "⽑螺菌属 Lachnospira",
+        "名称": "戴阿利斯特杆菌属 Dialister",
+        "丰度%": "0.0769",
+        "正常范围%": "0-13.9606",
+        "人群水平%": "46%",
+        "检出率%": "96.15%",
+        "说明": "说明:代谢碳水化合物、产短链脂肪酸,许多种都可能导致感染,但是抑郁症患者缺乏,关节炎患者富集,"
+      },
+      {
+        "名称": "罗氏菌属 Roseburia",
+        "丰度%": "1.1301"
+      },
+      {
+        "名称": "2.0832-31.457",
+        "丰度%": "57%",
+        "人群水平%": "96.15%",
+        "说明": "说明:基石菌,产丁酸,丙酸,乙酸,影响结肠运动,具抗炎特性,分解不可消化的碳水化合物,百岁老⼈富集,抗炎,"
+      },
+      {
+        "名称": "直肠真杆菌属 Agathobacter",
+        "丰度%": "0.1342",
+        "正常范围%": "0-10.7816",
+        "人群水平%": "40%",
+        "检出率%": "95.67%",
+        "说明": "说明:可利用抗性淀粉,具有抗炎和调节免疫功能的作用,类⻛湿性关节炎和溃疡性结肠炎⼈群显著减少。"
+      },
+      {
+        "名称": "吉米菌属 Gemmiger",
+        "丰度%": "0.1955",
+        "正常范围%": "0-5.149",
+        "人群水平%": "40%",
+        "检出率%": "95.67%",
+        "说明": "说明:健康饮食,⾼果蔬、谷物及豆类饮食含量⾼,与雄激素分泌相关,缓解便秘,与脂肪堆积分布负相关,"
+      },
+      {
+        "名称": "副拟杆菌属 Parabacteroides",
+        "丰度%": "0.7216",
+        "正常范围%": "0-5.433",
+        "人群水平%": "45%",
+        "检出率%": "95.19%",
+        "说明": "说明:帮助糖脂代谢,改善⾼脂影响,产生强大的降解酶,参与胆碱代谢,顺产宝宝和⻓寿老⼈肠道丰富,"
+      },
+      {
+        "名称": "另枝菌属 Alistipes",
+        "丰度%": "1.0104",
+        "正常范围%": "0-20.1524",
+        "人群水平%": "71%",
+        "检出率%": "91.83%",
+        "说明": "说明:耐胆汁酸菌,丙酸,乙酸生产者,参与腐败途径产生氨、H2S、甲酚、吲哚和苯酚,诱发结直肠癌,"
+      },
+      {
+        "名称": "母螺菌属 Lachnospira",
         "丰度%": "0.1943",
         "正常范围%": "0-4.805",
         "人群水平%": "60%",
         "检出率%": "88.94%",
-        "说明": "说明:基石菌,发酵代谢膳食纤维,利用果蔬果㬵产生⼄酸,丁酸,与睡眠质量呈负相关,过少与多种疾病相关,"
+        "说明": "说明:基石菌,发酵代谢膳食纤维,利用果蔬果㬵产生乙酸,丁酸,与睡眠质量呈负相关,过少与多种疾病相关,"
       },
       {
         "名称": "考拉杆菌属 Phascolarctobacterium",
@@ -3242,7 +3418,7 @@
         "正常范围%": "0-8.8711",
         "人群水平%": "19%",
         "检出率%": "88.94%",
-        "说明": "说明:东⽅⼈肠道的核心菌属,⾼易减肥,与水果蔬菜摄⼊相关,随年龄增加,在重度抑郁、阿尔茨海默病(AD)、⾃闭症⼉童富集,"
+        "说明": "说明:东⽅⼈肠道的核心菌属,⾼易减肥,与水果蔬菜摄⼊相关,随年龄增加,在重度抑郁、阿尔茨海默病(AD)、自闭症⼉童富集,"
       },
       {
         "名称": "巨单胞菌属 Megamonas",
@@ -3250,7 +3426,7 @@
         "正常范围%": "0-21.672",
         "人群水平%": "29%",
         "检出率%": "87.50%",
-        "说明": "说明:发酵各种碳水化合物、产⼄酸、丙酸、乳酸,⾃闭症谱系障碍、注意缺陷、多动障碍 (ADHD)急性脑卒中(AIS)"
+        "说明": "说明:发酵各种碳水化合物、产乙酸、丙酸、乳酸,自闭症谱系障碍、注意缺陷、多动障碍 (ADHD)急性脑卒中(AIS)"
       },
       {
         "名称": "粪球菌属 Coprococcus",
@@ -3271,63 +3447,109 @@
     ],
     "益生菌": [
       {
-        "名称": "拟杆菌⻔ Bacteroidetes",
-        "丰度%": "76.721%",
-        "人群水平%": "95%",
-        "检出率%": "98.03%"
+        "名称": "乳杆菌属 Lactobacillus",
+        "丰度%": "0.743%",
+        "人群水平%": "73%",
+        "检出率%": "91.83%"
       },
       {
-        "名称": "厚壁菌⻔ Firmicutes",
-        "丰度%": "21.168%",
-        "人群水平%": "28%",
-        "检出率%": "98.95%"
+        "名称": "罗氏乳杆菌 Lactobacillus rogosae",
+        "丰度%": "0.737%",
+        "人群水平%": "80%",
+        "检出率%": "76.92%"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "1.129%",
-        "人群水平%": "8%",
-        "检出率%": "93.53%"
+        "名称": "双歧杆菌属 Bifidobacterium",
+        "丰度%": "0.240%",
+        "人群水平%": "50%",
+        "检出率%": "97.12%"
       },
       {
-        "名称": "放线菌⻔ Actinobacteria",
-        "丰度%": "0.533%",
-        "人群水平%": "50%",
-        "检出率%": "94.62%"
+        "名称": "⻘春双歧杆菌 Bifidobacterium adolescentis",
+        "丰度%": "0.209%",
+        "人群水平%": "98%",
+        "检出率%": "95.67%"
       },
       {
-        "名称": "黏㬵球形菌⻔ Lentisphaerae",
-        "丰度%": "0.037%",
-        "人群水平%": "94%",
-        "检出率%": "18.42%"
+        "名称": "⻓双歧杆菌 Bifidobacterium longum",
+        "丰度%": "0.027%",
+        "人群水平%": "91%",
+        "检出率%": "73.08%"
       },
       {
-        "名称": "疣微菌⻔ Verrucomicrobia",
-        "丰度%": "0.013%",
-        "人群水平%": "56%",
-        "检出率%": "56.29%"
+        "名称": "罗伊氏乳杆菌 Lactobacillus reuteri",
+        "丰度%": "0.003%",
+        "人群水平%": "99%",
+        "检出率%": "0.96%"
       },
       {
-        "名称": "螺旋体 Spirochaetes",
-        "丰度%": "0.007%",
-        "人群水平%": "97%",
-        "检出率%": "4.04%"
+        "名称": "双歧双歧杆菌 Bifidobacterium bifidum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "链状双歧杆菌 Bifidobacterium catenulatum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "假⻓双歧杆菌 Bifidobacterium pseudolongum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "⾼卢双歧杆菌 Bifidobacterium gallicum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "排泄物双岐杆菌 Bifidobacterium stercoris",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "副干酪乳杆菌 Lactobacillus paracasei",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "植物乳杆菌 Lactobacillus plantarum",
+        "丰度%": "ND"
       },
       {
-        "名称": "厚壁菌/拟杆菌21.6%",
-        "丰度%": "78.4%"
+        "名称": "约氏乳杆菌 Lactobacillus johnsonii",
+        "丰度%": "ND"
       },
       {
-        "名称": "您的厚壁菌氏拟杆菌氏值为:",
-        "丰度%": "0.28"
+        "名称": "瑞一乳杆菌 Lactobacillus helveticus",
+        "丰度%": "ND"
       },
       {
-        "名称": "核心菌属",
-        "丰度%": "85"
+        "名称": "动物双歧杆菌 Bifidobacterium animalis",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "发酵乳杆菌 Lactobacillus fermentum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "短双歧杆菌 Bifidobacterium breve",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "⿏李糖乳杆菌 Lactobacillus rhamnosus",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "短乳杆菌 Lactobacillus brevis",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "德氏乳酸乳杆菌 Lactobacillus delbrueckii",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "嗜酸乳杆菌 Lactobacillus acidophilus",
+        "丰度%": "ND"
       }
     ],
     "有害菌属": [
       {
-        "名称": "埃希⽒菌属 Escherichia",
+        "名称": "埃希氏菌属 Escherichia",
         "丰度%": "0.0202",
         "正常范围%": "0-9.3023",
         "人群水平%": "9%",
@@ -3349,7 +3571,7 @@
       {
         "名称": "0-0.0999",
         "丰度%": "95%",
-        "检出率%": "33.65%",
+        "人群水平%": "33.65%",
         "说明": "说明:属于变形菌⻔,产生硫化氢,导致炎症、腹泻,对肠道上皮具有毒性,导致胃肠道疾病,约50%⼈群的⼝腔和肠道会携带,"
       },
       {
@@ -3358,7 +3580,7 @@
         "正常范围%": "0-0.036",
         "人群水平%": "86%",
         "检出率%": "22.12%",
-        "说明": "说明:⾰兰⽒阴性菌,微需氧菌,该菌属下的⼀些菌种被发现在⼈类上消化道内壁,部分种为致病菌,"
+        "说明": "说明:⾰兰氏阴性菌,微需氧菌,该菌属下的⼀些菌种被发现在⼈类上消化道内壁,部分种为致病菌,"
       },
       {
         "名称": "⼸形菌属 Arcobacter",
@@ -3366,642 +3588,800 @@
         "正常范围%": "0-0.0066",
         "人群水平%": "96%",
         "检出率%": "7.69%",
-        "说明": "说明:好氧菌,腹泻致病菌,与河流海洋污染相关的潜在"
-      }
-    ],
-    "其它重要菌属": [
+        "说明": "说明:好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,⼈畜共患菌"
+      },
       {
-        "名称": "柯林斯⽒菌属 Collinsella",
-        "丰度%": "0.2801",
-        "正常范围%": "0-5.7436",
-        "人群水平%": "77%",
-        "检出率%": "90.38%",
-        "说明": "说明:产⽓菌,与脂质代谢及心脑⾎管相关,过多可导致菌群紊乱,部分"
-      }
-    ],
-    "病原菌属": [],
-    "病原菌检出": [],
-    "便秘相关菌": [
+        "名称": "厌氧螺菌 Anaerobiospirillum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "99%",
+        "丰度%": "0.00%",
+        "说明": "说明:引起腹泻,感染,常⻅于猫狗体内,过多会导致菌群紊乱"
+      },
       {
-        "名称": "史⽒甲烷短杆菌 Methanobrevibacter smithii",
+        "名称": "肠球菌属 Enterococcus",
         "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
+        "正常范围%": "0-1.1362",
+        "人群水平%": "41%",
+        "检出率%": "81.25%",
+        "说明": "说明:常⻅上呼吸道,⼝腔或肠道的常居菌,也分布在畜、禽养殖环境,饲料或肠道,抑菌调节肠道菌群,"
       },
       {
-        "名称": "粪球菌属 Coprococcus",
-        "丰度%": "1.8668",
-        "正常范围%": "0-3.618",
-        "人群水平%": "94%"
+        "名称": "奈瑟氏菌属 Neisseria",
+        "丰度%": "ND",
+        "正常范围%": "0-0.05",
+        "人群水平%": "80%",
+        "检出率%": "46.15%",
+        "说明": "说明:部分为⼈体病原菌,⼝腔,唾液,⿐腔,肺部正常菌,需氧,对干燥、热、消毒剂敏感,"
       },
       {
-        "名称": "埃希⽒菌属 Escherichia",
-        "丰度%": "0.0202",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "9%"
+        "名称": "不动杆菌属 Acinetobacter",
+        "丰度%": "ND",
+        "正常范围%": "0-0.2475",
+        "人群水平%": "57%",
+        "检出率%": "45.19%",
+        "说明": "说明:条件致病菌,医院感染病原体之⼀,尤其ICU,易引起呼吸道感染、泌尿道感染、创伤感染,"
       },
       {
-        "名称": "⽑螺菌属 Lachnospira",
-        "丰度%": "0.1943",
-        "正常范围%": "0-4.805",
-        "人群水平%": "60%"
+        "名称": "假单胞菌属 Pseudomonas",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0864",
+        "人群水平%": "54%",
+        "检出率%": "45.19%",
+        "说明": "说明:属于变形菌⻔,在环境中⼴泛存在,代谢多变适应⼒强,好氧或微需,会导致感染和食物变质,医院获得性感染主要原因,"
       },
       {
-        "名称": "厌氧棍状菌属 Anaerotruncus",
+        "名称": "霍尔德曼氏菌属 Holdemania",
         "丰度%": "0.0100",
-        "正常范围%": "0-0.1328",
-        "人群水平%": "77%"
+        "正常范围%": "0-0.0378",
+        "人群水平%": "74%",
+        "检出率%": "29.33%",
+        "说明": "说明:肠道共生菌,降解黏蛋白,机会致病菌,少数研究表明与痛⻛正相关,帕金森,双向情感障碍,过敏,抑郁患者富集"
+      }
+    ],
+    "其它重要菌属": [
+      {
+        "名称": "柯林斯氏菌属 Collinsella",
+        "丰度%": "0.2801",
+        "正常范围%": "0-5.7436",
+        "人群水平%": "77%",
+        "检出率%": "90.38%",
+        "说明": "说明:产气菌,与脂质代谢及心脑血管相关,过多可导致菌群紊乱,部分病原菌"
       },
       {
-        "名称": "葡萄球菌属 Staphylococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0105",
-        "人群水平%": "78%"
+        "名称": "嗜胆菌属 Bilophila",
+        "丰度%": "0.1352",
+        "正常范围%": "0-0.3348",
+        "人群水平%": "69%",
+        "检出率%": "66.83%",
+        "说明": "说明:条件致病菌,与耐胆汁酸和脂肪摄⼊相关,便秘⼈群丰度更⾼"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0100",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "7%"
+        "名称": "Flavonifractor",
+        "丰度%": "0.0033",
+        "正常范围%": "0-0.415",
+        "人群水平%": "20%",
+        "检出率%": "91.83%",
+        "说明": "说明:参与肠道⼉茶素代谢,减轻免疫反应,产丁酸"
       },
       {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.0202",
-        "正常范围%": "0-0.4212",
-        "人群水平%": "23%"
+        "名称": "Dorea菌属 Dorea",
+        "丰度%": "0.0501",
+        "正常范围%": "0.0144-2.49",
+        "人群水平%": "32%",
+        "检出率%": "89.42%",
+        "说明": "说明:消化碳水化合物,多发性硬化症、炎症性肠病、结直肠癌、自闭症谱系障碍以及肥胖⼈群中⾼丰度富集,"
       },
       {
-        "名称": "卵形拟杆菌 Bacteroides ovatus",
-        "丰度%": "0.0200",
-        "正常范围%": "0.0005-1.4154",
-        "人群水平%": "42%"
+        "名称": "亨盖特氏菌属 Hungatella",
+        "丰度%": "0.1249",
+        "正常范围%": "0-0.8235",
+        "人群水平%": "64%",
+        "检出率%": "89.42%",
+        "说明": "说明:参与生成氧化三甲胺和牛磺酸。"
       },
       {
-        "名称": "下水道菌属 Cloacibacillus",
-        "丰度%": "0.0033",
-        "正常范围%": "0-0.0468",
-        "人群水平%": "79%"
+        "名称": "颤螺菌属 Oscillospira",
+        "丰度%": "0.2999",
+        "正常范围%": "0.0126-0.8558",
+        "人群水平%": "81%",
+        "检出率%": "87.50%",
+        "说明": "说明:基石菌、核心菌群,帮助消化抗性淀粉,产丁酸,并在大肠中发酵。与⼉童过敏和肥胖呈负相关。"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.2787",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "23%"
+        "名称": "枸橼酸杆菌属 Citrobacter",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0668",
+        "人群水平%": "37%",
+        "检出率%": "78.37%",
+        "说明": "说明:常⻅菌,免疫⼒下降可能引发感染。"
+      },
+      {
+        "名称": "Akkermansia",
+        "丰度%": "0.0135",
+        "正常范围%": "0.0018-7.8352",
+        "人群水平%": "49%",
+        "检出率%": "74.52%",
+        "说明": "说明:基石菌,可降解淀粉,黏蛋白降解菌,可控制体重,改善代谢和炎症,过多导致肠粘膜屏障破坏。"
       },
       {
         "名称": "肠杆菌属 Enterobacter",
         "丰度%": "0.0067",
         "正常范围%": "0-0.083",
-        "人群水平%": "60%"
+        "人群水平%": "60%",
+        "检出率%": "63.46%",
+        "说明": "说明:产酸产气,不引起腹泻,机会性感染,过多导致菌群紊乱和肥胖。"
       },
       {
-        "名称": "Erysipelatoclostridium",
-        "丰度%": "0.0574",
-        "正常范围%": "0-1.0458",
-        "人群水平%": "53%"
+        "名称": "苏黎世杆菌属 Turicibacter",
+        "丰度%": "0.0100",
+        "正常范围%": "0-0.2352",
+        "人群水平%": "73%",
+        "检出率%": "49.52%",
+        "说明": "说明:发酵生成乳酸,参与肌肉和疲劳调节。"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "3.2406",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "59%"
+        "名称": "丁酸弧菌属 Butyrivibrio",
+        "丰度%": "ND",
+        "正常范围%": "0-0.8134",
+        "人群水平%": "70%",
+        "检出率%": "35.58%",
+        "说明": "说明:利用纤维素、淀粉和其他多聚糖生成丁酸,有助于维持肠道上皮,发挥抗炎、抗氧化作用。可调节体内的氨水平,影响免疫。"
       },
       {
-        "名称": "梭杆菌属 Fusobacterium",
+        "名称": "克⾥斯滕森氏菌属 Christensenella",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0072",
+        "人群水平%": "82%",
+        "检出率%": "5.77%",
+        "说明": "说明:过多:肥胖,代谢综合征,包括⾼血压、⾼血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗"
+      }
+    ],
+    "病原菌属": [
+      {
+        "名称": "嗜血杆菌属 Haemophilus",
         "丰度%": "ND",
-        "正常范围%": "0-1.21",
-        "人群水平%": "37%"
+        "正常范围%": "0-0.7752",
+        "人群水平%": "22%",
+        "检出率%": "94.23%",
+        "说明": "说明:病原菌,过多可导致菌群紊乱,可引发呼吸道感染,常⻅于呼吸道感染"
       },
       {
-        "名称": "霍尔德曼穆尔菌属 Holdemanella",
-        "丰度%": "0.1318",
-        "正常范围%": "0-0.2904",
-        "人群水平%": "91%"
+        "名称": "沙⻔氏菌属 Salmonella",
+        "丰度%": "0.0236",
+        "正常范围%": "0-0.4104",
+        "人群水平%": "60%",
+        "检出率%": "87.98%",
+        "说明": "说明:是引起食物中毒和肠道感染的常⻅病原菌之⼀"
       },
       {
-        "名称": "霍尔德曼⽒菌属 Holdemania",
-        "丰度%": "0.0100",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "74%"
+        "名称": "萨特氏菌属 Sutterella",
+        "丰度%": "ND",
+        "正常范围%": "0-2.266",
+        "人群水平%": "21%",
+        "检出率%": "81.73%",
+        "说明": "说明:肠道共生菌,潜在病原菌,自闭症相关,减少IgA"
       },
       {
-        "名称": "巨球形菌属 Megasphaera",
-        "丰度%": "0.0101",
-        "正常范围%": "0-0.1971",
-        "人群水平%": "51%"
+        "名称": "棒杆菌属 Corynebacterium",
+        "丰度%": "ND",
+        "正常范围%": "0-0.2646",
+        "人群水平%": "99%",
+        "检出率%": "52.88%",
+        "说明": "说明:可导致急性腹泻、腹痛、恶心"
       },
       {
-        "名称": "臭⽓杆菌属 Odoribacter",
-        "丰度%": "0.1894",
-        "正常范围%": "0-1.1786",
-        "人群水平%": "81%"
+        "名称": "气单胞菌属 Aeromonas",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0334",
+        "人群水平%": "80%",
+        "检出率%": "29.33%",
+        "说明": "说明:病原菌"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.7216",
-        "正常范围%": "0-5.433",
-        "人群水平%": "45%"
+        "名称": "葡萄球菌属 Staphylococcus",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0105",
+        "人群水平%": "78%",
+        "检出率%": "17.31%",
+        "说明": "说明:利用碳水化合物或氨基酸,产生乳酸。部分产生毒素,如金黄色葡萄球菌,可能引发肠道炎症、并影响肠道屏障功能"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.6504",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "66%"
+        "名称": "Vibrio",
+        "丰度%": "ND"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.2396",
-        "正常范围%": "0.1914-12.598",
-        "人群水平%": "50%"
+        "名称": "99%",
+        "丰度%": "8.17%",
+        "说明": "说明:条件致病菌"
       },
       {
-        "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "0.7434",
-        "正常范围%": "0.166-6.5835",
-        "人群水平%": "73%"
+        "名称": "沃氏嗜胆菌 Bilophila wadsworthia",
+        "丰度%": "0.135%",
+        "人群水平%": "69%",
+        "检出率%": "66.83%"
       },
       {
-        "名称": "阿克曼⽒菌属 Akkermansia",
-        "丰度%": "0.0135",
-        "正常范围%": "0.0018-7.8352",
-        "人群水平%": "49%"
+        "名称": "肠炎⿏伤寒沙⻔氏菌 Salmonella enterica",
+        "丰度%": "0.024%",
+        "人群水平%": "60%",
+        "检出率%": "87.98%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1206"
+        "名称": "大肠杆菌 Escherichia coli",
+        "丰度%": "0.020%",
+        "人群水平%": "10%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "21%"
+        "名称": "脆弱拟杆菌 Bacteroides fragilis",
+        "丰度%": "0.020%",
+        "人群水平%": "23%",
+        "检出率%": "93.27%"
+      }
+    ],
+    "病原菌检出": [
+      {
+        "名称": "沃氏嗜胆菌 Bilophila wadsworthia",
+        "丰度%": "0.135%",
+        "人群水平%": "69%",
+        "检出率%": "66.83%"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "60.0857",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "96%"
+        "名称": "肠炎⿏伤寒沙⻔氏菌 Salmonella enterica",
+        "丰度%": "0.024%",
+        "人群水平%": "60%",
+        "检出率%": "87.98%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.2787",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "23%"
+        "名称": "大肠杆菌 Escherichia coli",
+        "丰度%": "0.020%",
+        "人群水平%": "10%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.6504",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "66%"
+        "名称": "脆弱拟杆菌 Bacteroides fragilis",
+        "丰度%": "0.020%",
+        "人群水平%": "23%",
+        "检出率%": "93.27%"
       }
     ],
-    "抑郁相关菌": [
+    "菌纲构成": [
       {
-        "名称": "脱硫弧菌属 Desulfovibrio",
-        "丰度%": "0.4734"
+        "名称": "拟杆菌纲 Bacteroidia",
+        "丰度%": "76.721%",
+        "人群水平%": "95%",
+        "检出率%": "98.00%"
       },
       {
-        "名称": "0-0.0999",
-        "丰度%": "95%"
+        "名称": "梭菌纲 Clostridia",
+        "丰度%": "17.067%",
+        "人群水平%": "26%",
+        "检出率%": "98.87%"
       },
       {
-        "名称": "另枝菌属 Alistipes",
-        "丰度%": "1.0104",
-        "正常范围%": "0-20.1524",
-        "人群水平%": "71%"
+        "名称": "芽孢杆菌纲 Bacilli",
+        "丰度%": "1.594%",
+        "人群水平%": "81%",
+        "检出率%": "86.08%"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "13.2781",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "35%"
+        "名称": "德耳塔变形杆菌纲 Deltaproteobacteria",
+        "丰度%": "0.609%",
+        "人群水平%": "88%",
+        "检出率%": "60.76%"
       },
       {
-        "名称": "埃希⽒菌属 Escherichia",
-        "丰度%": "0.0202",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "9%"
+        "名称": "β-变形菌纲 Betaproteobacteria",
+        "丰度%": "0.409%",
+        "人群水平%": "38%",
+        "检出率%": "74.47%"
       },
       {
-        "名称": "解黄酮菌属 Flavonifractor",
-        "丰度%": "0.0033",
-        "正常范围%": "0-0.415",
-        "人群水平%": "20%"
+        "名称": "红蝽菌纲 Coriobacteriia",
+        "丰度%": "0.283%",
+        "人群水平%": "79%",
+        "检出率%": "79.61%"
       },
       {
-        "名称": "震颤杆菌属 Oscillibacter",
-        "丰度%": "0.0368",
-        "正常范围%": "0-0.0738",
-        "人群水平%": "89%"
+        "名称": "放线杆菌纲 Actinobacteria",
+        "丰度%": "0.249%",
+        "人群水平%": "45%",
+        "检出率%": "87.94%"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.7216",
-        "正常范围%": "0-5.433",
-        "人群水平%": "45%"
+        "名称": "Erysipelotrichi",
+        "丰度%": "0.178%",
+        "人群水平%": "54%",
+        "检出率%": "68.47%"
       },
       {
-        "名称": "放线菌属 Actinomyces",
-        "丰度%": "0.0033",
-        "正常范围%": "0-0.0756",
-        "人群水平%": "34%"
+        "名称": "γ-变形菌纲 Gammaproteobacteria",
+        "丰度%": "0.111%",
+        "人群水平%": "8%",
+        "检出率%": "88.68%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1206"
+        "名称": "Lentisphaeria",
+        "丰度%": "0.037%",
+        "人群水平%": "94%",
+        "检出率%": "18.42%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "21%"
+        "名称": "疣微菌纲 Verrucomicrobiae",
+        "丰度%": "0.013%",
+        "人群水平%": "57%",
+        "检出率%": "53.76%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.2787",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "23%"
+        "名称": "柔膜体纲 Mollicutes",
+        "丰度%": "0.007%",
+        "人群水平%": "71%",
+        "检出率%": "29.01%"
       },
       {
-        "名称": "爱格⼠⽒菌属 Eggerthella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0166",
-        "人群水平%": "55%"
-      },
+        "名称": "互养菌纲 Synergistia",
+        "丰度%": "0.003%",
+        "人群水平%": "63%",
+        "检出率%": "24.61%"
+      }
+    ],
+    "菌目构成": [
       {
-        "名称": "嗜⾎杆菌属 Haemophilus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.7752",
-        "人群水平%": "22%"
+        "名称": "拟杆菌目 Bacteroidales",
+        "丰度%": "76.721%",
+        "人群水平%": "95%",
+        "检出率%": "98.00%"
       },
       {
-        "名称": "霍尔德曼⽒菌属 Holdemania",
-        "丰度%": "0.0100",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "74%"
+        "名称": "梭菌目 Clostridiales",
+        "丰度%": "11.473%",
+        "人群水平%": "20%",
+        "检出率%": "98.87%"
       },
       {
-        "名称": "克雷伯⽒菌属 Klebsiella",
-        "丰度%": "0.0132",
-        "正常范围%": "0-15.81",
-        "人群水平%": "24%"
+        "名称": "乳杆菌目 Lactobacillales",
+        "丰度%": "0.753%",
+        "人群水平%": "72%",
+        "检出率%": "85.51%"
       },
       {
-        "名称": "副普雷沃⽒菌属 Paraprevotella",
-        "丰度%": "0.1857",
-        "正常范围%": "0-1.998",
-        "人群水平%": "79%"
+        "名称": "脱硫弧菌目 Desulfovibrionales",
+        "丰度%": "0.609%",
+        "人群水平%": "89%",
+        "检出率%": "58.79%"
       },
       {
-        "名称": "副萨特⽒菌属 Parasutterella",
-        "丰度%": "0.2165",
-        "正常范围%": "0-2.4003",
-        "人群水平%": "66%"
+        "名称": "伯克氏菌目 Burkholderiales",
+        "丰度%": "0.409%",
+        "人群水平%": "39%",
+        "检出率%": "74.19%"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "60.0857",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "96%"
+        "名称": "红蝽菌目 Coriobacteriales",
+        "丰度%": "0.283%",
+        "人群水平%": "79%",
+        "检出率%": "79.61%"
       },
       {
-        "名称": "⻙荣菌属 Veillonella",
-        "丰度%": "ND",
-        "正常范围%": "0-8.9142",
-        "人群水平%": "7%"
+        "名称": "双歧杆菌目 Bifidobacteriales",
+        "丰度%": "0.240%",
+        "人群水平%": "51%",
+        "检出率%": "84.99%"
       },
       {
-        "名称": "单形拟杆菌 Bacteroides uniformis",
-        "丰度%": "0.0402",
-        "正常范围%": "0.0332-8.3187",
-        "人群水平%": "13%"
+        "名称": "丹毒丝菌目 Erysipelotrichales",
+        "丰度%": "0.178%",
+        "人群水平%": "54%",
+        "检出率%": "65.82%"
       },
       {
-        "名称": "普⽒栖粪杆菌 Faecalibacterium prausnitzii",
-        "丰度%": "3.0465",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "58%"
+        "名称": "肠杆菌目 Enterobacteriales",
+        "丰度%": "0.111%",
+        "人群水平%": "12%",
+        "检出率%": "87.83%"
       },
       {
-        "名称": "食葡糖罗斯拜瑞⽒菌 Roseburia inulinivorans",
-        "丰度%": "0.6958",
-        "正常范围%": "0.0165-4.9966",
-        "人群水平%": "76%"
-      }
-    ],
-    "过敏相关菌": [
-      {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.0202",
-        "正常范围%": "0-0.4212",
-        "人群水平%": "23%"
+        "名称": "Victivallales",
+        "丰度%": "0.037%",
+        "人群水平%": "94%",
+        "检出率%": "18.42%"
       },
       {
-        "名称": "枸橼酸杆菌属 Citrobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0668",
-        "人群水平%": "37%"
+        "名称": "疣微菌目 Verrucomicrobiales",
+        "丰度%": "0.013%",
+        "人群水平%": "57%",
+        "检出率%": "53.76%"
       },
       {
-        "名称": "克雷伯⽒菌属 Klebsiella",
-        "丰度%": "0.0132",
-        "正常范围%": "0-15.81",
-        "人群水平%": "24%"
+        "名称": "互养菌目 Synergistales",
+        "丰度%": "0.003%",
+        "人群水平%": "63%",
+        "检出率%": "24.61%"
       },
       {
-        "名称": "莫拉⽒菌属 Moraxella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0096",
-        "人群水平%": "80%"
+        "名称": "放线菌目 Actinomycetales",
+        "丰度%": "0.003%",
+        "人群水平%": "19%",
+        "检出率%": "58.40%"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "1.1285",
-        "正常范围%": "0-21.089",
-        "人群水平%": "8%"
+        "名称": "芽孢杆菌目 Bacillales",
+        "丰度%": "0.003%",
+        "人群水平%": "53%",
+        "检出率%": "42.30%"
+      }
+    ],
+    "菌科构成": [
+      {
+        "名称": "普雷沃氏菌科 Prevotellaceae",
+        "丰度%": "60.109%",
+        "人群水平%": "96%",
+        "检出率%": "90.33%"
       },
       {
-        "名称": "肠杆菌科 Enterobacteriaceae",
-        "丰度%": "0.0637",
-        "正常范围%": "0-64.256",
-        "人群水平%": "11%"
+        "名称": "拟杆菌科 Bacteroidaceae",
+        "丰度%": "13.968%",
+        "人群水平%": "45%",
+        "检出率%": "96.10%"
       },
       {
-        "名称": "活泼瘤胃球菌 Ruminococcus gnavus",
-        "丰度%": "0.0033",
-        "正常范围%": "0-2.583",
-        "人群水平%": "20%"
+        "名称": "瘤胃菌科 Ruminococcaceae",
+        "丰度%": "6.559%",
+        "人群水平%": "44%",
+        "检出率%": "96.52%"
       },
       {
-        "名称": "⽓单胞菌属 Aeromonas",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0334",
-        "人群水平%": "80%"
+        "名称": "母螺旋菌科 Lachnospiraceae",
+        "丰度%": "4.068%",
+        "人群水平%": "28%",
+        "检出率%": "98.03%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1206"
+        "名称": "理化所菌科 Rikenellaceae",
+        "丰度%": "1.037%",
+        "人群水平%": "88%",
+        "检出率%": "85.69%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "21%"
+        "名称": "乳杆菌科 Lactobacillaceae",
+        "丰度%": "0.743%",
+        "人群水平%": "93%",
+        "检出率%": "62.55%"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "41%"
+        "名称": "脱硫弧菌科 Desulfovibrionaceae",
+        "丰度%": "0.609%",
+        "人群水平%": "89%",
+        "检出率%": "58.79%"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "3.2406",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "59%"
+        "名称": "梭菌科 Clostridiaceae",
+        "丰度%": "0.434%",
+        "人群水平%": "74%",
+        "检出率%": "67.33%"
       },
       {
-        "名称": "丙酸杆菌属 Propionibacterium",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0162",
-        "人群水平%": "91%"
-      }
-    ],
-    "腹胀相关菌": [
+        "名称": "红蝽菌科 Coriobacteriaceae",
+        "丰度%": "0.280%",
+        "人群水平%": "78%",
+        "检出率%": "79.61%"
+      },
       {
-        "名称": "史⽒甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
+        "名称": "双歧杆菌科 Bifidobacteriaceae",
+        "丰度%": "0.240%",
+        "人群水平%": "51%",
+        "检出率%": "84.99%"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "13.2781",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "35%"
+        "名称": "卟啉单胞菌科 Porphyromonadaceae",
+        "丰度%": "0.181%",
+        "人群水平%": "29%",
+        "检出率%": "66.42%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.2787",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "23%"
+        "名称": "丹毒丝菌科 Erysipelotrichaceae",
+        "丰度%": "0.178%",
+        "人群水平%": "54%",
+        "检出率%": "65.82%"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.6504",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "66%"
+        "名称": "消化球菌科 Peptococcaceae",
+        "丰度%": "0.088%",
+        "人群水平%": "96%",
+        "检出率%": "25.00%"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "1.1285",
-        "正常范围%": "0-21.08931741",
-        "人群水平%": "8%"
+        "名称": "肠杆菌科 Enterobacteriaceae",
+        "丰度%": "0.064%",
+        "人群水平%": "11%",
+        "检出率%": "87.83%"
       },
       {
-        "名称": "艰难梭菌 Clostridium difficile",
-        "丰度%": "ND"
+        "名称": "食谷菌科 Victivallaceae",
+        "丰度%": "0.037%",
+        "人群水平%": "94%",
+        "检出率%": "18.42%"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "41%"
+        "名称": "消化链球菌科 Peptostreptococcaceae",
+        "丰度%": "0.037%",
+        "人群水平%": "93%",
+        "检出率%": "18.53%"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "60.0857",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "96%"
+        "名称": "克⾥斯滕森氏菌科 Christensenellaceae",
+        "丰度%": "0.023%",
+        "人群水平%": "73%",
+        "检出率%": "40.33%"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0100",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "7%"
+        "名称": "链球菌科 Streptococcaceae",
+        "丰度%": "0.010%",
+        "人群水平%": "17%",
+        "检出率%": "69.20%"
       },
       {
-        "名称": "蓝藻⻔ Cyanobacteria",
-        "丰度%": "ND",
-        "正常范围%": "0-0.052432984",
-        "人群水平%": "70%"
+        "名称": "放线菌科 Actinomycetaceae",
+        "丰度%": "0.003%",
+        "人群水平%": "27%",
+        "检出率%": "46.06%"
       },
       {
-        "名称": "产⽓荚膜梭菌 Clostridium perfringens",
-        "丰度%": "ND"
+        "名称": "草酸杆菌科 Oxalobacteraceae",
+        "丰度%": "0.003%",
+        "人群水平%": "63%",
+        "检出率%": "41.42%"
+      }
+    ],
+    "菌属构成": [
+      {
+        "名称": "普雷沃氏菌属 Prevotella",
+        "丰度%": "60.086%",
+        "人群水平%": "96%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "0.7434",
-        "正常范围%": "0.166-6.5835",
-        "人群水平%": "73%"
+        "名称": "拟杆菌属 Bacteroides",
+        "丰度%": "13.278%",
+        "人群水平%": "35%",
+        "检出率%": "99.04%"
       },
       {
-        "名称": "⽑螺旋菌科 Lachnospiraceae",
-        "丰度%": "4.0683",
-        "正常范围%": "0.8403-66.733",
-        "人群水平%": "28%"
+        "名称": "粪杆菌属 Faecalibacterium",
+        "丰度%": "3.241%",
+        "人群水平%": "59%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.2396",
-        "正常范围%": "0.1914-12.598",
-        "人群水平%": "50%"
-      }
-    ],
-    "失眠相关菌": [
+        "名称": "粪球菌属 Coprococcus",
+        "丰度%": "1.867%",
+        "人群水平%": "94%",
+        "检出率%": "86.06%"
+      },
       {
-        "名称": "阿克曼⽒菌属 Akkermansia",
-        "丰度%": "0.0135",
-        "正常范围%": "0.0018-7.8352",
-        "人群水平%": "49%"
+        "名称": "光岗氏菌属 Mitsuokella",
+        "丰度%": "1.776%",
+        "人群水平%": "99%",
+        "检出率%": "15.87%"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "13.2781",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "35%"
+        "名称": "瘤胃球菌属 Ruminococcus",
+        "丰度%": "1.650%",
+        "人群水平%": "66%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "梭菌目 Clostridiales",
-        "丰度%": "11.4727",
-        "正常范围%": "5.2999-89.2167",
-        "人群水平%": "20%"
+        "名称": "CAG-127",
+        "丰度%": "1.534%",
+        "人群水平%": "96%",
+        "检出率%": "58.65%"
       },
       {
-        "名称": "⻓双歧杆菌 Bifidobacterium longum",
-        "丰度%": "0.0270",
-        "正常范围%": "0-0.0996",
-        "人群水平%": "91%"
+        "名称": "罗氏菌属 Roseburia",
+        "丰度%": "1.130%",
+        "人群水平%": "57%",
+        "检出率%": "96.15%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1206"
+        "名称": "别样杆菌属 Alistipes",
+        "丰度%": "1.010%",
+        "人群水平%": "71%",
+        "检出率%": "91.83%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "21%"
+        "名称": "乳杆菌属 Lactobacillus",
+        "丰度%": "0.743%",
+        "人群水平%": "73%",
+        "检出率%": "91.83%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.2787",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "23%"
+        "名称": "副拟杆菌属 Parabacteroides",
+        "丰度%": "0.722%",
+        "人群水平%": "45%",
+        "检出率%": "95.19%"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "3.2406",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "59%"
+        "名称": "Mediterranea",
+        "丰度%": "0.690%",
+        "人群水平%": "99%",
+        "检出率%": "4.81%"
       },
       {
-        "名称": "Lachnoclostridium",
-        "丰度%": "0.2093",
-        "正常范围%": "0.117-6.2036",
-        "人群水平%": "27%"
+        "名称": "CAG-83",
+        "丰度%": "0.614%",
+        "人群水平%": "83%",
+        "检出率%": "76.44%"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "60.0857",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "96%"
+        "名称": "CAG-110",
+        "丰度%": "0.529%",
+        "人群水平%": "89%",
+        "检出率%": "71.15%"
       },
       {
-        "名称": "龙包茨⽒菌属 Romboutsia",
-        "丰度%": "0.0202"
+        "名称": "CAG-1000",
+        "丰度%": "0.493%",
+        "人群水平%": "99%",
+        "检出率%": "18.27%"
       },
       {
-        "名称": "0-0.0189",
-        "丰度%": "94%"
+        "名称": "脱硫弧菌属 Desulfovibrio",
+        "丰度%": "0.473%",
+        "人群水平%": "95%",
+        "检出率%": "33.65%"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0100",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "7%"
+        "名称": "CAG-180",
+        "丰度%": "0.459%",
+        "人群水平%": "72%",
+        "检出率%": "86.54%"
       },
       {
-        "名称": "炎症性肠炎",
-        "丰度%": "0.24"
+        "名称": "ER4",
+        "丰度%": "0.412%",
+        "人群水平%": "80%",
+        "检出率%": "60.58%"
       },
       {
-        "名称": "colitogenicbacteria in inflammatory bowel disease. \"Cell 158.5(2014): 1000-",
-        "丰度%": "1010"
+        "名称": "UBA11524",
+        "丰度%": "0.402%",
+        "人群水平%": "90%",
+        "检出率%": "49.52%"
       },
       {
-        "名称": "结直肠癌",
-        "丰度%": "0.26"
+        "名称": "颤螺菌属 Oscillospira",
+        "丰度%": "0.300%",
+        "人群水平%": "81%",
+        "检出率%": "87.50%"
+      }
+    ],
+    "菌种构成": [
+      {
+        "名称": "普氏菌 Prevotella copri",
+        "丰度%": "33.924%",
+        "人群水平%": "98%",
+        "检出率%": "98.56%"
       },
       {
-        "名称": "PeppelenboschNature Reviews Gastroenterology Hepatology 10.12 (2013): 741-",
-        "丰度%": "745."
+        "名称": "Prevotella sp000434975",
+        "丰度%": "18.505%",
+        "人群水平%": "90%",
+        "检出率%": "92.79%"
       },
       {
-        "名称": "肠易激综合征",
-        "丰度%": "0.18"
+        "名称": "粪便拟杆菌 Bacteroides stercoris",
+        "丰度%": "3.939%",
+        "人群水平%": "73%",
+        "检出率%": "97.12%"
       },
       {
-        "名称": "根据您的肠道菌群中肠易激综合征患者与健康⼈之间的差异菌群,分析了您的肠易激综合征⻛险,显⽰分值为",
-        "丰度%": "0.18"
+        "名称": "拟杆菌 Bacteroides coprophilus",
+        "丰度%": "3.335%",
+        "人群水平%": "98%",
+        "检出率%": "37.02%"
       },
       {
-        "名称": "感染性腹泻",
-        "丰度%": "0.16"
+        "名称": "普氏栖粪杆菌 Faecalibacterium prausnitzii",
+        "丰度%": "3.046%",
+        "人群水平%": "58%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "胃病",
-        "丰度%": "0.20"
+        "名称": "Prevotella sp002265625",
+        "丰度%": "2.815%",
+        "人群水平%": "99%",
+        "检出率%": "24.04%"
       },
       {
-        "名称": "肝病",
-        "丰度%": "0.21"
+        "名称": "粪居拟杆菌 Bacteroides coprocola",
+        "丰度%": "2.175%",
+        "人群水平%": "90%",
+        "检出率%": "79.33%"
       },
       {
-        "名称": "肾病",
-        "丰度%": "0.05"
+        "名称": "贾氏光岗氏菌 Mitsuokella jalaludinii",
+        "丰度%": "1.769%",
+        "人群水平%": "99%",
+        "检出率%": "5.77%"
       },
       {
-        "名称": "心脑⾎管疾病",
-        "丰度%": "0.37"
+        "名称": "普通拟杆菌 Bacteroides vulgatus",
+        "丰度%": "1.545%",
+        "人群水平%": "44%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "II型糖尿病",
-        "丰度%": "0.21"
+        "名称": "Prevotella sp002299635",
+        "丰度%": "1.446%",
+        "人群水平%": "95%",
+        "检出率%": "51.44%"
       },
       {
-        "名称": "抑郁症",
-        "丰度%": "0.27"
+        "名称": "Prevotella sp000436695",
+        "丰度%": "1.082%",
+        "人群水平%": "98%",
+        "检出率%": "15.38%"
       },
       {
-        "名称": "甲状腺疾病",
-        "丰度%": "0.33"
+        "名称": "规则粪球菌 Coprococcus eutactus",
+        "丰度%": "1.004%",
+        "人群水平%": "96%",
+        "检出率%": "42.31%"
       },
       {
-        "名称": "胆病",
-        "丰度%": "0.14"
+        "名称": "Ruminococcus bicirculans",
+        "丰度%": "0.983%",
+        "人群水平%": "92%",
+        "检出率%": "66.35%"
       },
       {
-        "名称": "肺部疾病",
-        "丰度%": "0.12"
+        "名称": "罗氏乳杆菌 Lactobacillus rogosae",
+        "丰度%": "0.737%",
+        "人群水平%": "80%",
+        "检出率%": "76.92%"
       },
       {
-        "名称": "⾃体免疫疾病",
-        "丰度%": "0.08"
+        "名称": "食葡糖罗斯拜瑞氏菌 Roseburia inulinivorans",
+        "丰度%": "0.696%",
+        "人群水平%": "76%",
+        "检出率%": "87.02%"
       },
       {
-        "名称": "碳水化合物",
-        "丰度%": "96"
+        "名称": "Mediterranea massiliensis",
+        "丰度%": "0.690%",
+        "人群水平%": "99%",
+        "检出率%": "3.85%"
       },
       {
-        "名称": "蛋白质",
-        "丰度%": "44"
+        "名称": "Coprococcus sp000154245",
+        "丰度%": "0.612%",
+        "人群水平%": "96%",
+        "检出率%": "28.85%"
       },
       {
-        "名称": "脂肪",
-        "丰度%": "71"
+        "名称": "腐烂别样杆菌 Alistipes putredinis",
+        "丰度%": "0.551%",
+        "人群水平%": "75%",
+        "检出率%": "79.33%"
       },
       {
-        "名称": "纤维素",
-        "丰度%": "96"
+        "名称": "CAG-83 sp000435555",
+        "丰度%": "0.534%",
+        "人群水平%": "83%",
+        "检出率%": "73.08%"
       },
       {
-        "名称": "乳制品",
-        "丰度%": "36"
+        "名称": "Parabacteroides sp000436495",
+        "丰度%": "0.497%",
+        "人群水平%": "99%",
+        "检出率%": "4.33%"
       }
     ]
+  },
+  "报告解读": {
+    "肠道年龄评估": "肠道菌群与众多的健康问题息息相关,需要了解健康就必须要了解自身的肠道菌群情况。其中有害菌过多⽽有\n益菌缺乏就可能导致菌群失衡、下面将从菌群平衡、菌群多样性、有益菌以及有害菌水平⼏个⽅面来评估您的肠道\n菌群总体状况。\n肠道菌群平衡\n肠道菌群是⼀个复杂的生态系统,通常健康⼈肠道菌群内有害菌不会过量繁殖,主要以中性菌和有益菌为主,\n并且维持在⼀定氏例范围内,如果有害菌和致病菌氏例过⾼或正常肠道菌群过低就会出现肠道菌群失衡,相应的就\n会出现腹泻、消化不良、免疫⼒下降等问题。\n肠道菌群平衡\n38\n中等\n菌群平衡对应的异常称为肠道菌群失调,临床上有I度失调和更严重的II度失调。本报告通过有益菌/有害菌的总\n体情况来评估菌群平衡状态,小于等于2:菌群II度失衡,2~5:菌群I度失衡,5~15:轻微失衡,15~60:中等,大\n于60:健康,同时分值也提⽰菌群平衡水平,越⾼越健康。\n菌群失衡如何调整?\n从菌群失衡的评估⻆度来看,⾸先就是快速增加有益菌特别是双歧杆菌的丰度可有效改善该项指标。因此临床\n上通常提供多联的益生菌制剂来快速补充益生菌,可以短期有效的改善菌群平衡氏例。\n饮食和健康状况以及药物都会对",
+    "健康总分解读": "健康总分\n57\n个别疾病⾼⻛险或多疾病提⽰注意菌群健康  76\n慢病控制  64\n营养均衡  30\n肠道菌群健康状况评估\n\n\n\n---PAGEBREAK---\n\n指标范围\n疾病风险评估\n炎症性肠炎\n0.24\n低⻛险\n结直肠癌\n0.26\n低⻛险\n肠易激综合征\n0.18\n低⻛险\n感染性腹泻\n0.16\n低⻛险\n胃病\n0.20\n低⻛险\n肝病\n0.21\n低⻛险\n胆病\n0.14\n低⻛险\n肾病\n0.05\n低⻛险\n心脑血管疾病\n0.37\n注意\nII型糖尿病\n0.21\n低⻛险\n抑郁症\n0.27\n低⻛险\n甲状腺疾病\n0.33\n注意\n肺部感染或疾病\n0.12\n低⻛险\n自体免疫病\n0.08\n低⻛险\n注:本检测仅用于健"
   }
 }

+ 860 - 538
docs/参考资料/530010234-侯.json

@@ -23,180 +23,256 @@
     {
       "名称": "炎症性肠炎",
       "数值": "0.28",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": ""
     },
     {
       "名称": "肠易激综合征",
       "数值": "0.13",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": "分析了您的肠易激综合征风险,显示分值为\n0.13\n您的风险值在0.3以下,风险较低,如果分值接近0.3仍然需要注意生活方式以及肠易激综合征风险因素"
     },
     {
       "名称": "感染性腹泻",
       "数值": "0.41",
-      "状态": "注意"
+      "状态": "注意",
+      "解读": ""
     },
     {
       "名称": "自闭症",
       "数值": "0.10",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": ""
     },
     {
       "名称": "抑郁症",
       "数值": "0.36",
-      "状态": "注意"
+      "状态": "注意",
+      "解读": ""
     },
     {
       "名称": "甲状腺疾病",
       "数值": "0.12",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": "分析了您的甲状腺疾病的疾病风险\n您的风险值在0.3以下,风险较低,如果分值接近0.3仍然需要注意生活方式以及发生甲状腺疾病风险因素"
     },
     {
       "名称": "肺部疾病",
       "数值": "0.13",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": "分析了您的肺部感染的风险\n您的风险值在0.3以下,风险较低,如果分值接近0.3仍然需要注意生活方式以及避免肺部疾病风险因素"
     },
     {
       "名称": "自体免疫病",
       "数值": "0.29",
-      "状态": "低风险"
+      "状态": "低风险",
+      "解读": "分析了您的自体免疫病风险\n您的风险值在0.3以下,自体免疫性疾病风险较低,绝大部分健康人分值均在0.3以下,但也有部分患者位于0.2"
+    },
+    {
+      "名称": "自体免疫疾病",
+      "数值": "0.29",
+      "状态": "低风险",
+      "解读": ""
     }
   ],
   "主要营养评估": [
     {
       "名称": "碳水化合物",
       "数值": "44",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的碳水化合物营养状况评估分值为44分,属于正常范\n围,保持现有饮食即可"
     },
     {
       "名称": "蛋白质",
       "数值": "93",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的蛋白质营养状况评估分值为93分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "脂肪",
       "数值": "59",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的脂肪营养状况评估分值为59分,属于正常范围,保持现有\n饮食即可"
     },
     {
       "名称": "纤维素",
       "数值": "58",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的纤维素营养状况评估分值为58分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "乳制品",
       "数值": "66",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的乳制品营养状况评估分值为66分,属于正常范围,保持\n现有饮食即可"
     }
   ],
   "氨基酸评估": [
+    {
+      "名称": "苏氨酸",
+      "数值": "14",
+      "状态": "偏低",
+      "解读": "您的苏氨酸营养状况评估分值为14分,有些偏低,建议在现\n有饮食中适当增加苏氨酸的摄入"
+    },
+    {
+      "名称": "异亮氨酸",
+      "数值": "83",
+      "状态": "正常",
+      "解读": "您的异亮氨酸营养状况评估分值为83分,属于正常范围,\n保持现有饮食即可"
+    },
+    {
+      "名称": "亮氨酸",
+      "数值": "52",
+      "状态": "正常",
+      "解读": "您的亮氨酸营养状况评估分值为52分,属于正常范围,保持\n现有饮食即可"
+    },
+    {
+      "名称": "赖氨酸",
+      "数值": "94",
+      "状态": "正常",
+      "解读": "您的赖氨酸营养状况评估分值为94分,属于正常范围,保持\n现有饮食即可"
+    },
+    {
+      "名称": "蛋氨酸",
+      "数值": "50",
+      "状态": "正常",
+      "解读": "您的蛋氨酸营养状况评估分值为50分,属于正常范围,保持\n现有饮食即可"
+    },
     {
       "名称": "胱氨酸",
       "数值": "97",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的胱氨酸营养状况评估分值为97分,表明您的胱氨酸摄入\n超过了绝大部分人群,建议限制亮胱氨酸入比例,均衡的营养配比更健康"
     },
     {
       "名称": "苯丙氨酸",
       "数值": "38",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的苯丙氨酸营养状况评估分值为38分,属于正常范围,\n保持现有饮食即可"
     },
     {
       "名称": "酪氨酸",
       "数值": "83",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的酪氨酸营养状况评估分值为83分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "缬氨酸",
       "数值": "75",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的缬氨酸营养状况评估分值为75分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "组氨酸",
       "数值": "74",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的组氨酸营养状况评估分值为74分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "丙氨酸",
       "数值": "9",
-      "状态": "偏低"
+      "状态": "偏低",
+      "解读": "您的丙氨酸营养状况评估分值为9分,有些偏低,建议在现有\n饮食中适当增加丙氨酸的摄入"
     },
     {
       "名称": "谷氨酸",
       "数值": "27",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的谷氨酸营养状况评估分值为27分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "甘氨酸",
       "数值": "38",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的甘氨酸营养状况评估分值为38分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "脯氨酸",
       "数值": "47",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的脯氨酸营养状况评估分值为47分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "丝氨酸",
       "数值": "88",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的丝氨酸营养状况评估分值为88分,属于正常范围,保持\n现有饮食即可"
     }
   ],
   "维生素评估": [
     {
       "名称": "维生素A",
       "数值": "74",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": ""
     },
     {
       "名称": "维生素B1",
       "数值": "38",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B1状况评估分值为38分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素B2",
       "数值": "32",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B2状况评估分值为32分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素B5",
       "数值": "26",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B5状况评估分值为26分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素B6",
       "数值": "62",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素B6状况评估分值为62分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "叶酸",
       "数值": "90",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的叶酸状况评估分值为90分,属于正常范围,保持现有饮食\n即可"
     },
     {
       "名称": "维生素B12",
       "数值": "14",
-      "状态": "偏低"
+      "状态": "偏低",
+      "解读": "您的维生素B12状况评估分值为14分,有些偏低,建议注意饮食,适当增加维生素B12的摄入"
     },
     {
       "名称": "维生素C",
       "数值": "22",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素C状况评估分值为22分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "维生素D",
       "数值": "16",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的维生素D状况评估分值为16分,属于正常范围,保持现有饮食即可"
+    },
+    {
+      "名称": "维生素K2",
+      "数值": "58",
+      "状态": "正常",
+      "解读": ""
     }
   ],
   "微量元素评估": [
     {
       "名称": "铁",
       "数值": "81",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的铁状况评估分值为81分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "锌",
       "数值": "73",
-      "状态": "正常"
+      "状态": "正常",
+      "解读": "您的锌状况评估分值为73分,属于正常范围,保持现有饮食即可"
     }
   ],
   "主要消化道致病菌": [
@@ -278,67 +354,78 @@
       "名称": "肠道炎症水平",
       "评估值": "36",
       "健康状况": "正常",
-      "正常范围": "0-80"
+      "正常范围": "0-80",
+      "解读": ""
     },
     {
       "名称": "肠道产气",
       "评估值": "58",
       "健康状况": "轻度产气",
-      "正常范围": "0-50"
+      "正常范围": "0-50",
+      "解读": ""
     },
     {
       "名称": "肠道屏障",
       "评估值": "49",
       "健康状况": "正常",
-      "正常范围": "15-100"
+      "正常范围": "15-100",
+      "解读": ""
     },
     {
       "名称": "脂多糖LPS",
       "评估值": "53",
       "健康状况": "正常",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "次级胆汁酸",
       "评估值": "48",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "对甲酚(p-Cresol)",
       "评估值": "89",
       "健康状况": "过多",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "吲哚",
       "评估值": "56",
       "健康状况": "正常",
-      "正常范围": "15-90"
+      "正常范围": "15-90",
+      "解读": ""
     },
     {
       "名称": "苯酚",
       "评估值": "51",
       "健康状况": "正常",
-      "正常范围": "0-85"
+      "正常范围": "0-85",
+      "解读": ""
     },
     {
       "名称": "腐胺",
       "评估值": "59",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     },
     {
       "名称": "硫化氢",
       "评估值": "34",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     },
     {
       "名称": "尸胺",
       "评估值": "38",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     }
   ],
   "短链脂肪酸": [
@@ -346,25 +433,29 @@
       "名称": "丁酸盐(Butyrate)",
       "评估值": "31",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": "您的丁酸盐状况评估分值为31\n分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "丙酸盐(Propionate)",
       "评估值": "79",
       "健康状况": "正常",
-      "正常范围": "15-90"
+      "正常范围": "15-90",
+      "解读": "您的丙酸盐状况评估分值为79\n分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "乙酸盐(Acetate)",
       "评估值": "17",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": "您的乙酸盐状况评估分值为17\n分,属于正常范围,保持现有饮食即可"
     },
     {
       "名称": "异戊酸盐(Isovaleric)",
       "评估值": "12",
       "健康状况": "正常",
-      "正常范围": "5-85"
+      "正常范围": "5-85",
+      "解读": ""
     }
   ],
   "神经递质及激素": [
@@ -372,67 +463,78 @@
       "名称": "血清素(5-HT)",
       "评估值": "24",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "γ-氨基丁酸(GABA)",
       "评估值": "26",
       "健康状况": "正常",
-      "正常范围": "15-85"
+      "正常范围": "15-85",
+      "解读": ""
     },
     {
       "名称": "谷氨酸(Glutamate)",
       "评估值": "27",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": "您的谷氨酸营养状况评估分值为27分,属于正常范围,保持\n现有饮食即可"
     },
     {
       "名称": "色氨酸(Tryptophan)",
       "评估值": "48",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "DOPAC",
       "评估值": "41",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "多巴胺",
       "评估值": "98",
       "健康状况": "过多",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "组胺(Histamine)",
       "评估值": "91",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "一氧化氮",
       "评估值": "44",
       "健康状况": "正常",
-      "正常范围": "15-95"
+      "正常范围": "15-95",
+      "解读": ""
     },
     {
       "名称": "喹啉(Quinolinic)",
       "评估值": "77",
       "健康状况": "正常",
-      "正常范围": "0-95"
+      "正常范围": "0-95",
+      "解读": ""
     },
     {
       "名称": "维生素K2",
       "评估值": "58",
       "健康状况": "正常",
-      "正常范围": "15-99"
+      "正常范围": "15-99",
+      "解读": ""
     },
     {
       "名称": "肌醇(Inositol)",
       "评估值": "53",
       "健康状况": "正常",
-      "正常范围": "15-99"
+      "正常范围": "15-99",
+      "解读": ""
     }
   ],
   "个体化食物推荐表": {
@@ -3162,7 +3264,7 @@
       {
         "名称": "1.0292-55.9251",
         "丰度%": "92%",
-        "检出率%": "99.04%",
+        "人群水平%": "99.04%",
         "说明": "说明:基石菌,消化蔬菜和谷食,蛋白,降解复杂多糖,交叉喂养关键菌,维持免疫和肠道稳态,"
       },
       {
@@ -3188,7 +3290,7 @@
       {
         "名称": "5.1543-18.1656",
         "丰度%": "45%",
-        "检出率%": "98.08%",
+        "人群水平%": "98.08%",
         "说明": "说明:基石菌,丁酸生产菌,下一代"
       },
       {
@@ -3198,9 +3300,57 @@
       {
         "名称": "0.3366-3.237",
         "丰度%": "31%",
-        "检出率%": "97.60%",
+        "人群水平%": "97.60%",
         "说明": "说明:消化复合碳水化合物,健康菌,偏低与炎症肠病,营养不良相关,减肥有效菌,缓解炎症性疾病和代谢疾病,"
       },
+      {
+        "名称": "戴阿利斯特杆菌属 Dialister",
+        "丰度%": "5.1930",
+        "正常范围%": "0-13.9606",
+        "人群水平%": "94%",
+        "检出率%": "96.15%",
+        "说明": "说明:代谢碳水化合物、产短链脂肪酸,许多种都可能导致感染,但是抑郁症患者缺乏,关节炎患者富集,"
+      },
+      {
+        "名称": "罗氏菌属 Roseburia",
+        "丰度%": "2.4976",
+        "正常范围%": "2.0832-31.457",
+        "人群水平%": "76%",
+        "检出率%": "96.15%",
+        "说明": "说明:基石菌,产丁酸,丙酸,乙酸,影响结肠运动,具抗炎特性,分解不可消化的碳水化合物,百岁老人富集,抗炎,"
+      },
+      {
+        "名称": "直肠真杆菌属 Agathobacter",
+        "丰度%": "1.2204",
+        "正常范围%": "0-10.7816",
+        "人群水平%": "72%",
+        "检出率%": "95.67%",
+        "说明": "说明:可利用抗性淀粉,具有抗炎和调节免疫功能的作用,类风湿性关节炎和溃疡性结肠炎人群显著减少。"
+      },
+      {
+        "名称": "吉米菌属 Gemmiger",
+        "丰度%": "1.5180",
+        "正常范围%": "0-5.149",
+        "人群水平%": "77%",
+        "检出率%": "95.67%",
+        "说明": "说明:健康饮食,高果蔬、谷物及豆类饮食含量高,与雄激素分泌相关,缓解便秘,与脂肪堆积分布负相关,"
+      },
+      {
+        "名称": "副拟杆菌属 Parabacteroides",
+        "丰度%": "0.9561",
+        "正常范围%": "0-5.433",
+        "人群水平%": "52%",
+        "检出率%": "95.19%",
+        "说明": "说明:帮助糖脂代谢,改善高脂影响,产生强大的降解酶,参与胆碱代谢,顺产宝宝和长寿老人肠道丰富,"
+      },
+      {
+        "名称": "另枝菌属 Alistipes",
+        "丰度%": "0.0133",
+        "正常范围%": "0-20.1524",
+        "人群水平%": "16%",
+        "检出率%": "91.83%",
+        "说明": "说明:耐胆汁酸菌,丙酸,乙酸生产者,参与腐败途径产生氨、H2S、甲酚、吲哚和苯酚,诱发结直肠癌,"
+      },
       {
         "名称": "毛螺菌属 Lachnospira",
         "丰度%": "0.2574",
@@ -3244,46 +3394,106 @@
     ],
     "益生菌": [
       {
-        "名称": "拟杆菌门 Bacteroidetes",
-        "丰度%": "59.687%",
-        "人群水平%": "82%",
-        "检出率%": "98.03%"
+        "名称": "乳杆菌属 Lactobacillus",
+        "丰度%": "1.705%",
+        "人群水平%": "85%",
+        "检出率%": "91.83%"
       },
       {
-        "名称": "厚壁菌门 Firmicutes",
-        "丰度%": "28.886%",
-        "人群水平%": "38%",
-        "检出率%": "98.95%"
+        "名称": "罗氏乳杆菌 Lactobacillus rogosae",
+        "丰度%": "1.210%",
+        "人群水平%": "86%",
+        "检出率%": "76.92%"
       },
       {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "10.499%",
-        "人群水平%": "57%",
-        "检出率%": "93.53%"
+        "名称": "罗伊氏乳杆菌 Lactobacillus reuteri",
+        "丰度%": "0.495%",
+        "人群水平%": "99%",
+        "检出率%": "0.96%"
       },
       {
-        "名称": "放线菌门 Actinobacteria",
-        "丰度%": "0.454%",
-        "人群水平%": "47%",
-        "检出率%": "94.62%"
+        "名称": "双歧杆菌属 Bifidobacterium",
+        "丰度%": "0.297%",
+        "人群水平%": "53%",
+        "检出率%": "97.12%"
       },
       {
-        "名称": "螺旋体 Spirochaetes",
-        "丰度%": "0.211%",
-        "人群水平%": "99%",
-        "检出率%": "4.04%"
+        "名称": "青春双歧杆菌 Bifidobacterium adolescentis",
+        "丰度%": "0.067%",
+        "人群水平%": "94%",
+        "检出率%": "95.67%"
+      },
+      {
+        "名称": "长双歧杆菌 Bifidobacterium longum",
+        "丰度%": "0.067%",
+        "人群水平%": "96%",
+        "检出率%": "73.08%"
+      },
+      {
+        "名称": "高卢双歧杆菌 Bifidobacterium gallicum",
+        "丰度%": "0.003%",
+        "人群水平%": "68%",
+        "检出率%": "81.73%"
+      },
+      {
+        "名称": "双歧双歧杆菌 Bifidobacterium bifidum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "链状双歧杆菌 Bifidobacterium catenulatum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "假长双歧杆菌 Bifidobacterium pseudolongum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "排泄物双岐杆菌 Bifidobacterium stercoris",
+        "丰度%": "ND"
       },
       {
-        "名称": "厚壁菌/拟杆菌32.6%",
-        "丰度%": "67.4%"
+        "名称": "副干酪乳杆菌 Lactobacillus paracasei",
+        "丰度%": "ND"
       },
       {
-        "名称": "您的厚壁菌比拟杆菌比值为:",
-        "丰度%": "0.48"
+        "名称": "植物乳杆菌 Lactobacillus plantarum",
+        "丰度%": "ND"
       },
       {
-        "名称": "核心菌属",
-        "丰度%": "77"
+        "名称": "约氏乳杆菌 Lactobacillus johnsonii",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "瑞士乳杆菌 Lactobacillus helveticus",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "动物双歧杆菌 Bifidobacterium animalis",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "德氏乳酸乳杆菌 Lactobacillus delbrueckii",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "发酵乳杆菌 Lactobacillus fermentum",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "嗜酸乳杆菌 Lactobacillus acidophilus",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "短双歧杆菌 Bifidobacterium breve",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "鼠李糖乳杆菌 Lactobacillus rhamnosus",
+        "丰度%": "ND"
+      },
+      {
+        "名称": "短乳杆菌 Lactobacillus brevis",
+        "丰度%": "ND"
       }
     ],
     "有害菌属": [
@@ -3325,710 +3535,822 @@
         "正常范围%": "0-0.0066",
         "人群水平%": "96%",
         "检出率%": "7.69%",
-        "说明": "说明:好氧菌,腹泻致病菌,与河流海洋污染相关的潜在"
-      }
-    ],
-    "其它重要菌属": [
-      {
-        "名称": "柯林斯氏菌属 Collinsella",
-        "丰度%": "ND",
-        "正常范围%": "0-5.7436",
-        "人群水平%": "15%",
-        "检出率%": "90.38%",
-        "说明": "说明:产气菌,与脂质代谢及心脑血管相关,过多可导致菌群紊乱,部分"
-      }
-    ],
-    "病原菌属": [],
-    "病原菌检出": [],
-    "肥胖相关菌": [
+        "说明": "说明:好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,人畜共患菌"
+      },
       {
-        "名称": "厚壁菌门 Firmicutes",
-        "丰度%": "28.8863",
-        "正常范围%": "19.3377-90.0565",
-        "人群水平%": "38%"
+        "名称": "厌氧螺菌 Anaerobiospirillum",
+        "丰度%": "ND"
       },
       {
-        "名称": "阿德勒氏菌属 Adlercreutzia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.004",
-        "人群水平%": "90%"
+        "名称": "99%",
+        "丰度%": "0.00%",
+        "说明": "说明:引起腹泻,感染,常见于猫狗体内,过多会导致菌群紊乱"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.2973",
-        "正常范围%": "0.1914-12.598",
-        "人群水平%": "53%"
+        "名称": "肠球菌属 Enterococcus",
+        "丰度%": "0.0033",
+        "正常范围%": "0-1.1362",
+        "人群水平%": "51%",
+        "检出率%": "81.25%",
+        "说明": "说明:常见上呼吸道,口腔或肠道的常居菌,也分布在畜、禽养殖环境,饲料或肠道,抑菌调节肠道菌群,"
       },
       {
-        "名称": "嗜胆菌属 Bilophila",
-        "丰度%": "0.2474",
-        "正常范围%": "0-0.3348",
-        "人群水平%": "82%"
+        "名称": "奈瑟氏菌属 Neisseria",
+        "丰度%": "0.0033",
+        "正常范围%": "0-0.05",
+        "人群水平%": "87%",
+        "检出率%": "46.15%",
+        "说明": "说明:部分为人体病原菌,口腔,唾液,鼻腔,肺部正常菌,需氧,对干燥、热、消毒剂敏感,"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
+        "名称": "不动杆菌属 Acinetobacter",
+        "丰度%": "0.0066",
+        "正常范围%": "0-0.2475",
+        "人群水平%": "70%",
+        "检出率%": "45.19%",
+        "说明": "说明:条件致病菌,医院感染病原体之一,尤其ICU,易引起呼吸道感染、泌尿道感染、创伤感染,"
       },
       {
-        "名称": "埃希氏菌属 Escherichia",
-        "丰度%": "0.2039",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "28%"
+        "名称": "假单胞菌属 Pseudomonas",
+        "丰度%": "0.0200",
+        "正常范围%": "0-0.0864",
+        "人群水平%": "79%",
+        "检出率%": "45.19%",
+        "说明": "说明:属于变形菌门,在环境中广泛存在,代谢多变适应力强,好氧或微需,会导致感染和食物变质,医院获得性感染主要原因,"
       },
       {
         "名称": "霍尔德曼氏菌属 Holdemania",
         "丰度%": "ND",
         "正常范围%": "0-0.0378",
-        "人群水平%": "50%"
+        "人群水平%": "50%",
+        "检出率%": "29.33%",
+        "说明": "说明:肠道共生菌,降解黏蛋白,机会致病菌,少数研究表明与痛风正相关,帕金森,双向情感障碍,过敏,抑郁患者富集"
+      }
+    ],
+    "其它重要菌属": [
+      {
+        "名称": "柯林斯氏菌属 Collinsella",
+        "丰度%": "ND",
+        "正常范围%": "0-5.7436",
+        "人群水平%": "15%",
+        "检出率%": "90.38%",
+        "说明": "说明:产气菌,与脂质代谢及心脑血管相关,过多可导致菌群紊乱,部分病原菌"
       },
       {
-        "名称": "巨单胞菌属 Megamonas",
-        "丰度%": "0.1404",
-        "正常范围%": "0-21.672",
-        "人群水平%": "65%"
+        "名称": "嗜胆菌属 Bilophila",
+        "丰度%": "0.2474",
+        "正常范围%": "0-0.3348",
+        "人群水平%": "82%",
+        "检出率%": "66.83%",
+        "说明": "说明:条件致病菌,与耐胆汁酸和脂肪摄入相关,便秘人群丰度更高"
       },
       {
-        "名称": "震颤杆菌属 Oscillibacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0738",
-        "人群水平%": "51%"
+        "名称": "Flavonifractor",
+        "丰度%": "0.2039",
+        "正常范围%": "0-0.415",
+        "人群水平%": "80%",
+        "检出率%": "91.83%",
+        "说明": "说明:参与肠道儿茶素代谢,减轻免疫反应,产丁酸"
       },
       {
-        "名称": "丹毒丝菌科 Erysipelotrichaceae",
-        "丰度%": "0.2606",
-        "正常范围%": "0-1.644365119",
-        "人群水平%": "63%"
+        "名称": "Dorea菌属 Dorea",
+        "丰度%": "1.2638",
+        "正常范围%": "0.0144-2.49",
+        "人群水平%": "97%",
+        "检出率%": "89.42%",
+        "说明": "说明:消化碳水化合物,多发性硬化症、炎症性肠病、结直肠癌、自闭症谱系障碍以及肥胖人群中高丰度富集,"
       },
       {
-        "名称": "红蝽菌科 Coriobacteriaceae",
-        "丰度%": "ND",
-        "正常范围%": "0-5.852020025",
-        "人群水平%": "17%"
+        "名称": "亨盖特氏菌属 Hungatella",
+        "丰度%": "0.0267",
+        "正常范围%": "0-0.8235",
+        "人群水平%": "32%",
+        "检出率%": "89.42%",
+        "说明": "说明:参与生成氧化三甲胺和牛磺酸。"
       },
       {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.5985"
+        "名称": "颤螺菌属 Oscillospira",
+        "丰度%": "0.4915",
+        "正常范围%": "0.0126-0.8558",
+        "人群水平%": "90%",
+        "检出率%": "87.50%",
+        "说明": "说明:基石菌、核心菌群,帮助消化抗性淀粉,产丁酸,并在大肠中发酵。与儿童过敏和肥胖呈负相关。"
       },
       {
-        "名称": "0-0.4212",
-        "丰度%": "70%"
+        "名称": "枸橼酸杆菌属 Citrobacter",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0668",
+        "人群水平%": "37%",
+        "检出率%": "78.37%",
+        "说明": "说明:常见菌,免疫力下降可能引发感染。"
       },
       {
-        "名称": "牙龈卟啉单胞菌 Porphyromonas gingivalis",
+        "名称": "Akkermansia",
         "丰度%": "ND"
-      }
-    ],
-    "便秘相关菌": [
-      {
-        "名称": "史氏甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
       },
       {
-        "名称": "粪球菌属 Coprococcus",
-        "丰度%": "0.0501",
-        "正常范围%": "0-3.618",
-        "人群水平%": "40%"
+        "名称": "0.0018-7.8352",
+        "丰度%": "35%",
+        "人群水平%": "74.52%",
+        "说明": "说明:基石菌,可降解淀粉,黏蛋白降解菌,可控制体重,改善代谢和炎症,过多导致肠粘膜屏障破坏。 | 改善方式:高多酚食品、茶多酚、白藜芦醇、浆果、樱桃、李子、黑巧克力、热带水果、膳食纤维、生酮饮食、鱼油、减少酒精摄入"
       },
       {
-        "名称": "埃希氏菌属 Escherichia",
-        "丰度%": "0.2039",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "28%"
+        "名称": "肠杆菌属 Enterobacter",
+        "丰度%": "ND",
+        "正常范围%": "0-0.083",
+        "人群水平%": "42%",
+        "检出率%": "63.46%",
+        "说明": "说明:产酸产气,不引起腹泻,机会性感染,过多导致菌群紊乱和肥胖。"
       },
       {
-        "名称": "毛螺菌属 Lachnospira",
-        "丰度%": "0.2574",
-        "正常范围%": "0-4.805",
-        "人群水平%": "65%"
+        "名称": "苏黎世杆菌属 Turicibacter",
+        "丰度%": "ND",
+        "正常范围%": "0-0.2352",
+        "人群水平%": "52%",
+        "检出率%": "49.52%",
+        "说明": "说明:发酵生成乳酸,参与肌肉和疲劳调节。"
       },
       {
-        "名称": "厌氧棍状菌属 Anaerotruncus",
+        "名称": "丁酸弧菌属 Butyrivibrio",
         "丰度%": "ND",
-        "正常范围%": "0-0.1328",
-        "人群水平%": "53%"
+        "正常范围%": "0-0.8134",
+        "人群水平%": "70%",
+        "检出率%": "35.58%",
+        "说明": "说明:利用纤维素、淀粉和其他多聚糖生成丁酸,有助于维持肠道上皮,发挥抗炎、抗氧化作用。可调节体内的氨水平,影响免疫。"
       },
       {
-        "名称": "葡萄球菌属 Staphylococcus",
+        "名称": "克里斯滕森氏菌属 Christensenella",
         "丰度%": "ND",
-        "正常范围%": "0-0.0105",
-        "人群水平%": "78%"
+        "正常范围%": "0-0.0072",
+        "人群水平%": "82%",
+        "检出率%": "5.77%",
+        "说明": "说明:过多:肥胖,代谢综合征,包括高血压、高血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗"
+      }
+    ],
+    "病原菌属": [
+      {
+        "名称": "嗜血杆菌属 Haemophilus",
+        "丰度%": "0.1035",
+        "正常范围%": "0-0.7752",
+        "人群水平%": "74%",
+        "检出率%": "94.23%",
+        "说明": "说明:病原菌,过多可导致菌群紊乱,可引发呼吸道感染,常见于呼吸道感染"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.9629",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "84%"
+        "名称": "沙门氏菌属 Salmonella",
+        "丰度%": "ND",
+        "正常范围%": "0-0.4104",
+        "人群水平%": "27%",
+        "检出率%": "87.98%",
+        "说明": "说明:是引起食物中毒和肠道感染的常见病原菌之一"
       },
       {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.5985"
+        "名称": "萨特氏菌属 Sutterella",
+        "丰度%": "3.5079"
       },
       {
-        "名称": "0-0.4212",
-        "丰度%": "70%"
+        "名称": "0-2.266",
+        "丰度%": "98%",
+        "人群水平%": "81.73%",
+        "说明": "说明:肠道共生菌,潜在病原菌,自闭症相关,减少IgA | 改善方式:岩藻多糖、乳杆菌补充、聚甘露糖醛酸、高脂肪饮食、绿茶"
       },
       {
-        "名称": "卵形拟杆菌 Bacteroides ovatus",
-        "丰度%": "6.5138"
+        "名称": "棒杆菌属 Corynebacterium",
+        "丰度%": "ND",
+        "正常范围%": "0-0.2646",
+        "人群水平%": "99%",
+        "检出率%": "52.88%",
+        "说明": "说明:可导致急性腹泻、腹痛、恶心"
       },
       {
-        "名称": "0.0005-1.4154",
-        "丰度%": "99%"
+        "名称": "气单胞菌属 Aeromonas",
+        "丰度%": "ND",
+        "正常范围%": "0-0.0334",
+        "人群水平%": "80%",
+        "检出率%": "29.33%",
+        "说明": "说明:病原菌"
       },
       {
-        "名称": "下水道菌属 Cloacibacillus",
+        "名称": "葡萄球菌属 Staphylococcus",
         "丰度%": "ND",
-        "正常范围%": "0-0.0468",
-        "人群水平%": "72%"
+        "正常范围%": "0-0.0105",
+        "人群水平%": "78%",
+        "检出率%": "17.31%",
+        "说明": "说明:利用碳水化合物或氨基酸,产生乳酸。部分产生毒素,如金黄色葡萄球菌,可能引发肠道炎症、并影响肠道屏障功能"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
+        "名称": "Vibrio",
+        "丰度%": "ND"
       },
       {
-        "名称": "肠杆菌属 Enterobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.083",
-        "人群水平%": "42%"
+        "名称": "99%",
+        "丰度%": "8.17%",
+        "说明": "说明:条件致病菌"
       },
       {
-        "名称": "Erysipelatoclostridium",
-        "丰度%": "0.3812",
-        "正常范围%": "0-1.0458",
-        "人群水平%": "86%"
+        "名称": "脆弱拟杆菌 Bacteroides fragilis",
+        "丰度%": "0.599%",
+        "人群水平%": "70%",
+        "检出率%": "93.27%"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "1.8959",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "45%"
+        "名称": "沃氏嗜胆菌 Bilophila wadsworthia",
+        "丰度%": "0.247%",
+        "人群水平%": "82%",
+        "检出率%": "66.83%"
       },
       {
-        "名称": "梭杆菌属 Fusobacterium",
-        "丰度%": "ND",
-        "正常范围%": "0-1.21",
-        "人群水平%": "37%"
+        "名称": "血链球菌 Streptococcus sanguinis",
+        "丰度%": "0.053%",
+        "人群水平%": "97%",
+        "检出率%": "43.27%"
       },
       {
-        "名称": "霍尔德曼穆尔菌属 Holdemanella",
-        "丰度%": "1.9496"
+        "名称": "铜绿假单胞菌 Pseudomonas aeruginosa",
+        "丰度%": "0.020%",
+        "人群水平%": "92%",
+        "检出率%": "12.98%"
       },
       {
-        "名称": "0-0.2904",
-        "丰度%": "99%"
+        "名称": "口腔放线菌 Actinomyces oris",
+        "丰度%": "0.007%",
+        "人群水平%": "95%",
+        "检出率%": "25.96%"
+      }
+    ],
+    "病原菌检出": [
+      {
+        "名称": "脆弱拟杆菌 Bacteroides fragilis",
+        "丰度%": "0.599%",
+        "人群水平%": "70%",
+        "检出率%": "93.27%"
       },
       {
-        "名称": "霍尔德曼氏菌属 Holdemania",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "50%"
+        "名称": "沃氏嗜胆菌 Bilophila wadsworthia",
+        "丰度%": "0.247%",
+        "人群水平%": "82%",
+        "检出率%": "66.83%"
       },
       {
-        "名称": "巨球形菌属 Megasphaera",
-        "丰度%": "ND",
-        "正常范围%": "0-0.1971",
-        "人群水平%": "28%"
+        "名称": "血链球菌 Streptococcus sanguinis",
+        "丰度%": "0.053%",
+        "人群水平%": "97%",
+        "检出率%": "43.27%"
       },
       {
-        "名称": "臭气杆菌属 Odoribacter",
-        "丰度%": "0.0501",
-        "正常范围%": "0-1.1786",
-        "人群水平%": "61%"
+        "名称": "铜绿假单胞菌 Pseudomonas aeruginosa",
+        "丰度%": "0.020%",
+        "人群水平%": "92%",
+        "检出率%": "12.98%"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.9561",
-        "正常范围%": "0-5.433",
-        "人群水平%": "52%"
+        "名称": "口腔放线菌 Actinomyces oris",
+        "丰度%": "0.007%",
+        "人群水平%": "95%",
+        "检出率%": "25.96%"
+      }
+    ],
+    "菌纲构成": [
+      {
+        "名称": "拟杆菌纲 Bacteroidia",
+        "丰度%": "59.687%",
+        "人群水平%": "82%",
+        "检出率%": "98.00%"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "0.5747",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "34%"
+        "名称": "梭菌纲 Clostridia",
+        "丰度%": "16.843%",
+        "人群水平%": "26%",
+        "检出率%": "98.87%"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.2973",
-        "正常范围%": "0.1914-12.598",
-        "人群水平%": "53%"
+        "名称": "γ-变形菌纲 Gammaproteobacteria",
+        "丰度%": "6.631%",
+        "人群水平%": "55%",
+        "检出率%": "88.68%"
       },
       {
-        "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "1.7054",
-        "正常范围%": "0.166-6.5835",
-        "人群水平%": "85%"
+        "名称": "β-变形菌纲 Betaproteobacteria",
+        "丰度%": "3.615%",
+        "人群水平%": "89%",
+        "检出率%": "74.47%"
       },
       {
-        "名称": "阿克曼氏菌属 Akkermansia",
-        "丰度%": "ND"
+        "名称": "芽孢杆菌纲 Bacilli",
+        "丰度%": "2.949%",
+        "人群水平%": "88%",
+        "检出率%": "86.08%"
       },
       {
-        "名称": "0.0018-7.8352",
-        "丰度%": "35%"
+        "名称": "放线杆菌纲 Actinobacteria",
+        "丰度%": "0.411%",
+        "人群水平%": "54%",
+        "检出率%": "87.94%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1869"
+        "名称": "Erysipelotrichi",
+        "丰度%": "0.261%",
+        "人群水平%": "63%",
+        "检出率%": "68.47%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "31%"
+        "名称": "德耳塔变形杆菌纲 Deltaproteobacteria",
+        "丰度%": "0.247%",
+        "人群水平%": "70%",
+        "检出率%": "60.76%"
       },
       {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.4876",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "25%"
+        "名称": "红蝽菌纲 Coriobacteriia",
+        "丰度%": "0.043%",
+        "人群水平%": "47%",
+        "检出率%": "79.61%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
+        "名称": "艾普西隆变形杆菌纲 Epsilonproteobacteria",
+        "丰度%": "0.003%",
+        "人群水平%": "64%",
+        "检出率%": "45.22%"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "0.5747",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "34%"
+        "名称": "α-变形菌纲 Alphaproteobacteria",
+        "丰度%": "0.003%",
+        "人群水平%": "48%",
+        "检出率%": "50.14%"
       }
     ],
-    "抑郁相关菌": [
+    "菌目构成": [
       {
-        "名称": "脱硫弧菌属 Desulfovibrio",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0999",
-        "人群水平%": "51%"
+        "名称": "拟杆菌目 Bacteroidales",
+        "丰度%": "59.687%",
+        "人群水平%": "82%",
+        "检出率%": "98.00%"
       },
       {
-        "名称": "另枝菌属 Alistipes",
-        "丰度%": "0.0133",
-        "正常范围%": "0-20.1524",
-        "人群水平%": "16%"
+        "名称": "梭菌目 Clostridiales",
+        "丰度%": "13.533%",
+        "人群水平%": "22%",
+        "检出率%": "98.87%"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "58.0864"
+        "名称": "伯克氏菌目 Burkholderiales",
+        "丰度%": "3.611%",
+        "人群水平%": "90%",
+        "检出率%": "74.19%"
       },
       {
-        "名称": "1.0292-55.9251",
-        "丰度%": "92%"
+        "名称": "乳杆菌目 Lactobacillales",
+        "丰度%": "2.915%",
+        "人群水平%": "89%",
+        "检出率%": "85.51%"
       },
       {
-        "名称": "埃希氏菌属 Escherichia",
-        "丰度%": "0.2039",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "28%"
+        "名称": "双歧杆菌目 Bifidobacteriales",
+        "丰度%": "0.297%",
+        "人群水平%": "54%",
+        "检出率%": "84.99%"
       },
       {
-        "名称": "解黄酮菌属 Flavonifractor",
-        "丰度%": "0.2039",
-        "正常范围%": "0-0.415",
-        "人群水平%": "80%"
+        "名称": "丹毒丝菌目 Erysipelotrichales",
+        "丰度%": "0.261%",
+        "人群水平%": "63%",
+        "检出率%": "65.82%"
       },
       {
-        "名称": "震颤杆菌属 Oscillibacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0738",
-        "人群水平%": "51%"
+        "名称": "肠杆菌目 Enterobacteriales",
+        "丰度%": "0.257%",
+        "人群水平%": "18%",
+        "检出率%": "87.83%"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.9561",
-        "正常范围%": "0-5.433",
-        "人群水平%": "52%"
+        "名称": "脱硫弧菌目 Desulfovibrionales",
+        "丰度%": "0.247%",
+        "人群水平%": "70%",
+        "检出率%": "58.79%"
       },
       {
-        "名称": "放线菌属 Actinomyces",
-        "丰度%": "0.0868"
+        "名称": "巴斯德式菌目 Pasteurellales",
+        "丰度%": "0.103%",
+        "人群水平%": "77%",
+        "检出率%": "52.81%"
       },
       {
-        "名称": "0-0.0756",
-        "丰度%": "90%"
+        "名称": "放线菌目 Actinomycetales",
+        "丰度%": "0.093%",
+        "人群水平%": "78%",
+        "检出率%": "58.40%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1869"
+        "名称": "红蝽菌目 Coriobacteriales",
+        "丰度%": "0.043%",
+        "人群水平%": "47%",
+        "检出率%": "79.61%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "31%"
+        "名称": "芽孢杆菌目 Bacillales",
+        "丰度%": "0.033%",
+        "人群水平%": "85%",
+        "检出率%": "42.30%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
+        "名称": "假单胞细菌目 Pseudomonadales",
+        "丰度%": "0.027%",
+        "人群水平%": "76%",
+        "检出率%": "47.54%"
       },
       {
-        "名称": "爱格士氏菌属 Eggerthella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0166",
-        "人群水平%": "55%"
+        "名称": "弯曲杆菌目 Campylobacterales",
+        "丰度%": "0.003%",
+        "人群水平%": "64%",
+        "检出率%": "45.22%"
       },
       {
-        "名称": "嗜血杆菌属 Haemophilus",
-        "丰度%": "0.1035",
-        "正常范围%": "0-0.7752",
-        "人群水平%": "74%"
+        "名称": "黄单胞菌目 Xanthomonadales",
+        "丰度%": "0.003%",
+        "人群水平%": "82%",
+        "检出率%": "27.67%"
       },
       {
-        "名称": "霍尔德曼氏菌属 Holdemania",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "50%"
+        "名称": "根瘤菌目 Rhizobiales",
+        "丰度%": "0.003%",
+        "人群水平%": "70%",
+        "检出率%": "33.09%"
       },
       {
-        "名称": "克雷伯氏菌属 Klebsiella",
-        "丰度%": "0.0066",
-        "正常范围%": "0-15.81",
-        "人群水平%": "20%"
-      },
+        "名称": "奈瑟氏球菌目 Neisseriales",
+        "丰度%": "0.003%",
+        "人群水平%": "80%",
+        "检出率%": "20.01%"
+      }
+    ],
+    "菌科构成": [
       {
-        "名称": "副普雷沃氏菌属 Paraprevotella",
-        "丰度%": "ND",
-        "正常范围%": "0-1.998",
-        "人群水平%": "43%"
+        "名称": "拟杆菌科 Bacteroidaceae",
+        "丰度%": "58.086%",
+        "人群水平%": "93%",
+        "检出率%": "96.10%"
       },
       {
-        "名称": "副萨特氏菌属 Parasutterella",
-        "丰度%": "0.0735",
-        "正常范围%": "0-2.4003",
-        "人群水平%": "55%"
+        "名称": "毛螺旋菌科 Lachnospiraceae",
+        "丰度%": "7.576%",
+        "人群水平%": "44%",
+        "检出率%": "98.03%"
       },
       {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.4876",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "25%"
+        "名称": "瘤胃菌科 Ruminococcaceae",
+        "丰度%": "5.011%",
+        "人群水平%": "38%",
+        "检出率%": "96.52%"
       },
       {
-        "名称": "韦荣菌属 Veillonella",
-        "丰度%": "0.6183",
-        "正常范围%": "0-8.9142",
-        "人群水平%": "76%"
+        "名称": "产碱菌科 Alcaligenaceae",
+        "丰度%": "3.508%",
+        "人群水平%": "92%",
+        "检出率%": "64.80%"
       },
       {
-        "名称": "单形拟杆菌 Bacteroides uniformis",
-        "丰度%": "4.1630",
-        "正常范围%": "0.0332-8.3187",
-        "人群水平%": "87%"
+        "名称": "乳杆菌科 Lactobacillaceae",
+        "丰度%": "1.705%",
+        "人群水平%": "96%",
+        "检出率%": "62.55%"
       },
       {
-        "名称": "普氏栖粪杆菌 Faecalibacterium prausnitzii",
-        "丰度%": "1.8959",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "46%"
+        "名称": "卟啉单胞菌科 Porphyromonadaceae",
+        "丰度%": "0.993%",
+        "人群水平%": "56%",
+        "检出率%": "66.42%"
       },
       {
-        "名称": "食葡糖罗斯拜瑞氏菌 Roseburia inulinivorans",
-        "丰度%": "0.3778",
-        "正常范围%": "0.0165-4.9966",
-        "人群水平%": "66%"
-      }
-    ],
-    "过敏相关菌": [
-      {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.5985"
+        "名称": "链球菌科 Streptococcaceae",
+        "丰度%": "0.963%",
+        "人群水平%": "85%",
+        "检出率%": "69.20%"
       },
       {
-        "名称": "0-0.4212",
-        "丰度%": "70%"
+        "名称": "普雷沃氏菌科 Prevotellaceae",
+        "丰度%": "0.544%",
+        "人群水平%": "59%",
+        "检出率%": "90.33%"
       },
       {
-        "名称": "枸橼酸杆菌属 Citrobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0668",
-        "人群水平%": "37%"
+        "名称": "双歧杆菌科 Bifidobacteriaceae",
+        "丰度%": "0.297%",
+        "人群水平%": "54%",
+        "检出率%": "84.99%"
       },
       {
-        "名称": "克雷伯氏菌属 Klebsiella",
-        "丰度%": "0.0066",
-        "正常范围%": "0-15.81",
-        "人群水平%": "20%"
+        "名称": "丹毒丝菌科 Erysipelotrichaceae",
+        "丰度%": "0.261%",
+        "人群水平%": "63%",
+        "检出率%": "65.82%"
       },
       {
-        "名称": "莫拉氏菌属 Moraxella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0096",
-        "人群水平%": "80%"
+        "名称": "脱硫弧菌科 Desulfovibrionaceae",
+        "丰度%": "0.247%",
+        "人群水平%": "70%",
+        "检出率%": "58.79%"
       },
       {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "10.4993",
-        "正常范围%": "0-21.089",
-        "人群水平%": "57%"
+        "名称": "肠杆菌科 Enterobacteriaceae",
+        "丰度%": "0.210%",
+        "人群水平%": "18%",
+        "检出率%": "87.83%"
       },
       {
-        "名称": "肠杆菌科 Enterobacteriaceae",
-        "丰度%": "0.2105",
-        "正常范围%": "0-64.256",
-        "人群水平%": "18%"
+        "名称": "Carnobacteriaceae",
+        "丰度%": "0.207%",
+        "人群水平%": "99%",
+        "检出率%": "2.14%"
       },
       {
-        "名称": "活泼瘤胃球菌 Ruminococcus gnavus",
-        "丰度%": "0.0468",
-        "正常范围%": "0-2.583",
-        "人群水平%": "48%"
+        "名称": "梭菌科 Clostridiaceae",
+        "丰度%": "0.160%",
+        "人群水平%": "52%",
+        "检出率%": "67.33%"
       },
       {
-        "名称": "气单胞菌属 Aeromonas",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0334",
-        "人群水平%": "80%"
+        "名称": "巴斯德菌科 Pasteurellaceae",
+        "丰度%": "0.103%",
+        "人群水平%": "77%",
+        "检出率%": "52.81%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1869"
+        "名称": "放线菌科 Actinomycetaceae",
+        "丰度%": "0.090%",
+        "人群水平%": "88%",
+        "检出率%": "46.06%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "31%"
+        "名称": "消化链球菌科 Peptostreptococcaceae",
+        "丰度%": "0.050%",
+        "人群水平%": "94%",
+        "检出率%": "18.53%"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "0.0033",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "51%"
+        "名称": "Aerococcaceae",
+        "丰度%": "0.027%",
+        "人群水平%": "96%",
+        "检出率%": "17.05%"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "1.8959",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "45%"
+        "名称": "假单胞菌科 Pseudomonadaceae",
+        "丰度%": "0.020%",
+        "人群水平%": "84%",
+        "检出率%": "35.97%"
       },
       {
-        "名称": "丙酸杆菌属 Propionibacterium",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0162",
-        "人群水平%": "91%"
+        "名称": "理化所菌科 Rikenellaceae",
+        "丰度%": "0.013%",
+        "人群水平%": "32%",
+        "检出率%": "85.69%"
       }
     ],
-    "腹胀相关菌": [
-      {
-        "名称": "史氏甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
-      },
+    "菌属构成": [
       {
         "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "58.0864"
-      },
-      {
-        "名称": "1.0292-55.9251",
-        "丰度%": "92%"
-      },
-      {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
+        "丰度%": "58.086%",
+        "人群水平%": "92%",
+        "检出率%": "99.04%"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "0.5747",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "34%"
+        "名称": "CAG-521",
+        "丰度%": "6.240%",
+        "人群水平%": "99%",
+        "检出率%": "48.56%"
       },
       {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "10.4993",
-        "正常范围%": "0-21.08931741",
-        "人群水平%": "57%"
+        "名称": "戴阿利斯特杆菌属 Dialister",
+        "丰度%": "5.193%",
+        "人群水平%": "94%",
+        "检出率%": "96.15%"
       },
       {
-        "名称": "艰难梭菌 Clostridium difficile",
-        "丰度%": "ND"
+        "名称": "萨特氏菌属 Sutterella",
+        "丰度%": "3.508%",
+        "人群水平%": "98%",
+        "检出率%": "81.73%"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "0.0033",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "51%"
+        "名称": "罗氏菌属 Roseburia",
+        "丰度%": "2.498%",
+        "人群水平%": "76%",
+        "检出率%": "96.15%"
       },
       {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.4876",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "25%"
+        "名称": "CAG-81",
+        "丰度%": "2.143%",
+        "人群水平%": "97%",
+        "检出率%": "87.98%"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.9629",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "84%"
+        "名称": "霍尔德曼穆尔菌属 Holdemanella",
+        "丰度%": "1.950%",
+        "人群水平%": "99%",
+        "检出率%": "16.35%"
       },
       {
-        "名称": "蓝藻门 Cyanobacteria",
-        "丰度%": "ND",
-        "正常范围%": "0-0.052432984",
-        "人群水平%": "70%"
+        "名称": "粪杆菌属 Faecalibacterium",
+        "丰度%": "1.896%",
+        "人群水平%": "45%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "产气荚膜梭菌 Clostridium perfringens",
-        "丰度%": "ND"
+        "名称": "Lachnoclostridium",
+        "丰度%": "1.712%",
+        "人群水平%": "79%",
+        "检出率%": "98.56%"
       },
       {
         "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "1.7054",
-        "正常范围%": "0.166-6.5835",
-        "人群水平%": "85%"
+        "丰度%": "1.705%",
+        "人群水平%": "85%",
+        "检出率%": "91.83%"
       },
       {
-        "名称": "毛螺旋菌科 Lachnospiraceae",
-        "丰度%": "7.5760",
-        "正常范围%": "0.8403-66.733",
-        "人群水平%": "44%"
+        "名称": "吉米菌属 Gemmiger",
+        "丰度%": "1.518%",
+        "人群水平%": "77%",
+        "检出率%": "95.67%"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.2973",
-        "正常范围%": "0.1914-12.598",
-        "人群水平%": "53%"
-      }
-    ],
-    "失眠相关菌": [
-      {
-        "名称": "阿克曼氏菌属 Akkermansia",
-        "丰度%": "ND"
+        "名称": "Dorea菌属 Dorea",
+        "丰度%": "1.264%",
+        "人群水平%": "97%",
+        "检出率%": "89.42%"
       },
       {
-        "名称": "0.0018-7.8352",
-        "丰度%": "35%"
+        "名称": "直肠真杆菌属 Agathobacter",
+        "丰度%": "1.220%",
+        "人群水平%": "72%",
+        "检出率%": "95.67%"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "58.0864"
+        "名称": "阿里松氏菌属 Allisonella",
+        "丰度%": "1.117%",
+        "人群水平%": "99%",
+        "检出率%": "21.63%"
       },
       {
-        "名称": "1.0292-55.9251",
-        "丰度%": "92%"
+        "名称": "Streptococcus",
+        "丰度%": "0.963%",
+        "人群水平%": "84%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "梭菌目 Clostridiales",
-        "丰度%": "13.5329",
-        "正常范围%": "5.2999-89.2167",
-        "人群水平%": "22%"
+        "名称": "副拟杆菌属 Parabacteroides",
+        "丰度%": "0.956%",
+        "人群水平%": "52%",
+        "检出率%": "95.19%"
       },
       {
-        "名称": "长双歧杆菌 Bifidobacterium longum",
-        "丰度%": "0.0668",
-        "正常范围%": "0-0.0996",
-        "人群水平%": "96%"
+        "名称": "韦荣菌属 Veillonella",
+        "丰度%": "0.618%",
+        "人群水平%": "76%",
+        "检出率%": "98.56%"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.1869"
+        "名称": "瘤胃球菌属 Ruminococcus",
+        "丰度%": "0.575%",
+        "人群水平%": "34%",
+        "检出率%": "99.52%"
       },
       {
-        "名称": "0.3366-3.237",
-        "丰度%": "31%"
+        "名称": "颤螺菌属 Oscillospira",
+        "丰度%": "0.491%",
+        "人群水平%": "90%",
+        "检出率%": "87.50%"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.1303",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "11%"
-      },
+        "名称": "普雷沃氏菌属 Prevotella",
+        "丰度%": "0.488%",
+        "人群水平%": "25%",
+        "检出率%": "99.52%"
+      }
+    ],
+    "菌种构成": [
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "1.8959",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "45%"
+        "名称": "普通拟杆菌 Bacteroides vulgatus",
+        "丰度%": "38.273%",
+        "人群水平%": "98%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "Lachnoclostridium",
-        "丰度%": "1.7121",
-        "正常范围%": "0.117-6.2036",
-        "人群水平%": "79%"
+        "名称": "卵形拟杆菌 Bacteroides ovatus",
+        "丰度%": "6.514%",
+        "人群水平%": "99%",
+        "检出率%": "78.85%"
       },
       {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.4876",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "25%"
+        "名称": "混浊戴阿利斯特菌 Dialister invisus",
+        "丰度%": "5.190%",
+        "人群水平%": "98%",
+        "检出率%": "60.58%"
       },
       {
-        "名称": "龙包茨氏菌属 Romboutsia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0189",
-        "人群水平%": "73%"
+        "名称": "单形拟杆菌 Bacteroides uniformis",
+        "丰度%": "4.163%",
+        "人群水平%": "87%",
+        "检出率%": "96.15%"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.9629",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "84%"
+        "名称": "华德萨特氏菌 Sutterella wadsworthensis",
+        "丰度%": "3.505%",
+        "人群水平%": "99%",
+        "检出率%": "47.60%"
       },
       {
-        "名称": "炎症性肠炎",
-        "丰度%": "0.28"
+        "名称": "Bacteroides ndongoniae",
+        "丰度%": "2.625%",
+        "人群水平%": "96%",
+        "检出率%": "66.35%"
       },
       {
-        "名称": "colitogenicbacteria in inflammatory bowel disease. \"Cell 158.5(2014): 1000-",
-        "丰度%": "1010"
+        "名称": "粪便罗斯拜瑞氏菌 Roseburia faecis",
+        "丰度%": "2.053%",
+        "人群水平%": "94%",
+        "检出率%": "85.58%"
       },
       {
-        "名称": "肠易激综合征",
-        "丰度%": "0.13"
+        "名称": "多形拟杆菌 Bacteroides thetaiotaomicron",
+        "丰度%": "1.960%",
+        "人群水平%": "99%",
+        "检出率%": "61.64%"
       },
       {
-        "名称": "根据您的肠道菌群中肠易激综合征患者与健康人之间的差异菌群,分析了您的肠易激综合征风险,显示分值为",
-        "丰度%": "0.13"
+        "名称": "两形霍尔德曼穆尔菌 Holdemanella biformis",
+        "丰度%": "1.950%",
+        "人群水平%": "99%",
+        "检出率%": "8.17%"
       },
       {
-        "名称": "感染性腹泻",
-        "丰度%": "0.41"
+        "名称": "普氏栖粪杆菌 Faecalibacterium prausnitzii",
+        "丰度%": "1.896%",
+        "人群水平%": "46%",
+        "检出率%": "98.08%"
       },
       {
-        "名称": "抑郁症",
-        "丰度%": "0.36"
+        "名称": "罗氏乳杆菌 Lactobacillus rogosae",
+        "丰度%": "1.210%",
+        "人群水平%": "86%",
+        "检出率%": "76.92%"
       },
       {
-        "名称": "甲状腺疾病",
-        "丰度%": "0.12"
+        "名称": "直肠有益杆状菌 Agathobacter rectalis",
+        "丰度%": "1.210%",
+        "人群水平%": "75%",
+        "检出率%": "92.79%"
       },
       {
-        "名称": "肺部疾病",
-        "丰度%": "0.13"
+        "名称": "产组胺阿里松氏菌 Allisonella histaminiformans",
+        "丰度%": "1.117%",
+        "人群水平%": "99%",
+        "检出率%": "21.63%"
       },
       {
-        "名称": "自体免疫疾病",
-        "丰度%": "0.29"
+        "名称": "粪便拟杆菌 Bacteroides stercoris",
+        "丰度%": "1.103%",
+        "人群水平%": "46%",
+        "检出率%": "97.12%"
       },
       {
-        "名称": "自闭症",
-        "丰度%": "0.10"
+        "名称": "甲酸芽殖菌 Gemmiger formicilis",
+        "丰度%": "1.080%",
+        "人群水平%": "87%",
+        "检出率%": "76.44%"
       },
       {
-        "名称": "碳水化合物",
-        "丰度%": "44"
+        "名称": "CAG-81 sp900066535",
+        "丰度%": "1.077%",
+        "人群水平%": "96%",
+        "检出率%": "76.92%"
       },
       {
-        "名称": "蛋白质",
-        "丰度%": "93"
+        "名称": "CAG-81 sp900066785",
+        "丰度%": "1.060%",
+        "人群水平%": "98%",
+        "检出率%": "61.06%"
       },
       {
-        "名称": "脂肪",
-        "丰度%": "59"
+        "名称": "长链多尔氏菌 Dorea formicigenerans",
+        "丰度%": "1.033%",
+        "人群水平%": "99%",
+        "检出率%": "51.92%"
       },
       {
-        "名称": "纤维素",
-        "丰度%": "58"
+        "名称": "迪氏副拟杆菌 Parabacteroides distasonis",
+        "丰度%": "0.956%",
+        "人群水平%": "74%",
+        "检出率%": "87.02%"
       },
       {
-        "名称": "乳制品",
-        "丰度%": "66"
+        "名称": "Lachnoclostridium sp000431375",
+        "丰度%": "0.736%",
+        "人群水平%": "81%",
+        "检出率%": "81.25%"
       }
     ]
+  },
+  "报告解读": {
+    "肠道年龄评估": "肠道菌群与众多的健康问题息息相关,需要了解健康就必须要了解自身的肠道菌群情况。其中有害菌过多而有\n益菌缺乏就可能导致菌群失衡、下面将从菌群平衡、菌群多样性、有益菌以及有害菌水平几个方面来评估您的肠道\n菌群总体状况。\n肠道菌群平衡\n肠道菌群是一个复杂的生态系统,通常健康人肠道菌群内有害菌不会过量繁殖,主要以中性菌和有益菌为主,\n并且维持在一定比例范围内,如果有害菌和致病菌比例过高或正常肠道菌群过低就会出现肠道菌群失衡,相应的就\n会出现腹泻、消化不良、免疫力下降等问题。\n肠道菌群平衡\n31\n中等\n菌群平衡对应的异常称为肠道菌群失调,临床上有I度失调和更严重的II度失调。本报告通过有益菌/有害菌的总\n体情况来评估菌群平衡状态,小于等于2:菌群II度失衡,2~5:菌群I度失衡,5~15:轻微失衡,15~60:中等,\n大于60:健康,同时分值也提示菌群平衡水平,越高越健康。\n菌群失衡如何调整?\n从菌群失衡的评估角度来看,首先就是快速增加有益菌特别是双歧杆菌的丰度可有效改善该项指标。因此临床\n上通常提供多联的益生菌制剂来快速补充益生菌,可以短期有效的改善菌群平衡比例。\n饮食和健康状况以及药物都会对",
+    "健康总分解读": "健康总分\n68\n亚健康及营养饮食不合理\n菌群健康\n \n53\n慢病控制\n \n76\n营养均衡\n \n68\n肠道菌群健康状况评估\n\n\n---PAGEBREAK---\n\n指标范围\n疾病风险评估\n炎症性肠炎\n0.28\n低风险\n肠易激综合征\n0.13\n低风险\n感染性腹泻\n0.41\n注意\n自闭症\n0.10\n低风险\n抑郁症\n0.36\n注意\n甲状腺疾病\n0.12\n低风险\n肺部疾病\n0.13\n低风险\n自体免疫病\n0.29\n低风险\n注:本检测仅用于健康评估和预警,疾病认定须以临床诊断为准。\n疾病风险评估\n\n\n---PAGEBREAK---\n\n指标范围\n营养状况评估\n碳水化合物\n44\n正常\n蛋白质\n93\n正常\n脂肪\n5"
   }
 }

+ 1566 - 3478
docs/参考资料/547982403.json

@@ -8,15 +8,15 @@
     "年龄": "53岁",
     "肠道预测年龄": "57.71岁",
     "肠型": "拟杆菌型",
-    "肠道菌群平衡": "39",
-    "菌群多样性": "86",
-    "有益菌": "25",
-    "有害菌": "41",
-    "核心菌属": "83",
-    "健康总分": "78",
-    "菌群健康": "81",
-    "慢病控制": "78",
-    "营养均衡": "74"
+    "肠道菌群平衡": 39,
+    "菌群多样性": 86,
+    "有益菌": 25,
+    "有害菌": 41,
+    "核心菌属": 83,
+    "健康总分": 78,
+    "菌群健康": 81,
+    "慢病控制": 78,
+    "营养均衡": 74
   },
   "疾病风险评估": [
     {
@@ -59,6 +59,11 @@
       "数值": "0.05",
       "状态": "低⻛险"
     },
+    {
+      "名称": "心脑血管疾病",
+      "数值": "0.25",
+      "状态": "低⻛险"
+    },
     {
       "名称": "II型糖尿病",
       "数值": "0.18",
@@ -78,6 +83,26 @@
       "名称": "肺部感染或疾病",
       "数值": "0.17",
       "状态": "低⻛险"
+    },
+    {
+      "名称": "自体免疫病",
+      "数值": "0.12",
+      "状态": "低⻛险"
+    },
+    {
+      "名称": "肺部感染或疾病",
+      "数值": "0.17",
+      "状态": "低"
+    },
+    {
+      "名称": "自体免疫病",
+      "数值": "0.12",
+      "状态": "低"
+    },
+    {
+      "名称": "过敏",
+      "数值": "2",
+      "状态": "双歧杆菌属"
     }
   ],
   "主要营养评估": [
@@ -109,3876 +134,1939 @@
   ],
   "氨基酸评估": [
     {
-      "名称": "胱氨酸",
-      "数值": "74",
-      "状态": "正常"
+      "名称": "苏氨酸",
+      "数值": "12",
+      "状态": "偏低"
+    },
+    {
+      "名称": "异亮氨酸",
+      "数值": "11",
+      "状态": "偏低"
+    },
+    {
+      "名称": "亮氨酸",
+      "数值": "13",
+      "状态": "偏低"
+    },
+    {
+      "名称": "赖氨酸",
+      "数值": "38",
+      "状态": "正常"
+    },
+    {
+      "名称": "蛋氨酸",
+      "数值": "10",
+      "状态": "偏低"
+    },
+    {
+      "名称": "胱氨酸",
+      "数值": "74",
+      "状态": "正常"
+    },
+    {
+      "名称": "苯丙氨酸",
+      "数值": "14",
+      "状态": "偏低"
+    },
+    {
+      "名称": "酪氨酸",
+      "数值": "46",
+      "状态": "正常"
+    },
+    {
+      "名称": "缬氨酸",
+      "数值": "9",
+      "状态": "偏低"
+    },
+    {
+      "名称": "组氨酸",
+      "数值": "58",
+      "状态": "正常"
+    },
+    {
+      "名称": "丙氨酸",
+      "数值": "19",
+      "状态": "正常"
+    },
+    {
+      "名称": "谷氨酸",
+      "数值": "69",
+      "状态": "正常"
+    },
+    {
+      "名称": "甘氨酸",
+      "数值": "24",
+      "状态": "正常"
+    },
+    {
+      "名称": "脯氨酸",
+      "数值": "6",
+      "状态": "偏低"
+    },
+    {
+      "名称": "丝氨酸",
+      "数值": "20",
+      "状态": "正常"
+    }
+  ],
+  "维生素评估": [
+    {
+      "名称": "维生素A",
+      "数值": "81",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素B1",
+      "数值": "56",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素B2",
+      "数值": "33",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素B5",
+      "数值": "48",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素B6",
+      "数值": "58",
+      "状态": "正常"
+    },
+    {
+      "名称": "叶酸",
+      "数值": "62",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素B12",
+      "数值": "31",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素C",
+      "数值": "36",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素D",
+      "数值": "92",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素K2",
+      "数值": "49",
+      "状态": "正常"
+    }
+  ],
+  "微量元素评估": [
+    {
+      "名称": "铁",
+      "数值": "66",
+      "状态": "正常"
+    },
+    {
+      "名称": "锌",
+      "数值": "36",
+      "状态": "正常"
+    }
+  ],
+  "主要消化道致病菌": [
+    {
+      "名称": "幽⻔螺杆菌",
+      "数值": "0%",
+      "状态": "未检出"
+    },
+    {
+      "名称": "艰难梭菌",
+      "数值": "0%",
+      "状态": "未检出"
+    },
+    {
+      "名称": "沙⻔氏菌",
+      "数值": "0%",
+      "状态": "未检出"
+    },
+    {
+      "名称": "志贺氏菌",
+      "数值": "0%",
+      "状态": "未检出"
+    },
+    {
+      "名称": "弯曲杆菌",
+      "数值": "0%",
+      "状态": "未检出"
+    }
+  ],
+  "抗生素风险评估": [
+    {
+      "名称": "β-内酰胺酶类",
+      "数值": "70",
+      "状态": "正常"
+    },
+    {
+      "名称": "氨基糖苷类",
+      "数值": "71",
+      "状态": "正常"
+    },
+    {
+      "名称": "大环内酯类",
+      "数值": "65",
+      "状态": "正常"
+    },
+    {
+      "名称": "呋喃类",
+      "数值": "82",
+      "状态": "正常"
+    },
+    {
+      "名称": "喹诺酮类",
+      "数值": "64",
+      "状态": "正常"
+    },
+    {
+      "名称": "磺胺类",
+      "数值": "37",
+      "状态": "正常"
+    },
+    {
+      "名称": "甲氧苄啶类",
+      "数值": "55",
+      "状态": "正常"
+    },
+    {
+      "名称": "氯霉素类",
+      "数值": "70",
+      "状态": "正常"
+    },
+    {
+      "名称": "四环素类",
+      "数值": "69",
+      "状态": "正常"
+    }
+  ],
+  "肠道屏障及代谢物": [
+    {
+      "名称": "肠道炎症水平",
+      "数值": "8",
+      "状态": "正常"
+    },
+    {
+      "名称": "肠道产气",
+      "数值": "46",
+      "状态": "正常"
+    },
+    {
+      "名称": "肠道屏障",
+      "数值": "22",
+      "状态": "正常"
+    },
+    {
+      "名称": "脂多糖LPS",
+      "数值": "38",
+      "状态": "正常"
+    },
+    {
+      "名称": "次级胆汁酸",
+      "数值": "94",
+      "状态": "正常"
+    },
+    {
+      "名称": "对甲酚(p-Cresol)",
+      "数值": "63",
+      "状态": "正常"
+    },
+    {
+      "名称": "吲哚",
+      "数值": "46",
+      "状态": "正常"
+    },
+    {
+      "名称": "苯酚",
+      "数值": "12",
+      "状态": "正常"
+    },
+    {
+      "名称": "腐胺",
+      "数值": "49",
+      "状态": "正常"
+    },
+    {
+      "名称": "硫化氢",
+      "数值": "16",
+      "状态": "正常"
+    },
+    {
+      "名称": "尸胺",
+      "数值": "11",
+      "状态": "正常"
+    }
+  ],
+  "短链脂肪酸": [
+    {
+      "名称": "丁酸盐(Butyrate)",
+      "数值": "69",
+      "状态": "正常"
+    },
+    {
+      "名称": "丙酸盐(Propionate)",
+      "数值": "70",
+      "状态": "正常"
+    },
+    {
+      "名称": "乙酸盐(Acetate)",
+      "数值": "38",
+      "状态": "正常"
+    },
+    {
+      "名称": "异戊酸盐(Isovaleric)",
+      "数值": "75",
+      "状态": "正常"
+    }
+  ],
+  "神经递质及激素": [
+    {
+      "名称": "血清素(5-HT)",
+      "数值": "41",
+      "状态": "正常"
+    },
+    {
+      "名称": "γ-氨基丁酸(GABA)",
+      "数值": "56",
+      "状态": "正常"
+    },
+    {
+      "名称": "谷氨酸(Glutamate)",
+      "数值": "69",
+      "状态": "正常"
+    },
+    {
+      "名称": "色氨酸(Tryptophan)",
+      "数值": "49",
+      "状态": "正常"
+    },
+    {
+      "名称": "DOPAC",
+      "数值": "58",
+      "状态": "正常"
+    },
+    {
+      "名称": "多巴胺",
+      "数值": "85",
+      "状态": "正常"
+    },
+    {
+      "名称": "组胺(Histamine)",
+      "数值": "46",
+      "状态": "正常"
+    },
+    {
+      "名称": "喹啉(Quinolinic)",
+      "数值": "27",
+      "状态": "正常"
+    },
+    {
+      "名称": "维生素K2",
+      "数值": "49",
+      "状态": "正常"
+    },
+    {
+      "名称": "肌醇(Inositol)",
+      "数值": "88",
+      "状态": "正常"
+    },
+    {
+      "名称": "一氧化氮",
+      "数值": "86",
+      "状态": "正常"
+    }
+  ],
+  "个体化食物推荐表": [
+    {
+      "名称": "大麦",
+      "推荐指数": "12"
+    },
+    {
+      "名称": "小米",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "小麦",
+      "推荐指数": "7"
+    },
+    {
+      "名称": "小麦面包",
+      "推荐指数": "-7"
+    },
+    {
+      "名称": "意大利面",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "燕麦",
+      "推荐指数": "32"
+    },
+    {
+      "名称": "玉米粒",
+      "推荐指数": "39"
+    },
+    {
+      "名称": "米饭",
+      "推荐指数": "-4"
+    },
+    {
+      "名称": "玉米饼",
+      "推荐指数": "6"
+    },
+    {
+      "名称": "荞麦面粉",
+      "推荐指数": "1"
+    },
+    {
+      "名称": "葡萄干浆即食谷物",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "面条",
+      "推荐指数": "-4"
+    },
+    {
+      "名称": "鸡蛋面包",
+      "推荐指数": "-3"
+    },
+    {
+      "名称": "黑麦面包",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "冰淇淋",
+      "推荐指数": "-5"
+    },
+    {
+      "名称": "奶油",
+      "推荐指数": "-7"
+    },
+    {
+      "名称": "奶酪",
+      "推荐指数": "-4"
+    },
+    {
+      "名称": "牛奶",
+      "推荐指数": "4"
+    },
+    {
+      "名称": "脱脂牛奶",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "黄油",
+      "推荐指数": "-27"
+    },
+    {
+      "名称": "山核桃",
+      "推荐指数": "-8"
+    },
+    {
+      "名称": "山核桃干",
+      "推荐指数": "-3"
+    },
+    {
+      "名称": "杏仁",
+      "推荐指数": "-2"
+    },
+    {
+      "名称": "开心果",
+      "推荐指数": "-8"
+    },
+    {
+      "名称": "松子",
+      "推荐指数": "-10"
+    },
+    {
+      "名称": "栗子",
+      "推荐指数": "47"
+    },
+    {
+      "名称": "核桃",
+      "推荐指数": "-6"
+    },
+    {
+      "名称": "椰肉",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "榛子",
+      "推荐指数": "44"
+    },
+    {
+      "名称": "橡子",
+      "推荐指数": "42"
+    },
+    {
+      "名称": "腰果",
+      "推荐指数": "-4"
+    },
+    {
+      "名称": "芝麻酱",
+      "推荐指数": "1"
+    },
+    {
+      "名称": "莲子",
+      "推荐指数": "47"
+    },
+    {
+      "名称": "葵花子",
+      "推荐指数": "-1"
+    },
+    {
+      "名称": "银杏坚果",
+      "推荐指数": "-2"
+    },
+    {
+      "名称": "氏萨",
+      "推荐指数": "-6"
+    },
+    {
+      "名称": "热狗",
+      "推荐指数": "-9"
+    },
+    {
+      "名称": "鸡米花",
+      "推荐指数": "-11"
+    },
+    {
+      "名称": "三文鱼",
+      "推荐指数": "7"
+    },
+    {
+      "名称": "凤尾鱼",
+      "推荐指数": "7"
+    },
+    {
+      "名称": "墨鱼",
+      "推荐指数": "6"
+    },
+    {
+      "名称": "大氏目鱼",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "大西洋鳕鱼",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "小龙虾",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "扇贝",
+      "推荐指数": "1"
+    },
+    {
+      "名称": "条纹鲈鱼",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "海鲈鱼",
+      "推荐指数": "3"
+    },
+    {
+      "名称": "牡蛎",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "白鲑",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "石斑鱼",
+      "推荐指数": "11"
+    },
+    {
+      "名称": "章鱼",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "虾",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "蛤蜊",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "蟹",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "贻贝",
+      "推荐指数": "4"
+    },
+    {
+      "名称": "金枪鱼",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "鱼子酱",
+      "推荐指数": "-7"
+    },
+    {
+      "名称": "鱿鱼",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "鲈鱼",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "鲍鱼",
+      "推荐指数": "4"
+    },
+    {
+      "名称": "鲟鱼",
+      "推荐指数": "6"
+    },
+    {
+      "名称": "鲤鱼",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "鲭鱼",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "鲱鱼",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "鲶鱼",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "鲷鱼",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "鲽鱼",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "鳕鱼",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "鳗鱼",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "鳟鱼",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "沙丁鱼",
+      "推荐指数": "11"
+    },
+    {
+      "名称": "黄尾",
+      "推荐指数": "7"
+    },
+    {
+      "名称": "龙虾",
+      "推荐指数": "3"
+    },
+    {
+      "名称": "无花果",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "李子",
+      "推荐指数": "19"
+    },
+    {
+      "名称": "杏",
+      "推荐指数": "14"
+    },
+    {
+      "名称": "杨桃",
+      "推荐指数": "45"
+    },
+    {
+      "名称": "枣",
+      "推荐指数": "10"
+    },
+    {
+      "名称": "柠檬",
+      "推荐指数": "45"
+    },
+    {
+      "名称": "柿子",
+      "推荐指数": "21"
+    },
+    {
+      "名称": "桃",
+      "推荐指数": "14"
+    },
+    {
+      "名称": "桑葚",
+      "推荐指数": "41"
+    },
+    {
+      "名称": "梨",
+      "推荐指数": "43"
+    },
+    {
+      "名称": "榴莲",
+      "推荐指数": "41"
+    },
+    {
+      "名称": "樱桃",
+      "推荐指数": "23"
+    },
+    {
+      "名称": "哈密瓜",
+      "推荐指数": "16"
+    },
+    {
+      "名称": "橘子",
+      "推荐指数": "14"
+    },
+    {
+      "名称": "橙汁",
+      "推荐指数": "39"
+    },
+    {
+      "名称": "橙皮",
+      "推荐指数": "24"
+    },
+    {
+      "名称": "橙菠萝汁",
+      "推荐指数": "7"
+    },
+    {
+      "名称": "油桃",
+      "推荐指数": "14"
+    },
+    {
+      "名称": "猕猴桃",
+      "推荐指数": "30"
+    },
+    {
+      "名称": "甜瓜",
+      "推荐指数": "3"
+    },
+    {
+      "名称": "番木瓜",
+      "推荐指数": "31"
+    },
+    {
+      "名称": "石榴",
+      "推荐指数": "39"
+    },
+    {
+      "名称": "红苹果",
+      "推荐指数": "20"
+    },
+    {
+      "名称": "芒果",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "苹果",
+      "推荐指数": "20"
+    },
+    {
+      "名称": "苹果汁",
+      "推荐指数": "-13"
+    },
+    {
+      "名称": "草莓",
+      "推荐指数": "34"
+    },
+    {
+      "名称": "荔枝",
+      "推荐指数": "19"
+    },
+    {
+      "名称": "菠萝",
+      "推荐指数": "14"
+    },
+    {
+      "名称": "菠萝蜜",
+      "推荐指数": "20"
+    },
+    {
+      "名称": "葡萄",
+      "推荐指数": "36"
+    },
+    {
+      "名称": "葡萄干",
+      "推荐指数": "-20"
+    },
+    {
+      "名称": "葡萄柚",
+      "推荐指数": "43"
+    },
+    {
+      "名称": "蓝莓",
+      "推荐指数": "41"
+    },
+    {
+      "名称": "蔓越莓",
+      "推荐指数": "31"
+    },
+    {
+      "名称": "西瓜",
+      "推荐指数": "22"
+    },
+    {
+      "名称": "覆盆子",
+      "推荐指数": "36"
+    },
+    {
+      "名称": "面包果酱",
+      "推荐指数": "10"
+    },
+    {
+      "名称": "香蕉",
+      "推荐指数": "19"
+    },
+    {
+      "名称": "鳄梨",
+      "推荐指数": "34"
+    },
+    {
+      "名称": "黑莓",
+      "推荐指数": "55"
+    },
+    {
+      "名称": "龙眼",
+      "推荐指数": "45"
+    },
+    {
+      "名称": "番茄汤",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "土豆蔬菜汤",
+      "推荐指数": "-2"
+    },
+    {
+      "名称": "素食蔬菜汤",
+      "推荐指数": "-3"
+    },
+    {
+      "名称": "火腿",
+      "推荐指数": "-4"
+    },
+    {
+      "名称": "火鸡",
+      "推荐指数": "2"
+    },
+    {
+      "名称": "烟熏火腿",
+      "推荐指数": "-7"
+    },
+    {
+      "名称": "烤肉",
+      "推荐指数": "-6"
+    },
+    {
+      "名称": "烤鸭",
+      "推荐指数": "-5"
+    },
+    {
+      "名称": "烧鹅",
+      "推荐指数": "-2"
+    },
+    {
+      "名称": "牛肉汤",
+      "推荐指数": "-2"
+    },
+    {
+      "名称": "牛肉瘦",
+      "推荐指数": "4"
+    },
+    {
+      "名称": "牛肉肥",
+      "推荐指数": "-17"
+    },
+    {
+      "名称": "牛蛙",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "猪培根",
+      "推荐指数": "-16"
+    },
+    {
+      "名称": "猪头肉",
+      "推荐指数": "-10"
+    },
+    {
+      "名称": "猪瘦肉",
+      "推荐指数": "6"
+    },
+    {
+      "名称": "猪耳朵",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "猪肝",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "猪脑",
+      "推荐指数": "-9"
+    },
+    {
+      "名称": "猪蹄",
+      "推荐指数": "-3"
+    },
+    {
+      "名称": "瘦羊肉",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "肉丸",
+      "推荐指数": "-13"
+    },
+    {
+      "名称": "肥猪肉",
+      "推荐指数": "-18"
+    },
+    {
+      "名称": "肥羊肉",
+      "推荐指数": "-19"
+    },
+    {
+      "名称": "鸡心",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "鸡汤",
+      "推荐指数": "-5"
+    },
+    {
+      "名称": "鸡肉",
+      "推荐指数": "-3"
+    },
+    {
+      "名称": "鸡肝",
+      "推荐指数": "5"
+    },
+    {
+      "名称": "鹅肝",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "鹌鹑",
+      "推荐指数": "3"
+    },
+    {
+      "名称": "南瓜",
+      "推荐指数": "57"
+    },
+    {
+      "名称": "卷心菜",
+      "推荐指数": "45"
+    },
+    {
+      "名称": "四季豆",
+      "推荐指数": "64"
+    },
+    {
+      "名称": "土豆",
+      "推荐指数": "54"
+    },
+    {
+      "名称": "土豆面粉",
+      "推荐指数": "53"
+    },
+    {
+      "名称": "大白菜",
+      "推荐指数": "64"
+    },
+    {
+      "名称": "大蒜",
+      "推荐指数": "43"
+    },
+    {
+      "名称": "大豆",
+      "推荐指数": "62"
+    },
+    {
+      "名称": "小南瓜",
+      "推荐指数": "0"
+    },
+    {
+      "名称": "小萝卜",
+      "推荐指数": "63"
+    },
+    {
+      "名称": "山药",
+      "推荐指数": "53"
+    },
+    {
+      "名称": "扁豆",
+      "推荐指数": "54"
+    },
+    {
+      "名称": "木薯",
+      "推荐指数": "38"
+    },
+    {
+      "名称": "洋葱",
+      "推荐指数": "46"
     },
     {
-      "名称": "苯丙氨酸",
-      "数值": "14",
-      "状态": "偏低"
+      "名称": "炒蘑菇",
+      "推荐指数": "13"
     },
     {
-      "名称": "酪氨酸",
-      "数值": "46",
-      "状态": "正常"
+      "名称": "炒香菇",
+      "推荐指数": "10"
     },
     {
-      "名称": "缬氨酸",
-      "数值": "9",
-      "状态": "偏低"
+      "名称": "牛蒡根",
+      "推荐指数": "71"
     },
     {
-      "名称": "组氨酸",
-      "数值": "58",
-      "状态": "正常"
+      "名称": "甘薯",
+      "推荐指数": "42"
     },
     {
-      "名称": "丙氨酸",
-      "数值": "19",
-      "状态": "正常"
+      "名称": "甜椒",
+      "推荐指数": "57"
     },
     {
-      "名称": "谷氨酸",
-      "数值": "69",
-      "状态": "正常"
+      "名称": "甜玉米",
+      "推荐指数": "45"
     },
     {
-      "名称": "甘氨酸",
-      "数值": "24",
-      "状态": "正常"
+      "名称": "甜菜",
+      "推荐指数": "60"
     },
     {
-      "名称": "脯氨酸",
-      "数值": "6",
-      "状态": "偏低"
+      "名称": "甜菜叶",
+      "推荐指数": "62"
     },
     {
-      "名称": "丝氨酸",
-      "数值": "20",
-      "状态": "正常"
-    }
-  ],
-  "维生素评估": [
+      "名称": "生姜",
+      "推荐指数": "71"
+    },
     {
-      "名称": "维生素A",
-      "数值": "81",
-      "状态": "正常"
+      "名称": "生菜",
+      "推荐指数": "59"
     },
     {
-      "名称": "维生素B1",
-      "数值": "56",
-      "状态": "正常"
+      "名称": "番茄汁",
+      "推荐指数": "0"
     },
     {
-      "名称": "维生素B2",
-      "数值": "33",
-      "状态": "正常"
+      "名称": "白菜",
+      "推荐指数": "56"
     },
     {
-      "名称": "维生素B5",
-      "数值": "48",
-      "状态": "正常"
+      "名称": "白萝卜",
+      "推荐指数": "66"
     },
     {
-      "名称": "维生素B6",
-      "数值": "58",
-      "状态": "正常"
+      "名称": "白蘑菇",
+      "推荐指数": "56"
     },
     {
-      "名称": "叶酸",
-      "数值": "62",
-      "状态": "正常"
+      "名称": "秋葵",
+      "推荐指数": "56"
     },
     {
-      "名称": "维生素B12",
-      "数值": "31",
-      "状态": "正常"
+      "名称": "竹笋",
+      "推荐指数": "66"
     },
     {
-      "名称": "维生素C",
-      "数值": "36",
-      "状态": "正常"
+      "名称": "红心萝卜",
+      "推荐指数": "65"
     },
     {
-      "名称": "维生素D",
-      "数值": "92",
-      "状态": "正常"
-    }
-  ],
-  "微量元素评估": [
+      "名称": "红豆",
+      "推荐指数": "24"
+    },
     {
-      "名称": "铁",
-      "数值": "66",
-      "状态": "正常"
+      "名称": "绿豆",
+      "推荐指数": "24"
     },
     {
-      "名称": "锌",
-      "数值": "36",
-      "状态": "正常"
-    }
-  ],
-  "主要消化道致病菌": [
+      "名称": "羽衣甘蓝",
+      "推荐指数": "67"
+    },
     {
-      "致病菌": "幽⻔螺杆菌",
-      "丰度": "0%",
-      "评估": "未检出"
+      "名称": "胡萝卜",
+      "推荐指数": "40"
     },
     {
-      "致病菌": "艰难梭菌",
-      "丰度": "0%",
-      "评估": "未检出"
+      "名称": "芋头",
+      "推荐指数": "58"
     },
     {
-      "致病菌": "沙⻔⽒菌",
-      "丰度": "0%",
-      "评估": "未检出"
+      "名称": "芝麻",
+      "推荐指数": "54"
     },
     {
-      "致病菌": "志贺⽒菌",
-      "丰度": "0%",
-      "评估": "未检出"
+      "名称": "芥末",
+      "推荐指数": "68"
     },
     {
-      "致病菌": "弯曲杆菌",
-      "丰度": "0%",
-      "评估": "未检出"
-    }
-  ],
-  "抗生素风险评估": [
+      "名称": "芦笋",
+      "推荐指数": "64"
+    },
     {
-      "名称": "β-内酰胺酶类",
-      "数值": "70",
-      "状态": "正常"
+      "名称": "花椒",
+      "推荐指数": "65"
     },
     {
-      "名称": "氨基糖苷类",
-      "数值": "71",
-      "状态": "正常"
+      "名称": "花椰菜",
+      "推荐指数": "57"
     },
     {
-      "名称": "大环内酯类",
-      "数值": "65",
-      "状态": "正常"
+      "名称": "芹菜",
+      "推荐指数": "55"
     },
     {
-      "名称": "呋喃类",
-      "数值": "82",
-      "状态": "正常"
+      "名称": "苦瓜",
+      "推荐指数": "57"
     },
     {
-      "名称": "喹诺酮类",
-      "数值": "64",
-      "状态": "正常"
+      "名称": "茄子",
+      "推荐指数": "54"
     },
     {
-      "名称": "磺胺类",
-      "数值": "37",
-      "状态": "正常"
+      "名称": "苋菜叶",
+      "推荐指数": "36"
     },
     {
-      "名称": "甲氧苄啶类",
-      "数值": "55",
-      "状态": "正常"
+      "名称": "菊苣",
+      "推荐指数": "67"
     },
     {
-      "名称": "氯霉素类",
-      "数值": "70",
-      "状态": "正常"
+      "名称": "菜豆",
+      "推荐指数": "62"
     },
     {
-      "名称": "四环素类",
-      "数值": "69",
-      "状态": "正常"
+      "名称": "菠菜",
+      "推荐指数": "61"
     },
     {
-      "名称": "β-内酰胺酶类",
-      "数值": "70",
-      "状态": "正常"
+      "名称": "蕨类",
+      "推荐指数": "66"
     },
     {
-      "名称": "氨基糖苷类",
-      "数值": "71",
-      "状态": "正常"
+      "名称": "藜",
+      "推荐指数": "68"
     },
     {
-      "名称": "大环内酯类",
-      "数值": "65",
-      "状态": "正常"
+      "名称": "蘑菇",
+      "推荐指数": "57"
     },
     {
-      "名称": "呋喃类",
-      "数值": "82",
-      "状态": "正常"
+      "名称": "西兰花",
+      "推荐指数": "64"
     },
     {
-      "名称": "喹诺酮类",
-      "数值": "64",
-      "状态": "正常"
+      "名称": "西红柿",
+      "推荐指数": "66"
     },
     {
-      "名称": "磺胺类",
-      "数值": "37",
-      "状态": "正常"
+      "名称": "豆芽",
+      "推荐指数": "59"
     },
     {
-      "名称": "甲氧苄啶类",
-      "数值": "55",
-      "状态": "正常"
+      "名称": "豇豆",
+      "推荐指数": "63"
     },
     {
-      "名称": "氯霉素类",
-      "数值": "70",
-      "状态": "正常"
+      "名称": "豌豆",
+      "推荐指数": "65"
     },
     {
-      "名称": "四环素类",
-      "数值": "69",
-      "状态": "正常"
-    }
-  ],
-  "肠道屏障及代谢物": [
+      "名称": "辣椒",
+      "推荐指数": "46"
+    },
     {
-      "名称": "肠道炎症水平",
-      "评估值": "8",
-      "健康状况": "正常",
-      "正常范围": "0-80"
+      "名称": "韭菜",
+      "推荐指数": "40"
     },
     {
-      "名称": "肠道屏障",
-      "评估值": "22",
-      "健康状况": "正常",
-      "正常范围": "15-100"
+      "名称": "香菇",
+      "推荐指数": "59"
     },
     {
-      "名称": "脂多糖LPS",
-      "评估值": "38",
-      "健康状况": "正常",
-      "正常范围": "0-85"
+      "名称": "黄瓜",
+      "推荐指数": "54"
     },
     {
-      "名称": "次级胆汁酸",
-      "评估值": "94",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "水煮蛋",
+      "推荐指数": "-6"
     },
     {
-      "名称": "对甲酚(p-Cresol)",
-      "评估值": "63",
-      "健康状况": "正常",
-      "正常范围": "0-85"
+      "名称": "炒蛋",
+      "推荐指数": "-9"
     },
     {
-      "名称": "吲哚",
-      "评估值": "46",
-      "健康状况": "正常",
-      "正常范围": "15-90"
+      "名称": "煎蛋",
+      "推荐指数": "-10"
     },
     {
-      "名称": "苯酚",
-      "评估值": "12",
-      "健康状况": "正常",
-      "正常范围": "0-85"
+      "名称": "鸡蛋",
+      "推荐指数": "-5"
     },
     {
-      "名称": "腐胺",
-      "评估值": "49",
-      "健康状况": "正常",
-      "正常范围": "5-85"
+      "名称": "鸡蛋白",
+      "推荐指数": "4"
     },
     {
-      "名称": "硫化氢",
-      "评估值": "16",
-      "健康状况": "正常",
-      "正常范围": "5-85"
-    }
-  ],
-  "短链脂肪酸": [
+      "名称": "鸡蛋黄",
+      "推荐指数": "-12"
+    },
     {
-      "名称": "丁酸盐(Butyrate)",
-      "评估值": "69",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "鹌鹑蛋",
+      "推荐指数": "-6"
     },
     {
-      "名称": "丙酸盐(Propionate)",
-      "评估值": "70",
-      "健康状况": "正常",
-      "正常范围": "15-90"
+      "名称": "利马豆",
+      "推荐指数": "15"
     },
     {
-      "名称": "异戊酸盐(Isovaleric)",
-      "评估值": "75",
-      "健康状况": "正常",
-      "正常范围": "5-85"
-    }
-  ],
-  "神经递质及激素": [
+      "名称": "大豆面粉",
+      "推荐指数": "7"
+    },
     {
-      "名称": "γ-氨基丁酸(GABA)",
-      "评估值": "56",
-      "健康状况": "正常",
-      "正常范围": "15-85"
+      "名称": "嫩豆腐",
+      "推荐指数": "9"
     },
     {
-      "名称": "谷氨酸(Glutamate)",
-      "评估值": "69",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "纳豆",
+      "推荐指数": "9"
     },
     {
-      "名称": "DOPAC",
-      "评估值": "58",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "羽扇豆",
+      "推荐指数": "15"
     },
     {
-      "名称": "多巴胺",
-      "评估值": "85",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "老豆腐",
+      "推荐指数": "10"
     },
     {
-      "名称": "组胺(Histamine)",
-      "评估值": "46",
-      "健康状况": "正常",
-      "正常范围": "15-95"
+      "名称": "花生",
+      "推荐指数": "1"
     },
     {
-      "名称": "喹啉(Quinolinic)",
-      "评估值": "27",
-      "健康状况": "正常",
-      "正常范围": "0-95"
+      "名称": "花生酱",
+      "推荐指数": "-8"
     },
     {
-      "名称": "维生素K2",
-      "评估值": "49",
-      "健康状况": "正常",
-      "正常范围": "15-99"
+      "名称": "蚕豆",
+      "推荐指数": "17"
     },
     {
-      "名称": "肌醇(Inositol)",
-      "评估值": "88",
-      "健康状况": "正常",
-      "正常范围": "15-99"
+      "名称": "豆浆",
+      "推荐指数": "8"
+    },
+    {
+      "名称": "鹰嘴豆",
+      "推荐指数": "9"
+    },
+    {
+      "名称": "黄豆",
+      "推荐指数": "17"
     }
   ],
-  "个体化食物推荐表": {
-    "格式": "vertical",
-    "条目数": 224,
-    "数据": [
-      {
-        "名称": "大麦",
-        "分类": "主食",
-        "推荐指数": "12",
-        "能量KJ": "1481",
-        "蛋白g": "12",
-        "脂肪g": "2",
-        "碳水化合物g": "73",
-        "淀粉g": "0",
-        "总膳食纤维g": "17",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "小米",
-        "分类": "主食",
-        "推荐指数": "5",
-        "能量KJ": "1582",
-        "蛋白g": "11",
-        "脂肪g": "4",
-        "碳水化合物g": "72",
-        "淀粉g": "0",
-        "总膳食纤维g": "8",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "小麦",
-        "分类": "主食",
-        "推荐指数": "7",
-        "能量KJ": "1423",
-        "蛋白g": "10",
-        "脂肪g": "1",
-        "碳水化合物g": "75",
-        "淀粉g": "0",
-        "总膳食纤维g": "12",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "小麦面包",
-        "分类": "主食",
-        "推荐指数": "-7",
-        "能量KJ": "1116",
-        "蛋白g": "10",
-        "脂肪g": "3",
-        "碳水化合物g": "48",
-        "淀粉g": "36",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "意大利面",
-        "分类": "主食",
-        "推荐指数": "0",
-        "能量KJ": "386",
-        "蛋白g": "1",
-        "脂肪g": "3",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "燕麦",
-        "分类": "主食",
-        "推荐指数": "32",
-        "能量KJ": "297",
-        "蛋白g": "17",
-        "脂肪g": "6",
-        "碳水化合物g": "66",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "玉米粒",
-        "分类": "主食",
-        "推荐指数": "39",
-        "能量KJ": "298",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "14",
-        "淀粉g": "14",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "米饭",
-        "分类": "主食",
-        "推荐指数": "-4",
-        "能量KJ": "1527",
-        "蛋白g": "7",
-        "脂肪g": "0",
-        "碳水化合物g": "79",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "玉米饼",
-        "分类": "主食",
-        "推荐指数": "6",
-        "能量KJ": "912",
-        "蛋白g": "5",
-        "脂肪g": "2",
-        "碳水化合物g": "44",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "荞麦面粉",
-        "分类": "主食",
-        "推荐指数": "1",
-        "能量KJ": "1402",
-        "蛋白g": "12",
-        "脂肪g": "3",
-        "碳水化合物g": "70",
-        "淀粉g": "0",
-        "总膳食纤维g": "10",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "葡萄干浆即食谷物",
-        "分类": "主食",
-        "推荐指数": "0",
-        "能量KJ": "1354",
-        "蛋白g": "7",
-        "脂肪g": "1",
-        "碳水化合物g": "78",
-        "淀粉g": "0",
-        "总膳食纤维g": "13",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "面条",
-        "分类": "主食",
-        "推荐指数": "-4",
-        "能量KJ": "1609",
-        "蛋白g": "14",
-        "脂肪g": "4",
-        "碳水化合物g": "71",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "84"
-      },
-      {
-        "名称": "鸡蛋面包",
-        "分类": "主食",
-        "推荐指数": "-3",
-        "能量KJ": "1201",
-        "蛋白g": "9",
-        "脂肪g": "6",
-        "碳水化合物g": "47",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "51"
-      },
-      {
-        "名称": "黑麦面包",
-        "分类": "主食",
-        "推荐指数": "0",
-        "能量KJ": "1188",
-        "蛋白g": "9",
-        "脂肪g": "3",
-        "碳水化合物g": "53",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "冰淇淋",
-        "分类": "乳制品",
-        "推荐指数": "-5",
-        "能量KJ": "690",
-        "蛋白g": "1",
-        "脂肪g": "3",
-        "碳水化合物g": "32",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "8"
-      },
-      {
-        "名称": "奶油",
-        "分类": "乳制品",
-        "推荐指数": "-7",
-        "能量KJ": "515",
-        "蛋白g": "3",
-        "脂肪g": "10",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "35"
-      },
-      {
-        "名称": "奶酪",
-        "分类": "乳制品",
-        "推荐指数": "-4",
-        "能量KJ": "1552",
-        "蛋白g": "23",
-        "脂肪g": "29",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "94"
-      },
-      {
-        "名称": "牛奶",
-        "分类": "乳制品",
-        "推荐指数": "4",
-        "能量KJ": "268",
-        "蛋白g": "3",
-        "脂肪g": "3",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "14"
-      },
-      {
-        "名称": "脱脂牛奶",
-        "分类": "乳制品",
-        "推荐指数": "8",
-        "能量KJ": "142",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "2"
-      },
-      {
-        "名称": "黄油",
-        "分类": "乳制品",
-        "推荐指数": "-27",
-        "能量KJ": "2999",
-        "蛋白g": "0",
-        "脂肪g": "81",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "215"
-      },
-      {
-        "名称": "山核桃",
-        "分类": "干果",
-        "推荐指数": "-8",
-        "能量KJ": "2889",
-        "蛋白g": "9",
-        "脂肪g": "71",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "9",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "山核桃干",
-        "分类": "干果",
-        "推荐指数": "-3",
-        "能量KJ": "2749",
-        "蛋白g": "12",
-        "脂肪g": "64",
-        "碳水化合物g": "18",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "杏仁",
-        "分类": "干果",
-        "推荐指数": "-2",
-        "能量KJ": "2423",
-        "蛋白g": "21",
-        "脂肪g": "49",
-        "碳水化合物g": "21",
-        "淀粉g": "0",
-        "总膳食纤维g": "12",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "开心果",
-        "分类": "干果",
-        "推荐指数": "-8",
-        "能量KJ": "2392",
-        "蛋白g": "21",
-        "脂肪g": "45",
-        "碳水化合物g": "28",
-        "淀粉g": "1",
-        "总膳食纤维g": "10",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "松子",
-        "分类": "干果",
-        "推荐指数": "-10",
-        "能量KJ": "2816",
-        "蛋白g": "13",
-        "脂肪g": "68",
-        "碳水化合物g": "13",
-        "淀粉g": "1",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "栗子",
-        "分类": "干果",
-        "推荐指数": "47",
-        "能量KJ": "1519",
-        "蛋白g": "6",
-        "脂肪g": "1",
-        "碳水化合物g": "79",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "核桃",
-        "分类": "干果",
-        "推荐指数": "-6",
-        "能量KJ": "2738",
-        "蛋白g": "15",
-        "脂肪g": "65",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "椰肉",
-        "分类": "干果",
-        "推荐指数": "0",
-        "能量KJ": "1481",
-        "蛋白g": "3",
-        "脂肪g": "33",
-        "碳水化合物g": "15",
-        "淀粉g": "0",
-        "总膳食纤维g": "9",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "榛子",
-        "分类": "干果",
-        "推荐指数": "44",
-        "能量KJ": "2629",
-        "蛋白g": "14",
-        "脂肪g": "60",
-        "碳水化合物g": "16",
-        "淀粉g": "0",
-        "总膳食纤维g": "9",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "橡子",
-        "分类": "干果",
-        "推荐指数": "42",
-        "能量KJ": "1619",
-        "蛋白g": "6",
-        "脂肪g": "23",
-        "碳水化合物g": "40",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "腰果",
-        "分类": "干果",
-        "推荐指数": "-4",
-        "能量KJ": "2402",
-        "蛋白g": "15",
-        "脂肪g": "46",
-        "碳水化合物g": "32",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芝麻酱",
-        "分类": "干果",
-        "推荐指数": "1",
-        "能量KJ": "2454",
-        "蛋白g": "18",
-        "脂肪g": "50",
-        "碳水化合物g": "24",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "莲子",
-        "分类": "干果",
-        "推荐指数": "47",
-        "能量KJ": "372",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "17",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "葵花子",
-        "分类": "干果",
-        "推荐指数": "-1",
-        "能量KJ": "2445",
-        "蛋白g": "20",
-        "脂肪g": "51",
-        "碳水化合物g": "20",
-        "淀粉g": "0",
-        "总膳食纤维g": "8",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "银杏坚果",
-        "分类": "干果",
-        "推荐指数": "-2",
-        "能量KJ": "1456",
-        "蛋白g": "10",
-        "脂肪g": "2",
-        "碳水化合物g": "72",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "氏萨",
-        "分类": "快餐",
-        "推荐指数": "-6",
-        "能量KJ": "1121",
-        "蛋白g": "10",
-        "脂肪g": "12",
-        "碳水化合物g": "29",
-        "淀粉g": "18",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "14"
-      },
-      {
-        "名称": "热狗",
-        "分类": "快餐",
-        "推荐指数": "-9",
-        "能量KJ": "1167",
-        "蛋白g": "9",
-        "脂肪g": "3",
-        "碳水化合物g": "50",
-        "淀粉g": "36",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "鸡米花",
-        "分类": "快餐",
-        "推荐指数": "-11",
-        "能量KJ": "1469",
-        "蛋白g": "17",
-        "脂肪g": "21",
-        "碳水化合物g": "21",
-        "淀粉g": "18",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "40"
-      },
-      {
-        "名称": "三文鱼",
-        "分类": "水产品",
-        "推荐指数": "7",
-        "能量KJ": "594",
-        "蛋白g": "19",
-        "脂肪g": "6",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "55"
-      },
-      {
-        "名称": "凤尾鱼",
-        "分类": "水产品",
-        "推荐指数": "7",
-        "能量KJ": "548",
-        "蛋白g": "20",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "60"
-      },
-      {
-        "名称": "墨鱼",
-        "分类": "水产品",
-        "推荐指数": "6",
-        "能量KJ": "331",
-        "蛋白g": "16",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "112"
-      },
-      {
-        "名称": "大氏目鱼",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "382",
-        "蛋白g": "18",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "49"
-      },
-      {
-        "名称": "大西洋鳕鱼",
-        "分类": "水产品",
-        "推荐指数": "0",
-        "能量KJ": "343",
-        "蛋白g": "17",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "43"
-      },
-      {
-        "名称": "小龙虾",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "322",
-        "蛋白g": "15",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "114"
-      },
-      {
-        "名称": "扇贝",
-        "分类": "水产品",
-        "推荐指数": "1",
-        "能量KJ": "289",
-        "蛋白g": "12",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "2",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "24"
-      },
-      {
-        "名称": "条纹鲈鱼",
-        "分类": "水产品",
-        "推荐指数": "9",
-        "能量KJ": "406",
-        "蛋白g": "17",
-        "脂肪g": "2",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "80"
-      },
-      {
-        "名称": "海鲈鱼",
-        "分类": "水产品",
-        "推荐指数": "3",
-        "能量KJ": "332",
-        "蛋白g": "15",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "52"
-      },
-      {
-        "名称": "牡蛎",
-        "分类": "水产品",
-        "推荐指数": "9",
-        "能量KJ": "339",
-        "蛋白g": "9",
-        "脂肪g": "2",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "50"
-      },
-      {
-        "名称": "白鲑",
-        "分类": "水产品",
-        "推荐指数": "5",
-        "能量KJ": "611",
-        "蛋白g": "17",
-        "脂肪g": "8",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "65"
-      },
-      {
-        "名称": "石斑鱼",
-        "分类": "水产品",
-        "推荐指数": "11",
-        "能量KJ": "385",
-        "蛋白g": "19",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "37"
-      },
-      {
-        "名称": "章鱼",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "343",
-        "蛋白g": "14",
-        "脂肪g": "1",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "48"
-      },
-      {
-        "名称": "虾",
-        "分类": "水产品",
-        "推荐指数": "0",
-        "能量KJ": "297",
-        "蛋白g": "13",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "126"
-      },
-      {
-        "名称": "蛤蜊",
-        "分类": "水产品",
-        "推荐指数": "2",
-        "能量KJ": "360",
-        "蛋白g": "14",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "1",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "30"
-      },
-      {
-        "名称": "蟹",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "364",
-        "蛋白g": "18",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "78"
-      },
-      {
-        "名称": "贻贝",
-        "分类": "水产品",
-        "推荐指数": "4",
-        "能量KJ": "360",
-        "蛋白g": "11",
-        "脂肪g": "2",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "28"
-      },
-      {
-        "名称": "金枪鱼",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "602",
-        "蛋白g": "23",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "38"
-      },
-      {
-        "名称": "鱼子酱",
-        "分类": "水产品",
-        "推荐指数": "-7",
-        "能量KJ": "1105",
-        "蛋白g": "24",
-        "脂肪g": "17",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "588"
-      },
-      {
-        "名称": "鱿鱼",
-        "分类": "水产品",
-        "推荐指数": "5",
-        "能量KJ": "385",
-        "蛋白g": "15",
-        "脂肪g": "1",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "233"
-      },
-      {
-        "名称": "鲈鱼",
-        "分类": "水产品",
-        "推荐指数": "9",
-        "能量KJ": "381",
-        "蛋白g": "19",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "90"
-      },
-      {
-        "名称": "鲍鱼",
-        "分类": "水产品",
-        "推荐指数": "4",
-        "能量KJ": "439",
-        "蛋白g": "17",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "85"
-      },
-      {
-        "名称": "鲟鱼",
-        "分类": "水产品",
-        "推荐指数": "6",
-        "能量KJ": "439",
-        "蛋白g": "16",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "60"
-      },
-      {
-        "名称": "鲤鱼",
-        "分类": "水产品",
-        "推荐指数": "5",
-        "能量KJ": "531",
-        "蛋白g": "17",
-        "脂肪g": "5",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "66"
-      },
-      {
-        "名称": "鲭鱼",
-        "分类": "水产品",
-        "推荐指数": "2",
-        "能量KJ": "858",
-        "蛋白g": "18",
-        "脂肪g": "13",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "70"
-      },
-      {
-        "名称": "鲱鱼",
-        "分类": "水产品",
-        "推荐指数": "0",
-        "能量KJ": "661",
-        "蛋白g": "17",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "60"
-      },
-      {
-        "名称": "鲶鱼",
-        "分类": "水产品",
-        "推荐指数": "8",
-        "能量KJ": "519",
-        "蛋白g": "20",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "59"
-      },
-      {
-        "名称": "鲷鱼",
-        "分类": "水产品",
-        "推荐指数": "9",
-        "能量KJ": "418",
-        "蛋白g": "20",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "37"
-      },
-      {
-        "名称": "鲽鱼",
-        "分类": "水产品",
-        "推荐指数": "2",
-        "能量KJ": "294",
-        "蛋白g": "12",
-        "脂肪g": "1",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "45"
-      },
-      {
-        "名称": "鳕鱼",
-        "分类": "水产品",
-        "推荐指数": "9",
-        "能量KJ": "364",
-        "蛋白g": "18",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "41"
-      },
-      {
-        "名称": "鳗鱼",
-        "分类": "水产品",
-        "推荐指数": "2",
-        "能量KJ": "770",
-        "蛋白g": "18",
-        "脂肪g": "11",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "126"
-      },
-      {
-        "名称": "鳟鱼",
-        "分类": "水产品",
-        "推荐指数": "5",
-        "能量KJ": "619",
-        "蛋白g": "20",
-        "脂肪g": "6",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "58"
-      },
-      {
-        "名称": "沙丁鱼",
-        "分类": "水产品",
-        "推荐指数": "11",
-        "能量KJ": "347",
-        "蛋白g": "0",
-        "脂肪g": "1",
-        "碳水化合物g": "19",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "黄尾",
-        "分类": "水产品",
-        "推荐指数": "7",
-        "能量KJ": "611",
-        "蛋白g": "23",
-        "脂肪g": "5",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "55"
-      },
-      {
-        "名称": "龙虾",
-        "分类": "水产品",
-        "推荐指数": "3",
-        "能量KJ": "324",
-        "蛋白g": "16",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "127"
-      },
-      {
-        "名称": "无花果",
-        "分类": "水果",
-        "推荐指数": "9",
-        "能量KJ": "310",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "19",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "李子",
-        "分类": "水果",
-        "推荐指数": "19",
-        "能量KJ": "192",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "杏",
-        "分类": "水果",
-        "推荐指数": "14",
-        "能量KJ": "201",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "杨桃",
-        "分类": "水果",
-        "推荐指数": "45",
-        "能量KJ": "128",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "枣",
-        "分类": "水果",
-        "推荐指数": "10",
-        "能量KJ": "1176",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "72",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "柠檬",
-        "分类": "水果",
-        "推荐指数": "45",
-        "能量KJ": "121",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "柿子",
-        "分类": "水果",
-        "推荐指数": "21",
-        "能量KJ": "293",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "18",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "桃",
-        "分类": "水果",
-        "推荐指数": "14",
-        "能量KJ": "165",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "桑葚",
-        "分类": "水果",
-        "推荐指数": "41",
-        "能量KJ": "180",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "梨",
-        "分类": "水果",
-        "推荐指数": "43",
-        "能量KJ": "239",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "15",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "榴莲",
-        "分类": "水果",
-        "推荐指数": "41",
-        "能量KJ": "615",
-        "蛋白g": "1",
-        "脂肪g": "5",
-        "碳水化合物g": "27",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "樱桃",
-        "分类": "水果",
-        "推荐指数": "23",
-        "能量KJ": "1395",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "80",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "哈密瓜",
-        "分类": "水果",
-        "推荐指数": "16",
-        "能量KJ": "141",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "8",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "橘子",
-        "分类": "水果",
-        "推荐指数": "14",
-        "能量KJ": "197",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "橙汁",
-        "分类": "水果",
-        "推荐指数": "39",
-        "能量KJ": "188",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "10",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "橙皮",
-        "分类": "水果",
-        "推荐指数": "24",
-        "能量KJ": "405",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "25",
-        "淀粉g": "0",
-        "总膳食纤维g": "10",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "橙菠萝汁",
-        "分类": "水果",
-        "推荐指数": "7",
-        "能量KJ": "214",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "12",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "油桃",
-        "分类": "水果",
-        "推荐指数": "14",
-        "能量KJ": "185",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "10",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "猕猴桃",
-        "分类": "水果",
-        "推荐指数": "30",
-        "能量KJ": "255",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "14",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甜瓜",
-        "分类": "水果",
-        "推荐指数": "3",
-        "能量KJ": "150",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "番木瓜",
-        "分类": "水果",
-        "推荐指数": "31",
-        "能量KJ": "179",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "10",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "石榴",
-        "分类": "水果",
-        "推荐指数": "39",
-        "能量KJ": "346",
-        "蛋白g": "1",
-        "脂肪g": "1",
-        "碳水化合物g": "18",
-        "淀粉g": "0",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "红苹果",
-        "分类": "水果",
-        "推荐指数": "20",
-        "能量KJ": "247",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "14",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芒果",
-        "分类": "水果",
-        "推荐指数": "2",
-        "能量KJ": "250",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "14",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "苹果",
-        "分类": "水果",
-        "推荐指数": "20",
-        "能量KJ": "218",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "苹果汁",
-        "分类": "水果",
-        "推荐指数": "-13",
-        "能量KJ": "191",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "草莓",
-        "分类": "水果",
-        "推荐指数": "34",
-        "能量KJ": "136",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "荔枝",
-        "分类": "水果",
-        "推荐指数": "19",
-        "能量KJ": "276",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "16",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "菠萝",
-        "分类": "水果",
-        "推荐指数": "14",
-        "能量KJ": "209",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "菠萝蜜",
-        "分类": "水果",
-        "推荐指数": "20",
-        "能量KJ": "397",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "23",
-        "淀粉g": "1",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "葡萄",
-        "分类": "水果",
-        "推荐指数": "36",
-        "能量KJ": "280",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "17",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "葡萄干",
-        "分类": "水果",
-        "推荐指数": "-20",
-        "能量KJ": "264",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "15",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "葡萄柚",
-        "分类": "水果",
-        "推荐指数": "43",
-        "能量KJ": "134",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "8",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "蓝莓",
-        "分类": "水果",
-        "推荐指数": "41",
-        "能量KJ": "240",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "14",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "蔓越莓",
-        "分类": "水果",
-        "推荐指数": "31",
-        "能量KJ": "191",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "西瓜",
-        "分类": "水果",
-        "推荐指数": "22",
-        "能量KJ": "127",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "覆盆子",
-        "分类": "水果",
-        "推荐指数": "36",
-        "能量KJ": "220",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "面包果酱",
-        "分类": "水果",
-        "推荐指数": "10",
-        "能量KJ": "431",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "27",
-        "淀粉g": "0",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "香蕉",
-        "分类": "水果",
-        "推荐指数": "19",
-        "能量KJ": "371",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "22",
-        "淀粉g": "5",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "鳄梨",
-        "分类": "水果",
-        "推荐指数": "34",
-        "能量KJ": "670",
-        "蛋白g": "2",
-        "脂肪g": "14",
-        "碳水化合物g": "8",
-        "淀粉g": "0",
-        "总膳食纤维g": "6",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "黑莓",
-        "分类": "水果",
-        "推荐指数": "55",
-        "能量KJ": "181",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "龙眼",
-        "分类": "水果",
-        "推荐指数": "45",
-        "能量KJ": "251",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "15",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "番茄汤",
-        "分类": "汤",
-        "推荐指数": "5",
-        "能量KJ": "165",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "土豆蔬菜汤",
-        "分类": "汤",
-        "推荐指数": "-2",
-        "能量KJ": "126",
-        "蛋白g": "1",
-        "脂肪g": "1",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "1"
-      },
-      {
-        "名称": "素食蔬菜汤",
-        "分类": "汤",
-        "推荐指数": "-3",
-        "能量KJ": "119",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "火腿",
-        "分类": "肉类",
-        "推荐指数": "-4",
-        "能量KJ": "683",
-        "蛋白g": "16",
-        "脂肪g": "8",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "57"
-      },
-      {
-        "名称": "火鸡",
-        "分类": "肉类",
-        "推荐指数": "2",
-        "能量KJ": "790",
-        "蛋白g": "28",
-        "脂肪g": "7",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "109"
-      },
-      {
-        "名称": "烟熏火腿",
-        "分类": "肉类",
-        "推荐指数": "-7",
-        "能量KJ": "591",
-        "蛋白g": "18",
-        "脂肪g": "2",
-        "碳水化合物g": "10",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "50"
-      },
-      {
-        "名称": "烤肉",
-        "分类": "肉类",
-        "推荐指数": "-6",
-        "能量KJ": "1512",
-        "蛋白g": "20",
-        "脂肪g": "30",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "105"
-      },
-      {
-        "名称": "烤鸭",
-        "分类": "肉类",
-        "推荐指数": "-5",
-        "能量KJ": "1410",
-        "蛋白g": "18",
-        "脂肪g": "28",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "84"
-      },
-      {
-        "名称": "烧鹅",
-        "分类": "肉类",
-        "推荐指数": "-2",
-        "能量KJ": "1276",
-        "蛋白g": "25",
-        "脂肪g": "21",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "91"
-      },
-      {
-        "名称": "牛肉汤",
-        "分类": "肉类",
-        "推荐指数": "-2",
-        "能量KJ": "25",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "牛肉瘦",
-        "分类": "肉类",
-        "推荐指数": "4",
-        "能量KJ": "488",
-        "蛋白g": "23",
-        "脂肪g": "2",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "55"
-      },
-      {
-        "名称": "牛肉肥",
-        "分类": "肉类",
-        "推荐指数": "-17",
-        "能量KJ": "2845",
-        "蛋白g": "10",
-        "脂肪g": "70",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "95"
-      },
-      {
-        "名称": "牛蛙",
-        "分类": "肉类",
-        "推荐指数": "5",
-        "能量KJ": "305",
-        "蛋白g": "16",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "50"
-      },
-      {
-        "名称": "猪培根",
-        "分类": "肉类",
-        "推荐指数": "-16",
-        "能量KJ": "1744",
-        "蛋白g": "12",
-        "脂肪g": "39",
-        "碳水化合物g": "1",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "66"
-      },
-      {
-        "名称": "猪头肉",
-        "分类": "肉类",
-        "推荐指数": "-10",
-        "能量KJ": "658",
-        "蛋白g": "13",
-        "脂肪g": "10",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "69"
-      },
-      {
-        "名称": "猪瘦肉",
-        "分类": "肉类",
-        "推荐指数": "6",
-        "能量KJ": "562",
-        "蛋白g": "21",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "64"
-      },
-      {
-        "名称": "猪耳朵",
-        "分类": "肉类",
-        "推荐指数": "0",
-        "能量KJ": "695",
-        "蛋白g": "15",
-        "脂肪g": "10",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "90"
-      },
-      {
-        "名称": "猪肝",
-        "分类": "肉类",
-        "推荐指数": "9",
-        "能量KJ": "690",
-        "蛋白g": "26",
-        "脂肪g": "4",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "355"
-      },
-      {
-        "名称": "猪脑",
-        "分类": "肉类",
-        "推荐指数": "-9",
-        "能量KJ": "577",
-        "蛋白g": "12",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "2552"
-      },
-      {
-        "名称": "猪蹄",
-        "分类": "肉类",
-        "推荐指数": "-3",
-        "能量KJ": "889",
-        "蛋白g": "23",
-        "脂肪g": "12",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "88"
-      },
-      {
-        "名称": "瘦羊肉",
-        "分类": "肉类",
-        "推荐指数": "5",
-        "能量KJ": "862",
-        "蛋白g": "28",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "92"
-      },
-      {
-        "名称": "肉丸",
-        "分类": "肉类",
-        "推荐指数": "-13",
-        "能量KJ": "1196",
-        "蛋白g": "14",
-        "脂肪g": "22",
-        "碳水化合物g": "8",
-        "淀粉g": "2",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "66"
-      },
-      {
-        "名称": "肥猪肉",
-        "分类": "肉类",
-        "推荐指数": "-18",
-        "能量KJ": "2449",
-        "蛋白g": "10",
-        "脂肪g": "60",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "81"
-      },
-      {
-        "名称": "肥羊肉",
-        "分类": "肉类",
-        "推荐指数": "-19",
-        "能量KJ": "2782",
-        "蛋白g": "6",
-        "脂肪g": "70",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "90"
-      },
-      {
-        "名称": "鸡心",
-        "分类": "肉类",
-        "推荐指数": "5",
-        "能量KJ": "640",
-        "蛋白g": "15",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "136"
-      },
-      {
-        "名称": "鸡汤",
-        "分类": "肉类",
-        "推荐指数": "-5",
-        "能量KJ": "26",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "2"
-      },
-      {
-        "名称": "鸡肉",
-        "分类": "肉类",
-        "推荐指数": "-3",
-        "能量KJ": "604",
-        "蛋白g": "28",
-        "脂肪g": "3",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "86"
-      },
-      {
-        "名称": "鸡肝",
-        "分类": "肉类",
-        "推荐指数": "5",
-        "能量KJ": "496",
-        "蛋白g": "16",
-        "脂肪g": "4",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "345"
-      },
-      {
-        "名称": "鹅肝",
-        "分类": "肉类",
-        "推荐指数": "9",
-        "能量KJ": "556",
-        "蛋白g": "16",
-        "脂肪g": "4",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "515"
-      },
-      {
-        "名称": "鹌鹑",
-        "分类": "肉类",
-        "推荐指数": "3",
-        "能量KJ": "803",
-        "蛋白g": "19",
-        "脂肪g": "12",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "76"
-      },
-      {
-        "名称": "南瓜",
-        "分类": "蔬菜",
-        "推荐指数": "57",
-        "能量KJ": "109",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "卷心菜",
-        "分类": "蔬菜",
-        "推荐指数": "45",
-        "能量KJ": "103",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "四季豆",
-        "分类": "蔬菜",
-        "推荐指数": "64",
-        "能量KJ": "131",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "土豆",
-        "分类": "蔬菜",
-        "推荐指数": "54",
-        "能量KJ": "322",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "17",
-        "淀粉g": "15",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "土豆面粉",
-        "分类": "蔬菜",
-        "推荐指数": "53",
-        "能量KJ": "1493",
-        "蛋白g": "6",
-        "脂肪g": "0",
-        "碳水化合物g": "83",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "大白菜",
-        "分类": "蔬菜",
-        "推荐指数": "64",
-        "能量KJ": "55",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "大蒜",
-        "分类": "蔬菜",
-        "推荐指数": "43",
-        "能量KJ": "623",
-        "蛋白g": "6",
-        "脂肪g": "0",
-        "碳水化合物g": "33",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "大豆",
-        "分类": "蔬菜",
-        "推荐指数": "62",
-        "能量KJ": "614",
-        "蛋白g": "12",
-        "脂肪g": "6",
-        "碳水化合物g": "11",
-        "淀粉g": "0",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "小南瓜",
-        "分类": "蔬菜",
-        "推荐指数": "0",
-        "能量KJ": "69",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "小萝卜",
-        "分类": "蔬菜",
-        "推荐指数": "63",
-        "能量KJ": "76",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "山药",
-        "分类": "蔬菜",
-        "推荐指数": "53",
-        "能量KJ": "343",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "20",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "扁豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "54",
-        "能量KJ": "1473",
-        "蛋白g": "24",
-        "脂肪g": "1",
-        "碳水化合物g": "63",
-        "淀粉g": "49",
-        "总膳食纤维g": "10",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "木薯",
-        "分类": "蔬菜",
-        "推荐指数": "38",
-        "能量KJ": "667",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "38",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "洋葱",
-        "分类": "蔬菜",
-        "推荐指数": "46",
-        "能量KJ": "166",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "炒蘑菇",
-        "分类": "蔬菜",
-        "推荐指数": "13",
-        "能量KJ": "110",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "炒香菇",
-        "分类": "蔬菜",
-        "推荐指数": "10",
-        "能量KJ": "162",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "牛蒡根",
-        "分类": "蔬菜",
-        "推荐指数": "71",
-        "能量KJ": "302",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "17",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甘薯",
-        "分类": "蔬菜",
-        "推荐指数": "42",
-        "能量KJ": "359",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "20",
-        "淀粉g": "12",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甜椒",
-        "分类": "蔬菜",
-        "推荐指数": "57",
-        "能量KJ": "84",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甜玉米",
-        "分类": "蔬菜",
-        "推荐指数": "45",
-        "能量KJ": "360",
-        "蛋白g": "3",
-        "脂肪g": "1",
-        "碳水化合物g": "18",
-        "淀粉g": "5",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甜菜",
-        "分类": "蔬菜",
-        "推荐指数": "60",
-        "能量KJ": "180",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "甜菜叶",
-        "分类": "蔬菜",
-        "推荐指数": "62",
-        "能量KJ": "92",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "生姜",
-        "分类": "蔬菜",
-        "推荐指数": "71",
-        "能量KJ": "75",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "生菜",
-        "分类": "蔬菜",
-        "推荐指数": "59",
-        "能量KJ": "62",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "番茄汁",
-        "分类": "蔬菜",
-        "推荐指数": "0",
-        "能量KJ": "72",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "白菜",
-        "分类": "蔬菜",
-        "推荐指数": "56",
-        "能量KJ": "48",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "1",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "白萝卜",
-        "分类": "蔬菜",
-        "推荐指数": "66",
-        "能量KJ": "59",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "白蘑菇",
-        "分类": "蔬菜",
-        "推荐指数": "56",
-        "能量KJ": "93",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "秋葵",
-        "分类": "蔬菜",
-        "推荐指数": "56",
-        "能量KJ": "138",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "竹笋",
-        "分类": "蔬菜",
-        "推荐指数": "66",
-        "能量KJ": "115",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "红心萝卜",
-        "分类": "蔬菜",
-        "推荐指数": "65",
-        "能量KJ": "132",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "红豆",
-        "分类": "蔬菜",
-        "推荐指数": "24",
-        "能量KJ": "121",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "绿豆",
-        "分类": "蔬菜",
-        "推荐指数": "24",
-        "能量KJ": "126",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "羽衣甘蓝",
-        "分类": "蔬菜",
-        "推荐指数": "67",
-        "能量KJ": "207",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "8",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "胡萝卜",
-        "分类": "蔬菜",
-        "推荐指数": "40",
-        "能量KJ": "173",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "9",
-        "淀粉g": "1",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芋头",
-        "分类": "蔬菜",
-        "推荐指数": "58",
-        "能量KJ": "469",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "26",
-        "淀粉g": "0",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芝麻",
-        "分类": "蔬菜",
-        "推荐指数": "54",
-        "能量KJ": "2397",
-        "蛋白g": "17",
-        "脂肪g": "49",
-        "碳水化合物g": "23",
-        "淀粉g": "0",
-        "总膳食纤维g": "11",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芥末",
-        "分类": "蔬菜",
-        "推荐指数": "68",
-        "能量KJ": "114",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芦笋",
-        "分类": "蔬菜",
-        "推荐指数": "64",
-        "能量KJ": "85",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "花椒",
-        "分类": "蔬菜",
-        "推荐指数": "65",
-        "能量KJ": "80",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "花椰菜",
-        "分类": "蔬菜",
-        "推荐指数": "57",
-        "能量KJ": "104",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "芹菜",
-        "分类": "蔬菜",
-        "推荐指数": "55",
-        "能量KJ": "67",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "苦瓜",
-        "分类": "蔬菜",
-        "推荐指数": "57",
-        "能量KJ": "126",
-        "蛋白g": "5",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "茄子",
-        "分类": "蔬菜",
-        "推荐指数": "54",
-        "能量KJ": "104",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "苋菜叶",
-        "分类": "蔬菜",
-        "推荐指数": "36",
-        "能量KJ": "97",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "菊苣",
-        "分类": "蔬菜",
-        "推荐指数": "67",
-        "能量KJ": "71",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "菜豆",
-        "分类": "蔬菜",
-        "推荐指数": "62",
-        "能量KJ": "280",
-        "蛋白g": "6",
-        "脂肪g": "0",
-        "碳水化合物g": "13",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "菠菜",
-        "分类": "蔬菜",
-        "推荐指数": "61",
-        "能量KJ": "97",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "蕨类",
-        "分类": "蔬菜",
-        "推荐指数": "66",
-        "能量KJ": "143",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "藜",
-        "分类": "蔬菜",
-        "推荐指数": "68",
-        "能量KJ": "180",
-        "蛋白g": "4",
-        "脂肪g": "0",
-        "碳水化合物g": "7",
-        "淀粉g": "0",
-        "总膳食纤维g": "4",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "蘑菇",
-        "分类": "蔬菜",
-        "推荐指数": "57",
-        "能量KJ": "141",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "西兰花",
-        "分类": "蔬菜",
-        "推荐指数": "64",
-        "能量KJ": "141",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "西红柿",
-        "分类": "蔬菜",
-        "推荐指数": "66",
-        "能量KJ": "74",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "豆芽",
-        "分类": "蔬菜",
-        "推荐指数": "59",
-        "能量KJ": "510",
-        "蛋白g": "13",
-        "脂肪g": "6",
-        "碳水化合物g": "9",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "豇豆",
-        "分类": "蔬菜",
-        "推荐指数": "63",
-        "能量KJ": "376",
-        "蛋白g": "2",
-        "脂肪g": "0",
-        "碳水化合物g": "18",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "豌豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "65",
-        "能量KJ": "1435",
-        "蛋白g": "21",
-        "脂肪g": "1",
-        "碳水化合物g": "62",
-        "淀粉g": "0",
-        "总膳食纤维g": "15",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "辣椒",
-        "分类": "蔬菜",
-        "推荐指数": "46",
-        "能量KJ": "88",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "5",
-        "淀粉g": "0",
-        "总膳食纤维g": "1",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "韭菜",
-        "分类": "蔬菜",
-        "推荐指数": "40",
-        "能量KJ": "126",
-        "蛋白g": "3",
-        "脂肪g": "0",
-        "碳水化合物g": "4",
-        "淀粉g": "0",
-        "总膳食纤维g": "2",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "香菇",
-        "分类": "蔬菜",
-        "推荐指数": "59",
-        "能量KJ": "160",
-        "蛋白g": "1",
-        "脂肪g": "0",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "3",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "黄瓜",
-        "分类": "蔬菜",
-        "推荐指数": "54",
-        "能量KJ": "65",
-        "蛋白g": "0",
-        "脂肪g": "0",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "水煮蛋",
-        "分类": "蛋类",
-        "推荐指数": "-6",
-        "能量KJ": "597",
-        "蛋白g": "12",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "370"
-      },
-      {
-        "名称": "炒蛋",
-        "分类": "蛋类",
-        "推荐指数": "-9",
-        "能量KJ": "621",
-        "蛋白g": "9",
-        "脂肪g": "10",
-        "碳水化合物g": "1",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "277"
-      },
-      {
-        "名称": "煎蛋",
-        "分类": "蛋类",
-        "推荐指数": "-10",
-        "能量KJ": "643",
-        "蛋白g": "10",
-        "脂肪g": "11",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "313"
-      },
-      {
-        "名称": "鸡蛋",
-        "分类": "蛋类",
-        "推荐指数": "-5",
-        "能量KJ": "599",
-        "蛋白g": "12",
-        "脂肪g": "9",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "372"
-      },
-      {
-        "名称": "鸡蛋白",
-        "分类": "蛋类",
-        "推荐指数": "4",
-        "能量KJ": "216",
-        "蛋白g": "10",
-        "脂肪g": "0",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "鸡蛋黄",
-        "分类": "蛋类",
-        "推荐指数": "-12",
-        "能量KJ": "1346",
-        "蛋白g": "15",
-        "脂肪g": "26",
-        "碳水化合物g": "3",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "1085"
-      },
-      {
-        "名称": "鹌鹑蛋",
-        "分类": "蛋类",
-        "推荐指数": "-6",
-        "能量KJ": "663",
-        "蛋白g": "13",
-        "脂肪g": "11",
-        "碳水化合物g": "0",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "844"
-      },
-      {
-        "名称": "利马豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "15",
-        "能量KJ": "1414",
-        "蛋白g": "21",
-        "脂肪g": "0",
-        "碳水化合物g": "63",
-        "淀粉g": "0",
-        "总膳食纤维g": "19",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "大豆面粉",
-        "分类": "豆类及豆制品",
-        "推荐指数": "7",
-        "能量KJ": "1816",
-        "蛋白g": "37",
-        "脂肪g": "20",
-        "碳水化合物g": "31",
-        "淀粉g": "0",
-        "总膳食纤维g": "9",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "嫩豆腐",
-        "分类": "豆类及豆制品",
-        "推荐指数": "9",
-        "能量KJ": "253",
-        "蛋白g": "7",
-        "脂肪g": "3",
-        "碳水化合物g": "1",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "纳豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "9",
-        "能量KJ": "883",
-        "蛋白g": "19",
-        "脂肪g": "11",
-        "碳水化合物g": "12",
-        "淀粉g": "0",
-        "总膳食纤维g": "5",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "羽扇豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "15",
-        "能量KJ": "1554",
-        "蛋白g": "36",
-        "脂肪g": "9",
-        "碳水化合物g": "40",
-        "淀粉g": "0",
-        "总膳食纤维g": "18",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "老豆腐",
-        "分类": "豆类及豆制品",
-        "推荐指数": "10",
-        "能量KJ": "326",
-        "蛋白g": "9",
-        "脂肪g": "4",
-        "碳水化合物g": "2",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "花生",
-        "分类": "豆类及豆制品",
-        "推荐指数": "1",
-        "能量KJ": "2374",
-        "蛋白g": "25",
-        "脂肪g": "49",
-        "碳水化合物g": "16",
-        "淀粉g": "0",
-        "总膳食纤维g": "8",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "花生酱",
-        "分类": "豆类及豆制品",
-        "推荐指数": "-8",
-        "能量KJ": "2464",
-        "蛋白g": "24",
-        "脂肪g": "49",
-        "碳水化合物g": "21",
-        "淀粉g": "4",
-        "总膳食纤维g": "8",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "蚕豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "17",
-        "能量KJ": "1425",
-        "蛋白g": "26",
-        "脂肪g": "1",
-        "碳水化合物g": "58",
-        "淀粉g": "0",
-        "总膳食纤维g": "25",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "豆浆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "8",
-        "能量KJ": "226",
-        "蛋白g": "3",
-        "脂肪g": "1",
-        "碳水化合物g": "6",
-        "淀粉g": "0",
-        "总膳食纤维g": "0",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "鹰嘴豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "9",
-        "能量KJ": "1581",
-        "蛋白g": "20",
-        "脂肪g": "6",
-        "碳水化合物g": "62",
-        "淀粉g": "0",
-        "总膳食纤维g": "12",
-        "胆固醇mg": "0"
-      },
-      {
-        "名称": "黄豆",
-        "分类": "豆类及豆制品",
-        "推荐指数": "17",
-        "能量KJ": "1443",
-        "蛋白g": "22",
-        "脂肪g": "2",
-        "碳水化合物g": "60",
-        "淀粉g": "0",
-        "总膳食纤维g": "25",
-        "胆固醇mg": "0"
-      }
-    ]
-  },
   "菌群检出详细列表": {
     "核心菌属": [
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "1.1836",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "71%",
-        "检出率%": "99.52%",
-        "说明": "说明:多导致⼈体炎症;致病;导致菌群失衡;产丁酸;肥胖⼈群丰度较⾼;参与胆汁酸代谢;对抗艰难梭菌;"
+        "名称": "Clostridium",
+        "数值": "1.1836"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "4.2684",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "61%",
-        "检出率%": "99.52%",
-        "说明": "说明:核心菌,健康的植物性饮食相关菌,在⾃闭症、多发性硬化中减少;丰度⾼促炎,加剧过敏、"
+        "名称": "Prevotella",
+        "数值": "4.2684"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.9927",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "72%",
-        "检出率%": "99.52%",
-        "说明": "说明:消化抗性淀粉、纤维素,丰度⾼促进肠炎和过敏相关疾病,"
+        "名称": "Ruminococcus",
+        "数值": "1.9927"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "45.0500",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "81%",
-        "检出率%": "99.04%",
-        "说明": "说明:基石菌,消化蔬菜和谷食,蛋白,降解复杂多糖,交叉喂养关键菌,维持免疫和肠道稳态,"
+        "名称": "Bacteroides",
+        "数值": "45.0500"
       },
       {
-        "名称": "优杆菌属 Eubacterium",
-        "丰度%": "1.4728",
-        "正常范围%": "0.0574-5.8432",
-        "人群水平%": "89%",
-        "检出率%": "98.56%",
-        "说明": "说明:基石菌,产短链脂肪酸尤其丁酸,有助于肠道健康,降解胆固醇、调节餐后⾎糖、"
+        "名称": "Eubacterium",
+        "数值": "1.4728"
       },
       {
         "名称": "Lachnoclostridium",
-        "丰度%": "1.5483",
-        "正常范围%": "0.117-6.2036",
-        "人群水平%": "77%",
-        "检出率%": "98.56%",
-        "说明": "说明:丁酸,与内脏脂肪积累相关,与肥胖、⾼⾎压、糖尿病正相关,与肠道炎症、肠癌和阿尔茨海默病进展有关,"
+        "数值": "1.5483"
+      },
+      {
+        "名称": "Faecalibacterium",
+        "数值": "7.1088"
+      },
+      {
+        "名称": "Blautia",
+        "数值": "0.5625"
+      },
+      {
+        "名称": "Dialister",
+        "数值": "0.0977"
+      },
+      {
+        "名称": "Roseburia",
+        "数值": "0.2392"
+      },
+      {
+        "名称": "Agathobacter",
+        "数值": "7.3316"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "7.1088",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "81%",
-        "检出率%": "98.08%",
-        "说明": "说明:基石菌,丁酸生产菌,下⼀代"
+        "名称": "Gemmiger",
+        "数值": "0.1892"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.5625",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "62%",
-        "检出率%": "97.60%",
-        "说明": "说明:消化复合碳水化合物,健康菌,偏低与炎症肠病,营养不良相关,减肥有效菌,缓解炎症性疾病和代谢疾病,"
+        "名称": "Parabacteroides",
+        "数值": "2.4839"
       },
       {
-        "名称": "⽑螺菌属 Lachnospira",
-        "丰度%": "2.3302",
-        "正常范围%": "0-4.805",
-        "人群水平%": "94%",
-        "检出率%": "88.94%",
-        "说明": "说明:基石菌,发酵代谢膳食纤维,利用果蔬果㬵产生⼄酸,丁酸,与睡眠质量呈负相关,过少与多种疾病相关,"
+        "名称": "Alistipes",
+        "数值": "1.3787"
       },
       {
-        "名称": "考拉杆菌属 Phascolarctobacterium",
-        "丰度%": "4.4324",
-        "正常范围%": "0-8.8711",
-        "人群水平%": "84%",
-        "检出率%": "88.94%",
-        "说明": "说明:东⽅⼈肠道的核心菌属,⾼易减肥,与水果蔬菜摄⼊相关,随年龄增加,在重度抑郁、阿尔茨海默病(AD)、⾃闭症⼉童富集,"
+        "名称": "Lachnospira",
+        "数值": "2.3302"
       },
       {
-        "名称": "巨单胞菌属 Megamonas",
-        "丰度%": "0.0169",
-        "正常范围%": "0-21.672",
-        "人群水平%": "47%",
-        "检出率%": "87.50%",
-        "说明": "说明:发酵各种碳水化合物、产⼄酸、丙酸、乳酸,⾃闭症谱系障碍、注意缺陷、多动障碍 (ADHD)急性脑卒中(AIS)"
+        "名称": "Phascolarctobacterium",
+        "数值": "4.4324"
       },
       {
-        "名称": "粪球菌属 Coprococcus",
-        "丰度%": "0.2561",
-        "正常范围%": "0-3.618",
-        "人群水平%": "66%",
-        "检出率%": "86.06%",
-        "说明": "说明:可产丁酸,抑制免疫反应,降低过敏,抑郁、帕金森、认知障碍、便秘,慢性肾病、虚弱者减少,过多导致菌群紊乱,"
+        "名称": "Megamonas",
+        "数值": "0.0169"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1114"
+        "名称": "Coprococcus",
+        "数值": "0.2561"
       },
       {
-        "名称": "0.1914-14.598",
-        "丰度%": "39%",
-        "检出率%": "97.12%",
-        "说明": "说明:最重要的"
+        "名称": "Bifidobacterium",
+        "数值": "0.1114"
       }
     ],
     "益生菌": [
       {
-        "名称": "拟杆菌⻔ Bacteroidetes",
-        "丰度%": "59.404%",
-        "人群水平%": "82%",
-        "检出率%": "98.03%"
+        "名称": "Lactobacillus",
+        "数值": "1.262"
       },
       {
-        "名称": "厚壁菌⻔ Firmicutes",
-        "丰度%": "36.423%",
-        "人群水平%": "50%",
-        "检出率%": "98.95%"
+        "名称": "Lactobacillus rogosae",
+        "数值": "1.258"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "2.875%",
-        "人群水平%": "23%",
-        "检出率%": "93.53%"
+        "名称": "Bifidobacterium",
+        "数值": "0.111"
       },
       {
-        "名称": "放线菌⻔ Actinobacteria",
-        "丰度%": "0.308%",
-        "人群水平%": "40%",
-        "检出率%": "94.62%"
+        "名称": "Bifidobacterium adolescentis",
+        "数值": "0.095"
       },
       {
-        "名称": "疣微菌⻔ Verrucomicrobia",
-        "丰度%": "0.010%",
-        "人群水平%": "53%",
-        "检出率%": "56.29%"
+        "名称": "Bifidobacterium longum",
+        "数值": "0.003"
       },
       {
-        "名称": "螺旋体 Spirochaetes",
-        "丰度%": "0.010%",
-        "人群水平%": "97%",
-        "检出率%": "4.04%"
+        "名称": "Lactobacillus reuteri",
+        "数值": "0.003"
       },
       {
-        "名称": "梭杆菌⻔ Fusobacteria",
-        "丰度%": "0.007%",
-        "人群水平%": "48%",
-        "检出率%": "49.16%"
+        "名称": "Bifidobacterium stercoris",
+        "数值": "0.003"
       },
       {
-        "名称": "厚壁菌/拟杆菌38.0%",
-        "丰度%": "62.0%"
+        "名称": "Bifidobacterium bifidum",
+        "数值": "ND"
       },
       {
-        "名称": "您的厚壁菌氏拟杆菌氏值为:",
-        "丰度%": "0.61"
+        "名称": "Bifidobacterium catenulatum",
+        "数值": "ND"
       },
       {
-        "名称": "核心菌属",
-        "丰度%": "83"
-      }
-    ],
-    "有害菌属": [
-      {
-        "名称": "埃希⽒菌属 Escherichia",
-        "丰度%": "0.1625",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "25%",
-        "检出率%": "99.52%",
-        "说明": "说明:正常菌属,条件致病菌,过多致病,导致菌群失衡"
+        "名称": "Bifidobacterium pseudolongum",
+        "数值": "ND"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0165",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "11%",
-        "检出率%": "99.52%",
-        "说明": "说明:可引起化脓性炎症,个别菌为"
-      },
-      {
-        "名称": "脱硫弧菌属 Desulfovibrio",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0999",
-        "人群水平%": "51%",
-        "检出率%": "33.65%",
-        "说明": "说明:属于变形菌⻔,产生硫化氢,导致炎症、腹泻,对肠道上皮具有毒性,导致胃肠道疾病,约50%⼈群的⼝腔和肠道会携带,"
-      },
-      {
-        "名称": "螺杆菌属 Helicobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.036",
-        "人群水平%": "86%",
-        "检出率%": "22.12%",
-        "说明": "说明:⾰兰⽒阴性菌,微需氧菌,该菌属下的⼀些菌种被发现在⼈类上消化道内壁,部分种为致病菌,"
-      },
-      {
-        "名称": "⼸形菌属 Arcobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0066",
-        "人群水平%": "96%",
-        "检出率%": "7.69%",
-        "说明": "说明:好氧菌,腹泻致病菌,与河流海洋污染相关的潜在"
-      }
-    ],
-    "其它重要菌属": [
+        "名称": "Bifidobacterium gallicum",
+        "数值": "ND"
+      },
       {
-        "名称": "柯林斯⽒菌属 Collinsella",
-        "丰度%": "0.0169",
-        "正常范围%": "0-5.7436",
-        "人群水平%": "30%",
-        "检出率%": "90.38%",
-        "说明": "说明:产⽓菌,与脂质代谢及心脑⾎管相关,过多可导致菌群紊乱,部分"
-      }
-    ],
-    "病原菌属": [],
-    "病原菌检出": [],
-    "肥胖相关菌": [
+        "名称": "Lactobacillus paracasei",
+        "数值": "ND"
+      },
       {
-        "名称": "厚壁菌⻔ Firmicutes",
-        "丰度%": "36.4229",
-        "正常范围%": "19.3377-90.0565",
-        "人群水平%": "50%"
+        "名称": "Lactobacillus johnsonii",
+        "数值": "ND"
       },
       {
-        "名称": "阿德勒⽒菌属 Adlercreutzia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.004",
-        "人群水平%": "90%"
+        "名称": "Lactobacillus helveticus",
+        "数值": "ND"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1114"
+        "名称": "Lactobacillus rhamnosus",
+        "数值": "ND"
       },
       {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
-      }
-    ],
-    "便秘相关菌": [
+        "名称": "Lactobacillus plantarum",
+        "数值": "ND"
+      },
       {
-        "名称": "史⽒甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
+        "名称": "Lactobacillus delbrueckii",
+        "数值": "ND"
       },
       {
-        "名称": "粪球菌属 Coprococcus",
-        "丰度%": "0.2561",
-        "正常范围%": "0-3.618",
-        "人群水平%": "66%"
+        "名称": "Lactobacillus acidophilus",
+        "数值": "ND"
       },
       {
-        "名称": "埃希⽒菌属 Escherichia",
-        "丰度%": "0.1625",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "25%"
+        "名称": "Bifidobacterium animalis",
+        "数值": "ND"
       },
       {
-        "名称": "⽑螺菌属 Lachnospira",
-        "丰度%": "2.3302",
-        "正常范围%": "0-4.805",
-        "人群水平%": "94%"
+        "名称": "Bifidobacterium breve",
+        "数值": "ND"
       },
       {
-        "名称": "厌氧棍状菌属 Anaerotruncus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.1328",
-        "人群水平%": "53%"
+        "名称": "Lactobacillus fermentum",
+        "数值": "ND"
       },
       {
-        "名称": "葡萄球菌属 Staphylococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0105",
-        "人群水平%": "78%"
+        "名称": "Lactobacillus brevis",
+        "数值": "ND"
+      }
+    ],
+    "有害菌属": [
+      {
+        "名称": "Escherichia",
+        "数值": "0.1625"
       },
       {
         "名称": "Streptococcus",
-        "丰度%": "0.0165",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "11%"
+        "数值": "0.0165"
+      },
+      {
+        "名称": "Desulfovibrio",
+        "数值": "ND"
+      },
+      {
+        "名称": "Helicobacter",
+        "数值": "ND"
+      },
+      {
+        "名称": "Arcobacter",
+        "数值": "ND"
       },
       {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.2303",
-        "正常范围%": "0-0.4212",
-        "人群水平%": "59%"
+        "名称": "Anaerobiospirillum",
+        "数值": "ND"
       },
       {
-        "名称": "卵形拟杆菌 Bacteroides ovatus",
-        "丰度%": "1.7467"
+        "名称": "Enterococcus",
+        "数值": "0.0066"
       },
       {
-        "名称": "0.0005-1.4154",
-        "丰度%": "97%"
+        "名称": "Neisseria",
+        "数值": "ND"
       },
       {
-        "名称": "下水道菌属 Cloacibacillus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0468",
-        "人群水平%": "72%"
+        "名称": "Acinetobacter",
+        "数值": "ND"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "1.1836",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "71%"
+        "名称": "Pseudomonas",
+        "数值": "ND"
       },
       {
-        "名称": "肠杆菌属 Enterobacter",
-        "丰度%": "0.0168",
-        "正常范围%": "0-0.083",
-        "人群水平%": "72%"
+        "名称": "Holdemania",
+        "数值": "0.0168"
+      }
+    ],
+    "其它重要菌属": [
+      {
+        "名称": "Collinsella",
+        "数值": "0.0169"
       },
       {
-        "名称": "Erysipelatoclostridium",
-        "丰度%": "0.1186",
-        "正常范围%": "0-1.0458",
-        "人群水平%": "66%"
+        "名称": "Bilophila",
+        "数值": "0.2477"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "7.1088",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "81%"
+        "名称": "Flavonifractor",
+        "数值": "0.1186"
       },
       {
-        "名称": "梭杆菌属 Fusobacterium",
-        "丰度%": "0.0067",
-        "正常范围%": "0-1.21",
-        "人群水平%": "52%"
+        "名称": "Dorea",
+        "数值": "0.0804"
       },
       {
-        "名称": "霍尔德曼穆尔菌属 Holdemanella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.2904",
-        "人群水平%": "65%"
+        "名称": "Hungatella",
+        "数值": "0.0166"
       },
       {
-        "名称": "霍尔德曼⽒菌属 Holdemania",
-        "丰度%": "0.0168",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "81%"
+        "名称": "Oscillospira",
+        "数值": "0.2222"
       },
       {
-        "名称": "巨球形菌属 Megasphaera",
-        "丰度%": "0.0337",
-        "正常范围%": "0-0.1971",
-        "人群水平%": "70%"
+        "名称": "Citrobacter",
+        "数值": "0.0168"
       },
       {
-        "名称": "臭⽓杆菌属 Odoribacter",
-        "丰度%": "0.2953",
-        "正常范围%": "0-1.1786",
-        "人群水平%": "88%"
+        "名称": "Akkermansia",
+        "数值": "0.0101"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "2.4839",
-        "正常范围%": "0-5.433",
-        "人群水平%": "80%"
+        "名称": "Enterobacter",
+        "数值": "0.0168"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.9927",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "72%"
+        "名称": "Turicibacter",
+        "数值": "ND"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1114"
+        "名称": "Butyrivibrio",
+        "数值": "ND"
       },
       {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
+        "名称": "Christensenella",
+        "数值": "ND"
       }
     ],
-    "抑郁相关菌": [
+    "病原菌属": [
+      {
+        "名称": "Haemophilus",
+        "数值": "ND"
+      },
+      {
+        "名称": "Salmonella",
+        "数值": "0.0270"
+      },
       {
-        "名称": "脱硫弧菌属 Desulfovibrio",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0999",
-        "人群水平%": "51%"
+        "名称": "Sutterella",
+        "数值": "0.0880"
       },
       {
-        "名称": "另枝菌属 Alistipes",
-        "丰度%": "1.3787",
-        "正常范围%": "0-20.1524",
-        "人群水平%": "77%"
+        "名称": "Corynebacterium",
+        "数值": "ND"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "45.0500",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "81%"
+        "名称": "Aeromonas",
+        "数值": "ND"
       },
       {
-        "名称": "埃希⽒菌属 Escherichia",
-        "丰度%": "0.1625",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "25%"
+        "名称": "Staphylococcus",
+        "数值": "ND"
       },
       {
-        "名称": "解黄酮菌属 Flavonifractor",
-        "丰度%": "0.1186",
-        "正常范围%": "0-0.415",
-        "人群水平%": "71%"
+        "名称": "Vibrio",
+        "数值": "ND"
       },
       {
-        "名称": "震颤杆菌属 Oscillibacter",
-        "丰度%": "0.0267",
-        "正常范围%": "0-0.0738",
-        "人群水平%": "85%"
+        "名称": "Bilophila wadsworthia",
+        "数值": "0.241"
       },
       {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "2.4839",
-        "正常范围%": "0-5.433",
-        "人群水平%": "80%"
+        "名称": "Bacteroides fragilis",
+        "数值": "0.230"
       },
       {
-        "名称": "放线菌属 Actinomyces",
-        "丰度%": "0.0100",
-        "正常范围%": "0-0.0756",
-        "人群水平%": "53%"
+        "名称": "Escherichia coli",
+        "数值": "0.159"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.5625",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "62%"
+        "名称": "Salmonella enterica",
+        "数值": "0.024"
+      }
+    ],
+    "病原菌检出": [
+      {
+        "名称": "Bilophila wadsworthia",
+        "数值": "0.241"
+      },
+      {
+        "名称": "Bacteroides fragilis",
+        "数值": "0.230"
+      },
+      {
+        "名称": "Escherichia coli",
+        "数值": "0.159"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "1.1836",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "71%"
+        "名称": "Salmonella enterica",
+        "数值": "0.024"
+      }
+    ],
+    "菌纲构成": [
+      {
+        "名称": "Bacteroidia",
+        "数值": "59.404"
       },
       {
-        "名称": "爱格⼠⽒菌属 Eggerthella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0166",
-        "人群水平%": "55%"
+        "名称": "Clostridia",
+        "数值": "29.357"
       },
       {
-        "名称": "嗜⾎杆菌属 Haemophilus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.7752",
-        "人群水平%": "22%"
+        "名称": "Betaproteobacteria",
+        "数值": "1.972"
       },
       {
-        "名称": "霍尔德曼⽒菌属 Holdemania",
-        "丰度%": "0.0168",
-        "正常范围%": "0-0.0378",
-        "人群水平%": "81%"
+        "名称": "Erysipelotrichi",
+        "数值": "1.486"
       },
       {
-        "名称": "克雷伯⽒菌属 Klebsiella",
-        "丰度%": "0.0333",
-        "正常范围%": "0-15.81",
-        "人群水平%": "32%"
+        "名称": "Bacilli",
+        "数值": "1.291"
       },
       {
-        "名称": "副普雷沃⽒菌属 Paraprevotella",
-        "丰度%": "4.2255"
+        "名称": "Gammaproteobacteria",
+        "数值": "0.599"
       },
       {
-        "名称": "0-1.998",
-        "丰度%": "98%"
+        "名称": "Actinobacteria",
+        "数值": "0.278"
       },
       {
-        "名称": "副萨特⽒菌属 Parasutterella",
-        "丰度%": "1.8566",
-        "正常范围%": "0-2.4003",
-        "人群水平%": "89%"
+        "名称": "Deltaproteobacteria",
+        "数值": "0.248"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "4.2684",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "61%"
+        "名称": "Alphaproteobacteria",
+        "数值": "0.053"
       },
       {
-        "名称": "⻙荣菌属 Veillonella",
-        "丰度%": "0.0066",
-        "正常范围%": "0-8.9142",
-        "人群水平%": "14%"
+        "名称": "Coriobacteriia",
+        "数值": "0.030"
       },
       {
-        "名称": "单形拟杆菌 Bacteroides uniformis",
-        "丰度%": "3.0506",
-        "正常范围%": "0.0332-8.3187",
-        "人群水平%": "81%"
+        "名称": "Verrucomicrobiae",
+        "数值": "0.010"
       },
       {
-        "名称": "普⽒栖粪杆菌 Faecalibacterium prausnitzii",
-        "丰度%": "6.5485",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "80%"
+        "名称": "Fusobacteriia",
+        "数值": "0.007"
       },
       {
-        "名称": "食葡糖罗斯拜瑞⽒菌 Roseburia inulinivorans",
-        "丰度%": "0.1182",
-        "正常范围%": "0.0165-4.9966",
-        "人群水平%": "50%"
+        "名称": "Epsilonproteobacteria",
+        "数值": "0.003"
       }
     ],
-    "过敏相关菌": [
+    "菌目构成": [
+      {
+        "名称": "Bacteroidales",
+        "数值": "59.404"
+      },
       {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "0.2303",
-        "正常范围%": "0-0.4212",
-        "人群水平%": "59%"
+        "名称": "Clostridiales",
+        "数值": "26.565"
       },
       {
-        "名称": "枸橼酸杆菌属 Citrobacter",
-        "丰度%": "0.0168",
-        "正常范围%": "0-0.0668",
-        "人群水平%": "71%"
+        "名称": "Burkholderiales",
+        "数值": "1.972"
       },
       {
-        "名称": "克雷伯⽒菌属 Klebsiella",
-        "丰度%": "0.0333",
-        "正常范围%": "0-15.81",
-        "人群水平%": "32%"
+        "名称": "Erysipelotrichales",
+        "数值": "1.486"
       },
       {
-        "名称": "莫拉⽒菌属 Moraxella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0096",
-        "人群水平%": "80%"
+        "名称": "Lactobacillales",
+        "数值": "1.288"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "2.8750",
-        "正常范围%": "0-21.089",
-        "人群水平%": "23%"
+        "名称": "Enterobacteriales",
+        "数值": "0.599"
       },
       {
-        "名称": "肠杆菌科 Enterobacteriaceae",
-        "丰度%": "0.2732",
-        "正常范围%": "0-64.256",
-        "人群水平%": "20%"
+        "名称": "Desulfovibrionales",
+        "数值": "0.248"
       },
       {
-        "名称": "活泼瘤胃球菌 Ruminococcus gnavus",
-        "丰度%": "0.0033",
-        "正常范围%": "0-2.583",
-        "人群水平%": "20%"
+        "名称": "Bifidobacteriales",
+        "数值": "0.111"
       },
       {
-        "名称": "⽓单胞菌属 Aeromonas",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0334",
-        "人群水平%": "80%"
+        "名称": "Coriobacteriales",
+        "数值": "0.030"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.5625",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "62%"
+        "名称": "Verrucomicrobiales",
+        "数值": "0.010"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "0.0066",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "58%"
+        "名称": "Actinomycetales",
+        "数值": "0.010"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "7.1088",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "81%"
+        "名称": "Fusobacteriales",
+        "数值": "0.007"
       },
       {
-        "名称": "丙酸杆菌属 Propionibacterium",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0162",
-        "人群水平%": "91%"
+        "名称": "Campylobacterales",
+        "数值": "0.003"
+      },
+      {
+        "名称": "Rhodospirillales",
+        "数值": "0.003"
       }
     ],
-    "腹胀相关菌": [
+    "菌科构成": [
       {
-        "名称": "史⽒甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
+        "名称": "Bacteroidaceae",
+        "数值": "45.050"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "45.0500",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "81%"
+        "名称": "Lachnospiraceae",
+        "数值": "13.281"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "1.1836",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "71%"
+        "名称": "Ruminococcaceae",
+        "数值": "10.833"
       },
       {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "1.9927",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "72%"
+        "名称": "Prevotellaceae",
+        "数值": "4.268"
       },
       {
-        "名称": "变形菌⻔ Proteobacteria",
-        "丰度%": "2.8750",
-        "正常范围%": "0-21.08931741",
-        "人群水平%": "23%"
+        "名称": "Erysipelotrichaceae",
+        "数值": "1.486"
       },
       {
-        "名称": "艰难梭菌 Clostridium difficile",
-        "丰度%": "ND"
+        "名称": "Porphyromonadaceae",
+        "数值": "1.461"
       },
       {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "0.0066",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "58%"
+        "名称": "Rikenellaceae",
+        "数值": "1.445"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "4.2684",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "61%"
+        "名称": "Lactobacillaceae",
+        "数值": "1.262"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0165",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "11%"
+        "名称": "Clostridiaceae",
+        "数值": "1.204"
+      },
+      {
+        "名称": "Enterobacteriaceae",
+        "数值": "0.273"
+      },
+      {
+        "名称": "Desulfovibrionaceae",
+        "数值": "0.248"
+      },
+      {
+        "名称": "Bifidobacteriaceae",
+        "数值": "0.111"
+      },
+      {
+        "名称": "Alcaligenaceae",
+        "数值": "0.088"
+      },
+      {
+        "名称": "Christensenellaceae",
+        "数值": "0.037"
       },
       {
-        "名称": "蓝藻⻔ Cyanobacteria",
-        "丰度%": "ND",
-        "正常范围%": "0-0.052432984",
-        "人群水平%": "70%"
+        "名称": "Oxalobacteraceae",
+        "数值": "0.027"
       },
       {
-        "名称": "产⽓荚膜梭菌 Clostridium perfringens",
-        "丰度%": "ND"
+        "名称": "Peptococcaceae",
+        "数值": "0.020"
       },
       {
-        "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "1.2616",
-        "正常范围%": "0.166-6.5835",
-        "人群水平%": "81%"
+        "名称": "Coriobacteriaceae",
+        "数值": "0.017"
       },
       {
-        "名称": "⽑螺旋菌科 Lachnospiraceae",
-        "丰度%": "13.2808",
-        "正常范围%": "0.8403-66.733",
-        "人群水平%": "66%"
+        "名称": "Streptococcaceae",
+        "数值": "0.017"
       },
       {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1114"
+        "名称": "Actinomycetaceae",
+        "数值": "0.010"
       },
       {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
+        "名称": "Fusobacteriaceae",
+        "数值": "0.007"
       }
     ],
-    "失眠相关菌": [
+    "菌属构成": [
+      {
+        "名称": "Bacteroides",
+        "数值": "45.050"
+      },
+      {
+        "名称": "Agathobacter",
+        "数值": "7.332"
+      },
+      {
+        "名称": "Faecalibacterium",
+        "数值": "7.109"
+      },
       {
-        "名称": "阿克曼⽒菌属 Akkermansia",
-        "丰度%": "0.0101",
-        "正常范围%": "0.0018-7.8352",
-        "人群水平%": "46%"
+        "名称": "Phascolarctobacterium",
+        "数值": "4.432"
       },
       {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "45.0500",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "81%"
+        "名称": "Prevotella",
+        "数值": "4.268"
       },
       {
-        "名称": "梭菌目 Clostridiales",
-        "丰度%": "26.5652",
-        "正常范围%": "5.2999-89.2167",
-        "人群水平%": "40%"
+        "名称": "Paraprevotella",
+        "数值": "4.226"
       },
       {
-        "名称": "⻓双歧杆菌 Bifidobacterium longum",
-        "丰度%": "0.0033",
-        "正常范围%": "0-0.0996",
-        "人群水平%": "72%"
+        "名称": "Parabacteroides",
+        "数值": "2.484"
       },
       {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "0.5625",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "62%"
+        "名称": "Lachnospira",
+        "数值": "2.330"
       },
       {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "1.1836",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "71%"
+        "名称": "Ruminococcus",
+        "数值": "1.993"
       },
       {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "7.1088",
-        "正常范围%": "5.1543-18.1656",
-        "人群水平%": "81%"
+        "名称": "Parasutterella",
+        "数值": "1.857"
       },
       {
         "名称": "Lachnoclostridium",
-        "丰度%": "1.5483",
-        "正常范围%": "0.117-6.2036",
-        "人群水平%": "77%"
+        "数值": "1.548"
       },
       {
-        "名称": "普雷沃⽒菌属 Prevotella",
-        "丰度%": "4.2684",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "61%"
+        "名称": "Eubacterium",
+        "数值": "1.473"
       },
       {
-        "名称": "龙包茨⽒菌属 Romboutsia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0189",
-        "人群水平%": "73%"
+        "名称": "Alistipes",
+        "数值": "1.379"
       },
       {
-        "名称": "Streptococcus",
-        "丰度%": "0.0165",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "11%"
+        "名称": "Lactobacillus",
+        "数值": "1.262"
       },
       {
-        "名称": "炎症性肠炎",
-        "丰度%": "0.27"
+        "名称": "Clostridium",
+        "数值": "1.184"
       },
       {
-        "名称": "colitogenicbacteria in inflammatory bowel disease. \"Cell 158.5(2014): 1000-",
-        "丰度%": "1010"
+        "名称": "Coprobacter",
+        "数值": "0.875"
       },
       {
-        "名称": "结直肠癌",
-        "丰度%": "0.21"
+        "名称": "CAG-492",
+        "数值": "0.680"
       },
       {
-        "名称": "PeppelenboschNature Reviews Gastroenterology Hepatology 10.12 (2013): 741-",
-        "丰度%": "745."
+        "名称": "Blautia",
+        "数值": "0.562"
       },
       {
-        "名称": "肠易激综合征",
-        "丰度%": "0.17"
+        "名称": "CAG-81",
+        "数值": "0.530"
+      }
+    ],
+    "菌种构成": [
+      {
+        "名称": "Bacteroides vulgatus",
+        "数值": "19.161"
+      },
+      {
+        "名称": "Agathobacter rectalis",
+        "数值": "6.912"
+      },
+      {
+        "名称": "Faecalibacterium prausnitzii",
+        "数值": "6.548"
       },
       {
-        "名称": "根据您的肠道菌群中肠易激综合征患者与健康⼈之间的差异菌群,分析了您的肠易激综合征⻛险,显⽰分值为",
-        "丰度%": "0.17"
+        "名称": "Bacteroides stercoris",
+        "数值": "4.844"
       },
       {
-        "名称": "感染性腹泻",
-        "丰度%": "0.23"
+        "名称": "Phascolarctobacterium faecium",
+        "数值": "3.968"
       },
       {
-        "名称": "胃病",
-        "丰度%": "0.21"
+        "名称": "Paraprevotella clara",
+        "数值": "3.452"
       },
       {
-        "名称": "肝病",
-        "丰度%": "0.12"
+        "名称": "Bacteroides uniformis",
+        "数值": "3.051"
       },
       {
-        "名称": "肾病",
-        "丰度%": "0.05"
+        "名称": "Prevotella sp002299635",
+        "数值": "2.751"
       },
       {
-        "名称": "心脑⾎管疾病",
-        "丰度%": "0.25"
+        "名称": "Bacteroides eggerthii",
+        "数值": "2.704"
       },
       {
-        "名称": "II型糖尿病",
-        "丰度%": "0.18"
+        "名称": "Bacteroides thetaiotaomicron",
+        "数值": "1.992"
       },
       {
-        "名称": "抑郁症",
-        "丰度%": "0.23"
+        "名称": "Parasutterella excrementihominis",
+        "数值": "1.847"
       },
       {
-        "名称": "甲状腺疾病",
-        "丰度%": "0.13"
+        "名称": "Bacteroides caccae",
+        "数值": "1.788"
       },
       {
-        "名称": "胆病",
-        "丰度%": "0.15"
+        "名称": "Bacteroides ovatus",
+        "数值": "1.747"
       },
       {
-        "名称": "肺部疾病",
-        "丰度%": "0.17"
+        "名称": "Lachnospira sp900316325",
+        "数值": "1.516"
       },
       {
-        "名称": "⾃体免疫疾病",
-        "丰度%": "0.12"
+        "名称": "Ruminococcus bicirculans",
+        "数值": "1.488"
       },
       {
-        "名称": "碳水化合物",
-        "丰度%": "67"
+        "名称": "Bacteroides sp002161565",
+        "数值": "1.445"
       },
       {
-        "名称": "蛋白质",
-        "丰度%": "83"
+        "名称": "Parabacteroides distasonis",
+        "数值": "1.394"
       },
       {
-        "名称": "脂肪",
-        "丰度%": "89"
+        "名称": "Lactobacillus rogosae",
+        "数值": "1.258"
       },
       {
-        "名称": "纤维素",
-        "丰度%": "75"
+        "名称": "Lachnoclostridium sp000431375",
+        "数值": "1.040"
       },
       {
-        "名称": "乳制品",
-        "丰度%": "36"
+        "名称": "Prevotella copri",
+        "数值": "0.849"
       }
     ]
+  },
+  "报告解读": {
+    "肠道年龄评估": "肠道菌群与众多的健康问题息息相关,需要了解健康就必须要了解自身的肠道菌群情况。其中有害菌过多⽽有\n益菌缺乏就可能导致菌群失衡、下面将从菌群平衡、菌群多样性、有益菌以及有害菌水平⼏个⽅面来评估您的肠道\n菌群总体状况。\n肠道菌群平衡\n肠道菌群是⼀个复杂的生态系统,通常健康⼈肠道菌群内有害菌不会过量繁殖,主要以中性菌和有益菌为主,\n并且维持在⼀定氏例范围内,如果有害菌和致病菌氏例过⾼或正常肠道菌群过低就会出现肠道菌群失衡,相应的就\n会出现腹泻、消化不良、免疫⼒下降等问题。\n肠道菌群平衡\n39\n中等\n菌群平衡对应的异常称为肠道菌群失调,临床上有I度失调和更严重的II度失调。本报告通过有益菌/有害菌的总\n体情况来评估菌群平衡状态,小于等于2:菌群II度失衡,2~5:菌群I度失衡,5~15:轻微失衡,15~60:中等,大\n于60:健康,同时分值也提⽰菌群平衡水平,越⾼越健康。\n菌群失衡如何调整?\n从菌群失衡的评估⻆度来看,⾸先就是快速增加有益菌特别是双歧杆菌的丰度可有效改善该项指标。因此临床\n上通常提供多联的益生菌制剂来快速补充益生菌,可以短期有效的改善菌群平衡氏例。\n饮食和健康状况以及药物都会对",
+    "健康总分解读": "健康总分\n78\n健康但请注意生活⽅式和饮食\n菌群健康\n \n81\n慢病控制\n \n78\n营养均衡\n \n74\n肠道菌群健康状况评估\n\n\n---PAGEBREAK---\n\n指标范围\n疾病风险评估\n炎症性肠炎\n0.27\n低⻛险\n结直肠癌\n0.21\n低⻛险\n肠易激综合征\n0.17\n低⻛险\n感染性腹泻\n0.23\n低⻛险\n胃病\n0.21\n低⻛险\n肝病\n0.12\n低⻛险\n胆病\n0.15\n低⻛险\n肾病\n0.05\n低⻛险\n心脑血管疾病\n0.25\n低⻛险\nII型糖尿病\n0.18\n低⻛险\n抑郁症\n0.23\n低⻛险\n甲状腺疾病\n0.13\n低⻛险\n肺部感染或疾病\n0.17\n低⻛险\n自体免疫病\n0.12\n低⻛险\n注:本检测仅"
   }
 }

+ 631 - 36
docs/参考资料/extract_full_report_v5.py

@@ -41,8 +41,36 @@ RADICAL_MAP = {
 # This prevents duplicate entries like 普雷沃⽒菌属 vs 普雷沃氏菌属
 _KANGXI_UNI_MAP = {
     '\u2f52': '\u6c0f',  # ⽒ → 氏
-    '\u2f51': '\u6bcd',  # ⽑ → 毋 (was missing)
-    '\u2f59': '\u6b6f',  # ⽙ → 齿 (was missing)
+    '\u2f51': '\u6bcd',  # ⽑ → 毋
+    '\u2f59': '\u6b6f',  # ⽙ → 齿
+    # === 补充映射:PDF文本中常见的Kangxi部首 → CJK统一汉字 ===
+    '\u2f04': '\u4e59',  # ⼄ → 乙 (PDF特有编码)
+    '\u2f20': '\u4e00',  # ⼀ → 一
+    '\u2f21': '\u4e28',  # ⼁ → 丨
+    '\u2f22': '\u4e3f',  # ⼂ → 丿
+    '\u2f23': '\u4e39',  # ⼃ → 丶
+    '\u2f24': '\u4e3b',  # ⼄ → 丿? Actually keep as 大
+    '\u2f2b': '\u5c38',  # ⼫ → 尸
+    '\u2f2d': '\u5c71',  # ⼭ → 山
+    '\u2f44': '\u4e59',  # ⼄ → 乙
+    '\u2f53': '\u6c14',  # ⽓ → 气
+    '\u2f55': '\u6c34',  # ⽔ → 水
+    '\u2f5c': '\u725b',  # ⽜ → 牛
+    '\u2f5f': '\u7389',  # ⽟ → 玉
+    '\u2f7a': '\u7f8a',  # ⽺ → 羊
+    '\u2f81': '\u8089',  # ⾁ → 肉
+    '\u2f83': '\u81ea',  # ⾃ → 自
+    '\u2f8a': '\u8272',  # ⾊ → 色
+    '\u2f8e': '\u8840',  # ⾎ → 血
+    '\u2f95': '\u79be',  # ⾕ → 禾? Actually 谷
+    '\u2f96': '\u8c46',  # ⾖ → 豆
+    '\u2faf': '\u9762',  # ⾯ → 面
+    '\u2fb9': '\u9999',  # ⾹ → 香
+    '\u2fca': '\u9ed1',  # ⿊ → 黑
+    '\u2ec9': '\u8d1d',  # ⻉ → 贝
+    '\u2edd': '\u98df',  # ⻝ → 食
+    '\u2ee2': '\u9a6c',  # ⻢ → 马
+    '\u2ee9': '\u9ec4',  # ⻩ → 黄
 }
 def normalize_chinese(s):
     """Normalize Kangxi radical forms to standard CJK unified ideographs."""
@@ -100,7 +128,7 @@ FOOD_SKIP_TEXTS = [
 
 
 def norm(s):
-    return ''.join(RADICAL_MAP.get(c, c) for c in s)
+    return ''.join(RADICAL_MAP.get(c, _KANGXI_UNI_MAP.get(c, c)) for c in s)
 
 
 def clean_lines(text):
@@ -224,9 +252,9 @@ def extract_overview(lines_all, label):
         else:
             m = re.search(r'性别[::\s]*([\u4e00-\u9fff])', t)
             if m: r['性别'] = m.group(1)
-    m = re.search(r'肠道预测年龄[:\s]*([\d.]+岁?)', t)
+    m = re.search(r'肠道预测年龄[::\s]*([\d.]+岁?)', t)
     if m: r['肠道预测年龄'] = m.group(1)
-    m = re.search(r'肠型[:\s]*(\S+)', t)
+    m = re.search(r'肠型[::\s]*(\S+)', t)
     if m: r['肠型'] = m.group(1)
     for kw in ['肠道菌群平衡', '菌群多样性', '有益菌', '有害菌', '核心菌属']:
         m = re.search(rf'{kw}\s*(\d+)', t)
@@ -236,6 +264,14 @@ def extract_overview(lines_all, label):
     for kw in ['菌群健康', '慢病控制', '营养均衡']:
         m = re.search(rf'{kw}\s*(\d+)', t)
         if m: r[kw] = m.group(1)
+    # 健康总分详细说明:如"76分 良好 64分 一般 30分 需关注"
+    detail = re.search(r'健康总分.*?(?:(\d+)分\s*(\S+)\s*(\d+)分\s*(\S+)\s*(\d+)分\s*(\S+))', t)
+    if detail:
+        r['健康总分详情'] = {
+            '菌群健康': {'分数': detail.group(1), '评级': detail.group(2)},
+            '慢病控制': {'分数': detail.group(3), '评级': detail.group(4)},
+            '营养均衡': {'分数': detail.group(5), '评级': detail.group(6)},
+        }
     return r
 
 
@@ -267,7 +303,9 @@ def extract_all_triplet(all_lines):
             i += 1
         rows, remainder = parse_triplet_until(all_lines[i:], ['主要营养评估', '氨基酸评估'])
         result['主要营养评估'] = rows[:5]
-        ama_rows, _ = parse_triplet_until(remainder, ['氨基酸评估'])
+        # 标记后的前5项是营养页内嵌的氨基酸(苏氨酸/异亮氨酸/亮氨酸/赖氨酸/蛋氨酸)
+        ama_rows = rows[5:10] if len(rows) > 5 else []
+        result['氨基酸评估_p2'] = ama_rows
         result['氨基酸评估_p2'] = ama_rows
 
     # 数据页3: 剩余氨基酸
@@ -319,7 +357,15 @@ def extract_all_triplet(all_lines):
         if all_lines[i] == '抗生素风险评估':
             j = i + 1
             abx_rows, _ = parse_triplet_until(all_lines[j:], ['抗生素耐药风险', '个体化食物推荐表'])
-            result['抗生素风险评估'] = abx_rows
+            # 去重:同名只保留第一条
+            seen = set()
+            deduped = []
+            for r in abx_rows:
+                n = r.get('名称', '')
+                if n and n not in seen:
+                    seen.add(n)
+                    deduped.append(r)
+            result['抗生素风险评估'] = deduped
             break
 
     return result
@@ -451,13 +497,13 @@ def _extract_names_from_region(region_str, known_names, end_pos):
         region_str = region_str.replace(h, '')
     positions = []
     for kn in known_names:
-        # 找所有匹配位置,选第一个后面有数字且不是头部标记的
+        # 找所有匹配位置,选第一个后面有数字(允许空格)且不是头部标记的
         search_start = 0
         while True:
             ii = region_str.find(kn, search_start)
             if ii == -1:
                 break
-            after = region_str[ii+len(kn):ii+len(kn)+5]
+            after = region_str[ii+len(kn):ii+len(kn)+10].lstrip()
             if re.match(r'\d', after):
                 positions.append((ii, kn))
                 break  # 找到第一个有效匹配
@@ -489,11 +535,16 @@ def _extract_names_from_region(region_str, known_names, end_pos):
     local = []
     for i, (ii, kn) in enumerate(positions):
         start_after = ii + len(kn)
-        vm = re.match(r'(\d+(?:\.\d+)?)', region_str[start_after:])
+        # 跳过名称和数值之间的空白字符
+        after_text = region_str[start_after:].lstrip()
+        vm = re.match(r'(\d+(?:\.\d+)?)', after_text)
         if not vm:
             continue
         val = vm.group(1)
-        val_end = start_after + len(val)
+        # 计算实际值结束位置(考虑跳过的空白)
+        whitespace_skipped = len(region_str[start_after:]) - len(after_text)
+        val_start = start_after + whitespace_skipped
+        val_end = val_start + len(val)
         if i + 1 < len(positions):
             next_idx = positions[i + 1][0]
             status = region_str[val_end:next_idx].strip()
@@ -602,9 +653,14 @@ def extract_pathogens_inline(text):
 # ==========================================
 BACTERIA_TABLE_TITLES = [
     '核心菌属构成表', '益生菌', '有害菌属构成表',
-    '其它重要菌属构成表', '病原菌属构成表', '病原菌',
+    '其它重要菌属构成表', '病原菌属构成表',
 ]
 PHYLUM_TABLE_TITLES = ['菌门构成表', '菌群门水平构成表', '门水平菌群构成']
+CLASS_TABLE_TITLES = ['菌纲构成表', '菌群纲水平构成表', '纲水平菌群构成']
+ORDER_TABLE_TITLES = ['菌目构成表', '菌群目水平构成表', '目水平菌群构成']
+FAMILY_TABLE_TITLES = ['菌科构成表', '菌群科水平构成表', '科水平菌群构成']
+GENUS_TABLE_TITLES = ['菌属构成表', '菌群属水平构成表', '属水平菌群构成']
+SPECIES_TABLE_TITLES = ['菌种构成表', '菌群种水平构成表', '种水平菌群构成']
 DISEASE_BACTERIA_TITLES = [
     '肥胖相关菌', '便秘相关菌', '抑郁相关菌', '过敏相关菌',
     '腹胀相关菌', '失眠相关菌', '肠道健康相关菌',
@@ -636,8 +692,14 @@ def extract_bacteria_tables(pdf_path):
         core_genus.extend(rows)
     all_tables['核心菌属'] = core_genus
 
-    # 益生菌
-    prob_rows = _parse_bacteria_table(reader, None, full_text, '益生菌', fmt, skip_header=True)
+    # 益生菌(使用更精确的表头定位,跳过前面的说明文字)
+    prob_marker = '仅列出丰度前22的益生菌种'
+    prob_sidx = full_text.find(prob_marker)
+    if prob_sidx != -1:
+        # 直接使用精确位置附近的文本
+        prob_rows = _parse_bacteria_table(reader, None, full_text, prob_marker, fmt, skip_header=True)
+    else:
+        prob_rows = _parse_bacteria_table(reader, None, full_text, '益生菌', fmt, skip_header=True)
     all_tables['益生菌'] = [r for r in prob_rows if r.get('名称') and r['名称'] not in
         ['我的益生菌都为ND', '仅列出丰度前22的益生菌种。']]
 
@@ -667,6 +729,31 @@ def extract_bacteria_tables(pdf_path):
     if phylum_rows:
         all_tables['菌门构成'] = phylum_rows
 
+    # 菌纲构成表
+    class_rows = _parse_phylum_tables(reader, full_text, fmt, CLASS_TABLE_TITLES)
+    if class_rows:
+        all_tables['菌纲构成'] = class_rows
+
+    # 菌目构成表
+    order_rows = _parse_phylum_tables(reader, full_text, fmt, ORDER_TABLE_TITLES)
+    if order_rows:
+        all_tables['菌目构成'] = order_rows
+
+    # 菌科构成表
+    family_rows = _parse_phylum_tables(reader, full_text, fmt, FAMILY_TABLE_TITLES)
+    if family_rows:
+        all_tables['菌科构成'] = family_rows
+
+    # 菌属构成表
+    genus_rows = _parse_phylum_tables(reader, full_text, fmt, GENUS_TABLE_TITLES)
+    if genus_rows:
+        all_tables['菌属构成'] = genus_rows
+
+    # 菌种构成表
+    species_rows = _parse_phylum_tables(reader, full_text, fmt, SPECIES_TABLE_TITLES)
+    if species_rows:
+        all_tables['菌种构成'] = species_rows
+
     # 疾病相关菌表(disease-related)- 已移到知识库,不再从PDF提取
     # 这些是静态的菌-疾病关联数据,属于公共知识库,非个性化数据
     # 参见: extract_knowledge.py 中的疾病菌表处理
@@ -675,19 +762,96 @@ def extract_bacteria_tables(pdf_path):
     #     for disease_name, rows in disease_rows.items():
     #         all_tables[disease_name] = rows
 
+    # 菌群层级(纲目科属种)- 从"菌群检出详细列表"统一入口提取
+    taxonomy_rows = _parse_taxonomy_levels(reader, full_text, fmt)
+    for key, rows in taxonomy_rows.items():
+        if rows:
+            all_tables[key] = rows
+
     return all_tables
 
 
-def _parse_phylum_tables(reader, full_text, fmt):
-    """提取菌门构成表(phylum level)"""
+def _parse_phylum_tables(reader, full_text, fmt, title_list=None):
+    """提取菌群层级构成表(门/纲/目/科/属/种 level)"""
+    if title_list is None:
+        title_list = PHYLUM_TABLE_TITLES
     results = []
-    for phylum_title in PHYLUM_TABLE_TITLES:
+    for phylum_title in title_list:
         rows = _parse_bacteria_table(reader, None, full_text, phylum_title, fmt)
         results.extend(rows)
     return results
 
 
-def _parse_disease_bacteria(reader, full_text, fmt):
+def _parse_taxonomy_levels(reader, full_text, fmt):
+    """从\"菌群检出详细列表\"中提取纲目科属种各级数据"""
+    results = {}
+    sidx = full_text.find('菌群检出详细列表')
+    if sidx == -1:
+        return results
+
+    # 找该区域结束位置(下一个主标题)
+    end_pos = len(full_text)
+    for t in ['个体化食物推荐表', '报告总结', '健康总分']:
+        ei = full_text.find(t, sidx)
+        if ei != -1 and ei < end_pos:
+            end_pos = ei
+
+    section = full_text[sidx:end_pos]
+
+    # 每个层级用 "纲", "目", "科", "属", "种" 作为标题
+    for level, level_name in [('纲', '菌纲构成'), ('目', '菌目构成'),
+                               ('科', '菌科构成'), ('属', '菌属构成'),
+                               ('种', '菌种构成')]:
+        # 在 section 中找 level 标题后跟"名称 丰度%"
+        marker = f'\n{level}\n名称\n丰度%'
+        li = section.find(marker)
+        if li == -1:
+            # 尝试另一种格式:可能在同一行
+            marker2 = f'{level} 名称 丰度%'
+            li = section.find(marker2)
+            if li == -1:
+                continue
+
+        # 从标题后开始解析三元组数据
+        level_start = li + len(marker) if li == section.find(marker) else li + len(marker2)
+        # 用已有的 _parse_bacteria_table 逻辑,但传入 section 子串
+        # 构造一个伪 full_text 只包含该层级数据
+        # 找下一个层级标题或结束
+        level_end = len(section)
+        for next_level in ['纲', '目', '科', '属', '种']:
+            if next_level == level:
+                continue
+            ni = section.find(f'\n{next_level}\n名称', level_start)
+            if ni != -1 and ni < level_end:
+                level_end = ni
+                break
+
+        level_region = section[level_start:level_end]
+        # 用三元组解析
+        lines = [l.strip() for l in level_region.split('\n') if l.strip()]
+        rows = []
+        i = 0
+        while i < len(lines):
+            if lines[i] in ['名称', '丰度%', '人群水平%', '%人检出']:
+                i += 1
+                continue
+            name = lines[i]
+            if i + 2 < len(lines) and re.match(r'^[\d]+\.?[\d]*%?$', lines[i+1]):
+                pct = lines[i+1]
+                pop_level = lines[i+2] if i + 2 < len(lines) else ''
+                detection = lines[i+3] if i + 3 < len(lines) and re.match(r'^[\d.]+%$', lines[i+3]) else ''
+                entry = {'名称': name, '丰度%': pct, '人群水平%': pop_level}
+                if detection:
+                    entry['检出率%'] = detection
+                rows.append(entry)
+                i += 4 if detection else 3
+            else:
+                i += 1
+
+        if rows:
+            results[level_name] = rows
+
+    return results
     """提取疾病相关菌表(肥胖/便秘/抑郁/过敏/腹胀/失眠/肠道健康等)"""
     all_disease = {}
     for disease_title in DISEASE_BACTERIA_TITLES:
@@ -704,9 +868,16 @@ def _parse_bacteria_table(reader, pages_text, full_text, title, fmt, skip_header
     if sidx == -1:
         return results
 
+    # 病原菌检出表特殊处理:找"仅列出检出的病原菌"(跳过前面的说明文字中的"病原菌")
+    if title == '病原菌':
+        # 搜索更精确的表头
+        better_sidx = full_text.find('仅列出检出的病原菌')
+        if better_sidx != -1:
+            sidx = better_sidx
+
     # 找表格结束位置(下一个标题或页尾)
     end_pos = len(full_text)
-    for t in BACTERIA_TABLE_TITLES + PHYLUM_TABLE_TITLES + DISEASE_BACTERIA_TITLES + ['指标范围', '个体化食物推荐表', '报告总结', '健康总分']:
+    for t in BACTERIA_TABLE_TITLES + PHYLUM_TABLE_TITLES + CLASS_TABLE_TITLES + ORDER_TABLE_TITLES + FAMILY_TABLE_TITLES + GENUS_TABLE_TITLES + SPECIES_TABLE_TITLES + DISEASE_BACTERIA_TITLES + ['指标范围', '个体化食物推荐表', '报告总结', '健康总分']:
         if t == title: continue
         ei = full_text.find(t, sidx + len(title))
         if ei != -1 and ei < end_pos:
@@ -714,7 +885,13 @@ def _parse_bacteria_table(reader, pages_text, full_text, title, fmt, skip_header
 
     region = full_text[sidx:end_pos]
 
-    if fmt == 'triplet':
+    # 检测区域实际格式:如果换行数很少(<3)则是inline格式,即使全局fmt=triplet
+    lines_from_region = [l.strip() for l in region.split('\n') if l.strip()]
+    actual_fmt = fmt
+    if fmt == 'triplet' and len(lines_from_region) <= 5:
+        actual_fmt = 'inline'
+
+    if actual_fmt == 'triplet':
         # 三元组格式:每个字段单独一行
         lines = [l.strip() for l in region.split('\n') if l.strip()]
         # 找到数据开始的位置(跳过标题行)
@@ -744,19 +921,19 @@ def _parse_bacteria_table(reader, pages_text, full_text, title, fmt, skip_header
                 continue
 
             # 找丰度%
-            if i + 1 < len(lines) and re.match(r'^[\d.]+%?$|^ND$', lines[i+1]):
+            if i + 1 < len(lines) and re.match(r'^[\d]+\.?[\d]*%?$|^ND$', lines[i+1]):
                 pct = lines[i+1]
                 normal_range = ''
                 pop_level = ''
                 detection_rate = ''
                 desc = ''
                 j = i + 2
-                # 正常范围
-                if j < len(lines) and re.match(r'^[\d.]+-[\d.]+$', lines[j]):
+                # 正常范围 (允许小数,如 0.06-6.96, 0.03-3.07)
+                if j < len(lines) and re.match(r'^[\d]+\.?[\d]*-[\d]+\.?[\d]*$', lines[j]):
                     normal_range = lines[j]
                     j += 1
-                # 人群水平%
-                if j < len(lines) and re.match(r'^\d+%$', lines[j]):
+                # 人群水平% (允许小数,如 15.66%)
+                if j < len(lines) and re.match(r'^\d+\.?\d*%$', lines[j]):
                     pop_level = lines[j]
                     j += 1
                 # 检出率%
@@ -785,12 +962,61 @@ def _parse_bacteria_table(reader, pages_text, full_text, title, fmt, skip_header
             else:
                 i += 1
     else:
-        # inline 格式:数据挤在一行且数字段无分隔符,无法可靠自动解析
-        # 见 朱评估报告 page 23-26,格式为 名称+丰度+范围+水平%+检出率% 无缝拼接
-        # 示例:梭菌属 Clostridium1.00450.0306-6.961566%99.52%
-        # 其中 1.00450.0306 无法区分 1.0045 + 0.0306 vs 1.004 + 50.0306
-        # 跳过自动提取,用户可参考 raw text
-        pass
+        # inline 格式
+        # 检测是否为"真正压缩"格式(无空格分隔,如"埃希氏菌属 Escherichia0.89200-9.302347%99.52%")
+        # 这种格式无法可靠解析,跳过
+        sample = region[:500]
+        truly_compressed = bool(re.search(r'[a-z]\d', sample, re.IGNORECASE))
+        if not truly_compressed:
+            # 有空格分隔的inline格式(如pathogen表),使用re.finditer
+            # 先清理标题行和说明文字
+            region_clean = region
+            for hdr in ['名称', '丰度%', '正常范围%', '处于人群%水平', '%正常人有检出', '人群水平%', '%人检出']:
+                region_clean = region_clean.replace(hdr, '')
+            # 移除说明文本(非数据行的说明段)
+            region_clean = re.sub(r'说明:[\u4e00-\u9fff\s,。、;:,.;:()()、/a-zA-Z0-9\-]{10,}?(?=[\u4e00-\u9fff]|$)', '', region_clean)
+            # 扫描所有匹配的数据行
+            for m in re.finditer(
+                r'([\u4e00-\u9fff]{2,12}(?:[((][\u4e00-\u9fff\w]+[))])?)\s+'  # 中文名
+                r'(?:[A-Z][a-z]+(?:\s[A-Z][a-z]+)*\s+)?'  # 可选英文名
+                r'(ND|[\d]+\.?[\d]*%?)\s+'  # 丰度
+                r'([\d]+\.?[\d]*-[\d]+\.?[\d]*)?\s*'  # 可选正常范围
+                r'(\d+\.?\d*%?)\s+'  # 人群水平%
+                r'(\d+\.?\d*%)',  # 检出率%
+                region_clean):
+                name = m.group(1).strip()
+                pct = m.group(2)
+                if '病原菌' in name or '构成表' in name or '说明' in name or len(name) <= 1:
+                    continue
+                normal_range = m.group(3) or ''
+                pop_level = m.group(4)
+                if not pop_level.endswith('%'):
+                    pop_level += '%'
+                detection_rate = m.group(5)
+                entry = {'名称': name, '丰度%': pct}
+                if normal_range:
+                    entry['正常范围%'] = normal_range
+                entry['人群水平%'] = pop_level
+                entry['检出率%'] = detection_rate
+                results.append(entry)
+            # 如果模式1没有匹配,尝试模式2:仅中文名+丰度+人群水平(+检出率)
+            if not results:
+                for m in re.finditer(
+                    r'([\u4e00-\u9fff]{2,10}[\u4e00-\u9fff]?)\s+'
+                    r'(ND|[\d]+\.?[\d]*%?)\s+'
+                    r'(\d+\.?\d*%)\s+'
+                    r'(\d+\.?\d*%)?',
+                    region_clean):
+                    name = m.group(1).strip()
+                    pct = m.group(2)
+                    if '病原菌' in name or '构成表' in name or '说明' in name or len(name) <= 1:
+                        continue
+                    pop_level = m.group(3)
+                    detection_rate = m.group(4) or ''
+                    entry = {'名称': name, '丰度%': pct, '人群水平%': pop_level}
+                    if detection_rate:
+                        entry['检出率%'] = detection_rate
+                    results.append(entry)
 
     return results
 
@@ -923,6 +1149,147 @@ def extract_food_table(pdf_path, ref_lookup=None):
     return rows, fmt
 
 
+def _final_fallback_scan(full_text, result, section_known_map):
+    """最终的全文正则扫描——弥补所有提取器漏掉的已知指标项"""
+    for section, known_list in section_known_map.items():
+        existing = {r['名称'] for r in result.get(section, [])}
+        for name in known_list:
+            if name in existing:
+                continue
+            # 搜索多个变体:完整名、去掉括号的后缀
+            search_names = [name]
+            paren = name.find('(')
+            if paren != -1:
+                search_names.append(name[:paren])
+            found = False
+            for sname in search_names:
+                idx = full_text.find(sname)
+                if idx == -1:
+                    continue
+                # 跳过名称之后紧跟着的重复名称(正字+部首两次出现的情况)
+                skip = idx + len(sname)
+                while skip < len(full_text):
+                    ch = full_text[skip]
+                    if ch == '\n' or ch == ' ':
+                        skip += 1
+                    elif '\u4e00' <= ch <= '\u9fff' or '\u2f00' <= ch <= '\u2fdf':
+                        # 又一个中文字或部首,可能是重复的名称
+                        skip += 1
+                    else:
+                        break
+                after = full_text[skip:].lstrip()
+                m = re.match(r'(\d+(?:\.\d+)?)', after)
+                if not m:
+                    continue
+                val = m.group(1)
+                # 状态:取值后面的中文评级词
+                val_end_in_after = m.end()
+                status_raw = after[val_end_in_after:].lstrip()
+                # 清理间隔符(取第一个中文状态词)
+                status_m = re.search(r'([\u4e00-\u9fff/]+)', status_raw)
+                status = status_m.group(1).strip() if status_m else status_raw[:20]
+                if len(status) > 20:
+                    status = status[:20]
+                result.setdefault(section, []).append({'名称': name, '数值': val, '状态': status})
+                found = True
+                break
+            # if not found:  (silent skip)
+
+
+# ==========================================
+# 个性化描述提取(P0/P1)
+# ==========================================
+def extract_interpretation(full_text, indicator_name, pattern_type='nutrition'):
+    """提取指标的个性化解读文本
+
+    P0: 营养/氨基酸/维生素/屏障/SCFA/神经递质的个性化解读
+        格式: "您的苏氨酸营养状况评估分值为10分,有些偏低,建议在现有饮食中适当增加苏氨酸的摄入"
+    P1: 疾病风险个性化解读
+        格式: "根据您的肠道菌群中心脑血管血栓患者与健康人之间的差异菌群,分析了您的心脑血管疾病风险..."
+    """
+    # 生成搜索名称列表:完整名 + 短名(去掉括号部分)
+    search_names = [indicator_name]
+    paren = indicator_name.find('(')
+    if paren != -1:
+        search_names.append(indicator_name[:paren])
+    paren2 = indicator_name.find('(')
+    if paren2 != -1:
+        search_names.append(indicator_name[:paren2])
+
+    if pattern_type == 'nutrition':
+        for sname in search_names:
+            escaped = re.escape(sname)
+            # 直接匹配:名称后可能有"营养"也可能没有,数值和"分"之间可能有空格
+            patterns = [
+                rf'您的{escaped}营养状况评估分值为[\d.]+[\s]*分[,。][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+',
+                rf'您的{escaped}状况评估分值为[\d.]+[\s]*分[,。][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+',
+                rf'{escaped}状况评估分值为[\d.]+[\s]*分[,。][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+',
+            ]
+            for pat in patterns:
+                m = re.search(pat, full_text)
+                if m:
+                    return m.group().strip()
+        # 回退:搜索"状况评估分值"段落,检查名称是否在前30字符内
+        for m in re.finditer(r'(?:营养)?状况评估分值为[\d.]+[\s]*分[,。][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+', full_text):
+            segment = m.group()
+            before = full_text[max(0, m.start()-30):m.start()]
+            for sname in search_names:
+                if sname in before or sname in segment[:40]:
+                    return segment.strip()
+
+    elif pattern_type == 'disease':
+        for sname in search_names:
+            escaped = re.escape(sname)
+            pat = rf'分析了您的{escaped}风险[,。\s][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+'
+            m = re.search(pat, full_text)
+            if m:
+                return m.group().strip()
+        # 回退:搜索"分析了您的"段落,检查名称
+        for m in re.finditer(r'分析了您的[\u4e00-\u9fff]+风险[,。\s][\u4e00-\u9fff\s,、;:,.;:()()、/a-zA-Z0-9\-%]+', full_text):
+            seg = m.group()
+            for sname in search_names:
+                if sname in seg:
+                    return seg.strip()
+
+    return ''
+
+
+def extract_overall_assessment(full_text):
+    """提取整体评估描述(P0)
+
+    包括:肠道年龄评估、健康总分解读、菌群健康状况评估
+    """
+    assessments = {}
+
+    # 肠道年龄评估 - 找"肠道菌群与众多的健康问题息息相关"附近的内容
+    for keyword in ['肠道菌群与众多的健康问题息息相关', '肠道菌群与健康问题']:
+        idx = full_text.find(keyword)
+        if idx != -1:
+            end_markers = ['健康总分', '疾病风险评估', '主要消化道致病菌', '指标范围']
+            end_pos = len(full_text)
+            for m in end_markers:
+                ei = full_text.find(m, idx)
+                if ei != -1 and ei < end_pos:
+                    end_pos = ei
+            text = full_text[idx:end_pos].strip()
+            text = re.sub(r'\d+/\d+', '', text).strip()[:500]
+            if len(text) > 50:
+                assessments['肠道年龄评估'] = text
+                break
+
+    # 健康总分解读
+    idx = full_text.find('健康总分')
+    if idx != -1:
+        # 找"健康总分"后到"肠道菌群"之间的文本
+        end_pos = idx + 800
+        text = full_text[idx:end_pos].strip()
+        text = re.sub(r'\d+/\d+', '', text).strip()[:300]
+        if len(text) > 30:
+            assessments['健康总分解读'] = text
+
+    return assessments
+
+
 # ==========================================
 # 单 PDF ➔ JSON 输出(v5 新增)
 # ==========================================
@@ -946,13 +1313,15 @@ def extract_pdf_to_json(pdf_path):
 
     # 1. 报告概述
     overview = extract_overview(clean_lines(pages_text[0]), label)
-    # 如果第一页没找到关键信息,搜其他页
-    found_info = any(k in str(overview) for k in ['肠道预测年龄', '核心菌属'])
+    # 如果第一页没找到关键信息,搜所有页
+    found_info = any(k in str(overview) for k in ['肠道预测年龄', '核心菌属', '健康总分'])
     if not found_info:
         for pt in pages_text:
-            if '基本信息' in norm(pt) and '肠道预测年龄' in norm(pt):
+            nt = norm(pt)
+            if '肠道预测年龄' in nt or '健康总分' in nt:
                 overview = extract_overview(clean_lines(pt), label)
-                break
+                if '肠道预测年龄' in str(overview) and '健康总分' in str(overview):
+                    break
     result['报告概述'] = overview
 
     if fmt == 'triplet':
@@ -963,6 +1332,15 @@ def extract_pdf_to_json(pdf_path):
         disease_set = set(KNOWN_DISEASE_RISKS)
         result['疾病风险评估'] = [r for r in disease_rows if r['名称'] in disease_set]
 
+        # 回退:用 inline 方式扫描全文,补充 triplet 漏掉的项目
+        missing_disease = extract_inline_module(all_full_text, '疾病风险评估',
+            ['主要营养评估', '主要消化道致病菌'], KNOWN_DISEASE_RISKS)
+        existing_names = {r['名称'] for r in result['疾病风险评估']}
+        for r in missing_disease:
+            if r['名称'] not in existing_names:
+                result['疾病风险评估'].append(r)
+                existing_names.add(r['名称'])
+
         # 主要营养评估
         nutri_rows = parsed.get('主要营养评估', [])
         nutri_set = set(KNOWN_MACRO_NUTRIENTS)
@@ -972,6 +1350,14 @@ def extract_pdf_to_json(pdf_path):
         amino = parsed.get('氨基酸评估_p2', []) + parsed.get('氨基酸评估_p3', [])
         amino_set = set(KNOWN_AMINO_ACIDS)
         result['氨基酸评估'] = [r for r in amino if r['名称'] in amino_set]
+        # 回退:inline 方式补充 triplet 漏掉的氨基酸
+        missing_amino = extract_inline_module(all_full_text, '氨基酸评估',
+            ['维生素评估', '主要消化道致病菌'], KNOWN_AMINO_ACIDS)
+        existing_amino = {r['名称'] for r in result['氨基酸评估']}
+        for r in missing_amino:
+            if r['名称'] not in existing_amino:
+                result['氨基酸评估'].append(r)
+                existing_amino.add(r['名称'])
 
         # 维生素
         vit_rows = parsed.get('维生素评估', [])
@@ -997,6 +1383,35 @@ def extract_pdf_to_json(pdf_path):
         result['短链脂肪酸'] = bs['scfa']
         result['神经递质及激素'] = bs['neurotransmitter']
 
+        # 回退:inline 方式补充肠道屏障/短链脂肪酸/神经递质漏掉的项目
+        for section_key, start_mk, end_mks, known_list in [
+            ('肠道屏障及代谢物', '肠道屏障及菌群代谢物',
+             ['短链脂肪酸', '神经递质', '抗生素风险'], KNOWN_BARRIER),
+            ('短链脂肪酸', '短链脂肪酸',
+             ['神经递质', '抗生素风险'], KNOWN_SCFA),
+            ('神经递质及激素', '神经递质',
+             ['抗生素风险', '个体化食物推荐表'], KNOWN_NEUROTRANSMITTER),
+        ]:
+            extra = extract_inline_module(all_full_text, start_mk, end_mks, known_list)
+            existing = {r['名称'] for r in result.get(section_key, [])}
+            for r in extra:
+                if r['名称'] not in existing:
+                    result.setdefault(section_key, []).append(r)
+                    existing.add(r['名称'])
+
+        # 最终兜底:全文正则扫描所有已知指标名(弥补inline/triplet两种提取器都漏掉的项)
+        _final_fallback_scan(all_full_text, result, {
+            '疾病风险评估': KNOWN_DISEASE_RISKS,
+            '主要营养评估': KNOWN_MACRO_NUTRIENTS,
+            '氨基酸评估': KNOWN_AMINO_ACIDS,
+            '维生素评估': KNOWN_VITAMINS,
+            '微量元素评估': KNOWN_TRACE,
+            '抗生素风险评估': KNOWN_ANTIBIOTICS,
+            '肠道屏障及代谢物': KNOWN_BARRIER,
+            '短链脂肪酸': KNOWN_SCFA,
+            '神经递质及激素': KNOWN_NEUROTRANSMITTER,
+        })
+
     else:
         # inline 格式
         # 疾病风险评估(使用已知疾病名词表)
@@ -1070,9 +1485,189 @@ def extract_pdf_to_json(pdf_path):
     bacteria_tables = extract_bacteria_tables(pdf_path)
     result['菌群检出详细列表'] = bacteria_tables
 
+    # ===== P0: 各指标个性化解读 =====
+    # 营养/氨基酸/维生素/微量元素
+    for section in ['主要营养评估', '氨基酸评估', '维生素评估', '微量元素评估']:
+        for r in result.get(section, []):
+            r['解读'] = extract_interpretation(all_full_text, r['名称'], 'nutrition')
+    # 肠道屏障/SCFA/神经递质
+    for section in ['肠道屏障及代谢物', '短链脂肪酸', '神经递质及激素']:
+        for r in result.get(section, []):
+            r['解读'] = extract_interpretation(all_full_text, r['名称'], 'nutrition')
+
+    # ===== P0: 整体评估描述 =====
+    result['报告解读'] = extract_overall_assessment(all_full_text)
+
+    # ===== P1: 疾病风险个性化解读 =====
+    for r in result.get('疾病风险评估', []):
+        r['解读'] = extract_interpretation(all_full_text, r['名称'], 'disease')
+
+    # ===== 后处理标准化:统一字段命名、删除冗余、清洗名称 =====
+    result = normalize_output(result)
+
     return result
 
 
+def normalize_output(result):
+    """Post-processing: normalize field names, remove redundant fields, clean names
+
+    Personal data output should contain only:
+    - 名称 (standardized to match knowledge base)
+    - 数值 (unified from 评估值/丰度/丰度%)
+    - 状态 (kept for frontend convenience)
+    """
+    # Name standardization map: personal JSON names → knowledge base names
+    NAME_STANDARDIZE = {
+        '心脑血管疾病风险': '心脑血管疾病',
+        '甲状腺疾病风险': '甲状腺疾病',
+        '肠易激综合征风险': '肠易激综合征',
+        '感染性腹泻风险': '感染性腹泻',
+        '炎症性肠炎风险': '炎症性肠炎',
+        '自闭症风险': '自闭症',
+        '抑郁症风险': '抑郁症',
+        '过敏风险': '过敏',
+        '便秘风险': '便秘',
+        '腹胀风险': '腹胀',
+        '肥胖风险': '肥胖',
+        '自体免疫疾病': '自体免疫病',
+        '肺部疾病': '肺部感染或疾病',
+    }
+    # --- 1. Normalize indicator sections ---
+    NORMALIZE_SECTIONS = {
+        '疾病风险评估': {},
+        '主要营养评估': {},
+        '氨基酸评估': {},
+        '维生素评估': {},
+        '微量元素评估': {},
+        '抗生素风险评估': {},
+        '主要消化道致病菌': {'致病菌': '名称', '丰度': '数值', '评估': '状态'},
+        '肠道屏障及代谢物': {'评估值': '数值', '健康状况': '状态'},
+        '短链脂肪酸': {'评估值': '数值', '健康状况': '状态'},
+        '神经递质及激素': {'评估值': '数值', '健康状况': '状态'},
+    }
+    REMOVE_FIELDS = ['正常范围', '解读']
+
+    for section, rename_map in NORMALIZE_SECTIONS.items():
+        items = result.get(section, [])
+        if not items:
+            continue
+        cleaned = []
+        seen_names = set()
+        for item in items:
+            # Rename fields
+            for old_key, new_key in rename_map.items():
+                if old_key in item:
+                    item[new_key] = item.pop(old_key)
+            # Remove redundant fields
+            for rf in REMOVE_FIELDS:
+                item.pop(rf, None)
+            # Clean name: if item has 名称, standardize it
+            name = item.get('名称', '')
+            if name:
+                item['名称'] = NAME_STANDARDIZE.get(name, name)
+            if not name:
+                if item.get('数值', '') is not None and item.get('状态', '') is not None:
+                    # Entry with data but no name - likely a parse error, skip
+                    continue
+            # Deduplicate
+            if name and name in seen_names:
+                continue
+            if name:
+                seen_names.add(name)
+            cleaned.append(item)
+        result[section] = cleaned
+
+    # --- 2. Normalize food recommendation table ---
+    food_table = result.get('个体化食物推荐表', {})
+    if isinstance(food_table, dict) and '数据' in food_table:
+        simplified = []
+        for item in food_table['数据']:
+            simplified.append({
+                '名称': item.get('名称', ''),
+                '推荐指数': item.get('推荐指数', ''),
+            })
+        result['个体化食物推荐表'] = simplified
+    elif isinstance(food_table, list):
+        simplified = []
+        for item in food_table:
+            simplified.append({
+                '名称': item.get('名称', ''),
+                '推荐指数': item.get('推荐指数', ''),
+            })
+        result['个体化食物推荐表'] = simplified
+
+    # --- 3. Normalize bacteria tables ---
+    flora = result.get('菌群检出详细列表', {})
+    if flora:
+        REMOVE_FLORA_FIELDS = ['说明', '正常范围%', '人群水平%', '检出率%']
+        for group_name in list(flora.keys()):
+            items = flora[group_name]
+            if not isinstance(items, list):
+                continue
+            cleaned = []
+            seen_bacteria = set()
+            for item in items:
+                # Skip data corruption entries
+                raw_name = item.get('名称', '')
+                if not raw_name or re.match(r'^[\d\.\-]+', raw_name):
+                    continue
+                # Extract scientific name
+                sci_name = extract_scientific_name(raw_name)
+                if not sci_name or sci_name in seen_bacteria:
+                    continue
+                seen_bacteria.add(sci_name)
+                # Build cleaned entry
+                entry = {'名称': sci_name}
+                raw_val = item.get('丰度%', '')
+                if raw_val in ('ND', '0%', '0'):
+                    entry['数值'] = 'ND'
+                else:
+                    entry['数值'] = raw_val.replace('%', '')
+                cleaned.append(entry)
+            flora[group_name] = cleaned
+
+    # --- 4. Clean up report overview ---
+    overview = result.get('报告概述', {})
+    if overview:
+        # Ensure numeric fields are numbers
+        for num_field in ['肠道菌群平衡', '菌群多样性', '有益菌', '有害菌', '核心菌属',
+                          '健康总分', '菌群健康', '慢病控制', '营养均衡']:
+            if num_field in overview and isinstance(overview[num_field], str):
+                try:
+                    overview[num_field] = int(overview[num_field])
+                except ValueError:
+                    pass
+
+    # --- 5. Remove empty sections ---
+    for key in list(result.keys()):
+        if isinstance(result.get(key), list) and len(result[key]) == 0:
+            del result[key]
+
+    return result
+
+
+def extract_scientific_name(name):
+    """Extract scientific name from combined Chinese/Latin name string.
+
+    Handles patterns:
+    - '梭菌属 Clostridium' → 'Clostridium'
+    - 'Bacteroidia' → 'Bacteroidia'
+    - '拟杆菌纲 Bacteroidia' → 'Bacteroidia'
+    - '丁酸盐(Butyrate)' → 'Butyrate'
+    """
+    if not name:
+        return ''
+    # Pattern: Chinese text + space + Latin/academic text
+    m = re.search(r'([A-Za-z][A-Za-z\s\-\.\(\)\d]+)$', name.strip())
+    if m:
+        return m.group(1).strip()
+    # Already a Latin name
+    if re.match(r'^[A-Za-z]', name):
+        return name.strip()
+    # Chinese only - return as-is
+    return name.strip()
+
+
 # ==========================================
 # 主流程 - 批量 CSV 模式
 # ==========================================
@@ -1335,7 +1930,7 @@ def main_csv():
     for label in triplet_labels:
         pdf_path = os.path.join(BASE, label + '.pdf')
         all_bacteria[label] = extract_bacteria_tables(pdf_path)
-    BACTERIA_CSV_TABLES = ['核心菌属', '益生菌', '有害菌属', '其它重要菌属', '病原菌属', '病原菌检出', '菌门构成']
+    BACTERIA_CSV_TABLES = ['核心菌属', '益生菌', '有害菌属', '其它重要菌属', '病原菌属', '病原菌检出', '菌门构成', '菌纲构成', '菌目构成', '菌科构成', '菌属构成', '菌种构成']
     # 疾病相关菌表(肥胖/便秘等)已移出知识库,不再从报告中提取,详见 extract_knowledge.py
     for table_name in BACTERIA_CSV_TABLES:
         combined = {}

+ 42 - 594
docs/参考资料/儿童示例.json

@@ -58,6 +58,16 @@
       "名称": "自体免疫病",
       "数值": "0.29",
       "状态": "低风险"
+    },
+    {
+      "名称": "肺部疾病",
+      "数值": "0.38",
+      "状态": "注意"
+    },
+    {
+      "名称": "自体免疫疾病",
+      "数值": "0.29",
+      "状态": "低风险"
     }
   ],
   "主要营养评估": [
@@ -88,6 +98,31 @@
     }
   ],
   "氨基酸评估": [
+    {
+      "名称": "苏氨酸",
+      "数值": "92",
+      "状态": "正常"
+    },
+    {
+      "名称": "异亮氨酸",
+      "数值": "81",
+      "状态": "正常"
+    },
+    {
+      "名称": "亮氨酸",
+      "数值": "68",
+      "状态": "正常"
+    },
+    {
+      "名称": "赖氨酸",
+      "数值": "94",
+      "状态": "正常"
+    },
+    {
+      "名称": "蛋氨酸",
+      "数值": "95",
+      "状态": "正常"
+    },
     {
       "名称": "胱氨酸",
       "数值": "92",
@@ -184,6 +219,11 @@
       "名称": "维生素D",
       "数值": "16",
       "状态": "正常"
+    },
+    {
+      "名称": "维生素K2",
+      "数值": "13",
+      "状态": "不足"
     }
   ],
   "微量元素评估": [
@@ -3252,7 +3292,7 @@
       {
         "名称": "0.1914-14.598",
         "丰度%": "39%",
-        "检出率%": "97.12%",
+        "人群水平%": "97.12%",
         "说明": "说明:最重要的"
       }
     ],
@@ -3331,598 +3371,6 @@
       }
     ],
     "病原菌属": [],
-    "病原菌检出": [],
-    "肥胖相关菌": [
-      {
-        "名称": "厚壁菌门 Firmicutes",
-        "丰度%": "75.6217",
-        "正常范围%": "19.3377-90.0565",
-        "人群水平%": "93%"
-      },
-      {
-        "名称": "阿德勒氏菌属 Adlercreutzia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.004",
-        "人群水平%": "90%"
-      },
-      {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1141"
-      },
-      {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
-      }
-    ],
-    "便秘相关菌": [
-      {
-        "名称": "史氏甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
-      },
-      {
-        "名称": "粪球菌属 Coprococcus",
-        "丰度%": "1.4292",
-        "正常范围%": "0-3.618",
-        "人群水平%": "92%"
-      },
-      {
-        "名称": "埃希氏菌属 Escherichia",
-        "丰度%": "0.0181",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "9%"
-      },
-      {
-        "名称": "毛螺菌属 Lachnospira",
-        "丰度%": "2.6397",
-        "正常范围%": "0-4.805",
-        "人群水平%": "95%"
-      },
-      {
-        "名称": "厌氧棍状菌属 Anaerotruncus",
-        "丰度%": "0.0110",
-        "正常范围%": "0-0.1328",
-        "人群水平%": "77%"
-      },
-      {
-        "名称": "葡萄球菌属 Staphylococcus",
-        "丰度%": "0.0626"
-      },
-      {
-        "名称": "0-0.0105",
-        "丰度%": "97%"
-      },
-      {
-        "名称": "Streptococcus",
-        "丰度%": "0.1322",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "47%"
-      },
-      {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "2.2654"
-      },
-      {
-        "名称": "0-0.4212",
-        "丰度%": "85%"
-      },
-      {
-        "名称": "卵形拟杆菌 Bacteroides ovatus",
-        "丰度%": "1.2341",
-        "正常范围%": "0.0005-1.4154",
-        "人群水平%": "96%"
-      },
-      {
-        "名称": "下水道菌属 Cloacibacillus",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0468",
-        "人群水平%": "72%"
-      },
-      {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.6731",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "肠杆菌属 Enterobacter",
-        "丰度%": "ND",
-        "正常范围%": "0-0.083",
-        "人群水平%": "42%"
-      },
-      {
-        "名称": "Erysipelatoclostridium",
-        "丰度%": "0.0110",
-        "正常范围%": "0-1.0458",
-        "人群水平%": "32%"
-      },
-      {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "14.2451",
-        "正常范围%": "0.0351-18.1656",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "梭杆菌属 Fusobacterium",
-        "丰度%": "ND",
-        "正常范围%": "0-1.21",
-        "人群水平%": "37%"
-      },
-      {
-        "名称": "霍尔德曼穆尔菌属 Holdemanella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.2904",
-        "人群水平%": "65%"
-      },
-      {
-        "名称": "霍尔德曼氏菌属 Holdemania",
-        "丰度%": "0.0515"
-      },
-      {
-        "名称": "0-0.0378",
-        "丰度%": "93%"
-      },
-      {
-        "名称": "巨球形菌属 Megasphaera",
-        "丰度%": "0.0294",
-        "正常范围%": "0-0.1971",
-        "人群水平%": "67%"
-      },
-      {
-        "名称": "臭气杆菌属 Odoribacter",
-        "丰度%": "0.3169",
-        "正常范围%": "0-1.1786",
-        "人群水平%": "89%"
-      },
-      {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.6039",
-        "正常范围%": "0-5.433",
-        "人群水平%": "41%"
-      },
-      {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "2.1607",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "74%"
-      },
-      {
-        "名称": "Streptococcus",
-        "丰度%": "0.1322",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "47%"
-      },
-      {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1141"
-      },
-      {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
-      }
-    ],
-    "抑郁相关菌": [
-      {
-        "名称": "脱硫弧菌属 Desulfovibrio",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0999",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "另枝菌属 Alistipes",
-        "丰度%": "0.7512",
-        "正常范围%": "0-20.1524",
-        "人群水平%": "64%"
-      },
-      {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "18.4336",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "44%"
-      },
-      {
-        "名称": "埃希氏菌属 Escherichia",
-        "丰度%": "0.0181",
-        "正常范围%": "0-9.3023",
-        "人群水平%": "9%"
-      },
-      {
-        "名称": "解黄酮菌属 Flavonifractor",
-        "丰度%": "0.2579",
-        "正常范围%": "0-0.415",
-        "人群水平%": "84%"
-      },
-      {
-        "名称": "震颤杆菌属 Oscillibacter",
-        "丰度%": "0.0183",
-        "正常范围%": "0-0.0738",
-        "人群水平%": "80%"
-      },
-      {
-        "名称": "副拟杆菌属 Parabacteroides",
-        "丰度%": "0.6039",
-        "正常范围%": "0-5.433",
-        "人群水平%": "41%"
-      },
-      {
-        "名称": "放线菌属 Actinomyces",
-        "丰度%": "0.0257",
-        "正常范围%": "0-0.0756",
-        "人群水平%": "72%"
-      },
-      {
-        "名称": "厌氧棒状菌属 Anaerostipes",
-        "丰度%": "0.7179",
-        "正常范围%": "0-0.9296",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "3.1770",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "95%"
-      },
-      {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.6731",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "爱格士氏菌属 Eggerthella",
-        "丰度%": "0.0552"
-      },
-      {
-        "名称": "0-0.0166",
-        "丰度%": "93%"
-      },
-      {
-        "名称": "嗜血杆菌属 Haemophilus",
-        "丰度%": "0.0441",
-        "正常范围%": "0-0.7752",
-        "人群水平%": "62%"
-      },
-      {
-        "名称": "霍尔德曼氏菌属 Holdemania",
-        "丰度%": "0.0515"
-      },
-      {
-        "名称": "0-0.0378",
-        "丰度%": "93%"
-      },
-      {
-        "名称": "克雷伯氏菌属 Klebsiella",
-        "丰度%": "0.0510",
-        "正常范围%": "0-15.81",
-        "人群水平%": "36%"
-      },
-      {
-        "名称": "副普雷沃氏菌属 Paraprevotella",
-        "丰度%": "ND",
-        "正常范围%": "0-1.998",
-        "人群水平%": "43%"
-      },
-      {
-        "名称": "副萨特氏菌属 Parasutterella",
-        "丰度%": "0.4495",
-        "正常范围%": "0-2.4003",
-        "人群水平%": "73%"
-      },
-      {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.6430",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "29%"
-      },
-      {
-        "名称": "韦荣菌属 Veillonella",
-        "丰度%": "0.2320",
-        "正常范围%": "0-8.9142",
-        "人群水平%": "63%"
-      },
-      {
-        "名称": "单形拟杆菌 Bacteroides uniformis",
-        "丰度%": "1.9690",
-        "正常范围%": "0.0332-8.3187",
-        "人群水平%": "72%"
-      },
-      {
-        "名称": "普氏栖粪杆菌 Faecalibacterium prausnitzii",
-        "丰度%": "13.9120",
-        "正常范围%": "0.0351-18.1656",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "食葡糖罗斯拜瑞氏菌 Roseburia inulinivorans",
-        "丰度%": "0.8472",
-        "正常范围%": "0.0165-4.9966",
-        "人群水平%": "78%"
-      },
-      {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1141"
-      },
-      {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
-      }
-    ],
-    "过敏相关菌": [
-      {
-        "名称": "脆弱拟杆菌 Bacteroides fragilis",
-        "丰度%": "2.2654"
-      },
-      {
-        "名称": "0-0.4212",
-        "丰度%": "85%"
-      },
-      {
-        "名称": "枸橼酸杆菌属 Citrobacter",
-        "丰度%": "0.0036",
-        "正常范围%": "0-0.0668",
-        "人群水平%": "49%"
-      },
-      {
-        "名称": "克雷伯氏菌属 Klebsiella",
-        "丰度%": "0.0510",
-        "正常范围%": "0-15.81",
-        "人群水平%": "36%"
-      },
-      {
-        "名称": "莫拉氏菌属 Moraxella",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0096",
-        "人群水平%": "80%"
-      },
-      {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "2.4261",
-        "正常范围%": "0-21.089",
-        "人群水平%": "19%"
-      },
-      {
-        "名称": "肠杆菌科 Enterobacteriaceae",
-        "丰度%": "0.1053",
-        "正常范围%": "0-64.256",
-        "人群水平%": "13%"
-      },
-      {
-        "名称": "活泼瘤胃球菌 Ruminococcus gnavus",
-        "丰度%": "0.2246",
-        "正常范围%": "0-2.583",
-        "人群水平%": "71%"
-      },
-      {
-        "名称": "气单胞菌属 Aeromonas",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0334",
-        "人群水平%": "99%"
-      },
-      {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "3.1770",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "95%"
-      },
-      {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "41%"
-      },
-      {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "14.2451",
-        "正常范围%": "0.0351-18.1656",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "丙酸杆菌属 Propionibacterium",
-        "丰度%": "0.0036",
-        "正常范围%": "0-0.0162",
-        "人群水平%": "96%"
-      }
-    ],
-    "腹胀相关菌": [
-      {
-        "名称": "史氏甲烷短杆菌 Methanobrevibacter smithii",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1952",
-        "人群水平%": "85%"
-      },
-      {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "18.4336",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "44%"
-      },
-      {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.6731",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "瘤胃球菌属 Ruminococcus",
-        "丰度%": "2.1607",
-        "正常范围%": "0.266-33.2664",
-        "人群水平%": "74%"
-      },
-      {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "2.4261",
-        "正常范围%": "0-21.08931741",
-        "人群水平%": "19%"
-      },
-      {
-        "名称": "艰难梭菌 Clostridium difficile",
-        "丰度%": "ND"
-      },
-      {
-        "名称": "肠球菌属 Enterococcus",
-        "丰度%": "ND",
-        "正常范围%": "0-1.1362",
-        "人群水平%": "41%"
-      },
-      {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.6430",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "29%"
-      },
-      {
-        "名称": "Streptococcus",
-        "丰度%": "0.1322",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "47%"
-      },
-      {
-        "名称": "蓝藻门 Cyanobacteria",
-        "丰度%": "ND",
-        "正常范围%": "0-0.052432984",
-        "人群水平%": "70%"
-      },
-      {
-        "名称": "产气荚膜梭菌 Clostridium perfringens",
-        "丰度%": "ND"
-      },
-      {
-        "名称": "乳杆菌属 Lactobacillus",
-        "丰度%": "0.1360"
-      },
-      {
-        "名称": "0.166-6.5835",
-        "丰度%": "47%"
-      },
-      {
-        "名称": "毛螺旋菌科 Lachnospiraceae",
-        "丰度%": "30.8155",
-        "正常范围%": "0.8403-66.733",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "双歧杆菌属 Bifidobacterium",
-        "丰度%": "0.1141"
-      },
-      {
-        "名称": "0.1914-12.598",
-        "丰度%": "39%"
-      }
-    ],
-    "失眠相关菌": [
-      {
-        "名称": "阿克曼氏菌属 Akkermansia",
-        "丰度%": "0.0184",
-        "正常范围%": "0.0018-7.8352",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "拟杆菌属 Bacteroides",
-        "丰度%": "18.4336",
-        "正常范围%": "1.0292-55.9251",
-        "人群水平%": "44%"
-      },
-      {
-        "名称": "梭菌目 Clostridiales",
-        "丰度%": "51.4291",
-        "正常范围%": "5.2999-89.2167",
-        "人群水平%": "77%"
-      },
-      {
-        "名称": "长双歧杆菌 Bifidobacterium longum",
-        "丰度%": "0.1141"
-      },
-      {
-        "名称": "0-0.0996",
-        "丰度%": "97%"
-      },
-      {
-        "名称": "经黏液真杆菌属 Blautia",
-        "丰度%": "3.1770",
-        "正常范围%": "0.3366-3.237",
-        "人群水平%": "95%"
-      },
-      {
-        "名称": "梭菌属 Clostridium",
-        "丰度%": "0.6731",
-        "正常范围%": "0.0306-6.9615",
-        "人群水平%": "51%"
-      },
-      {
-        "名称": "粪杆菌属 Faecalibacterium",
-        "丰度%": "14.2451",
-        "正常范围%": "0.0351-18.1656",
-        "人群水平%": "94%"
-      },
-      {
-        "名称": "Lachnoclostridium",
-        "丰度%": "1.5173",
-        "正常范围%": "0.117-6.2036",
-        "人群水平%": "76%"
-      },
-      {
-        "名称": "普雷沃氏菌属 Prevotella",
-        "丰度%": "0.6430",
-        "正常范围%": "0.3652-81.2736",
-        "人群水平%": "29%"
-      },
-      {
-        "名称": "龙包茨氏菌属 Romboutsia",
-        "丰度%": "ND",
-        "正常范围%": "0-0.0189",
-        "人群水平%": "73%"
-      },
-      {
-        "名称": "Streptococcus",
-        "丰度%": "0.1322",
-        "正常范围%": "0-1.3257",
-        "人群水平%": "47%"
-      },
-      {
-        "名称": "厚壁菌门 Firmicutes",
-        "丰度%": "75.622%",
-        "人群水平%": "93%",
-        "检出率%": "98.95%"
-      },
-      {
-        "名称": "拟杆菌门 Bacteroidetes",
-        "丰度%": "20.818%",
-        "人群水平%": "33%",
-        "检出率%": "98.03%"
-      },
-      {
-        "名称": "变形菌门 Proteobacteria",
-        "丰度%": "2.426%",
-        "人群水平%": "19%",
-        "检出率%": "93.53%"
-      },
-      {
-        "名称": "放线菌门 Actinobacteria",
-        "丰度%": "0.680%",
-        "人群水平%": "55%",
-        "检出率%": "94.62%"
-      },
-      {
-        "名称": "衣原体 Chlamydiae",
-        "丰度%": "0.328%",
-        "人群水平%": "99%",
-        "检出率%": "0.14%"
-      },
-      {
-        "名称": "疣微菌门 Verrucomicrobia",
-        "丰度%": "0.018%",
-        "人群水平%": "59%",
-        "检出率%": "56.29%"
-      },
-      {
-        "名称": "您的厚壁菌比拟杆菌比值为:",
-        "丰度%": "3.63"
-      },
-      {
-        "名称": "中国人群平均的厚壁菌比拟杆菌比例为:",
-        "丰度%": "2.6"
-      }
-    ]
+    "病原菌检出": []
   }
 }

+ 290 - 0
docs/参考资料/字段拆分清单.md

@@ -0,0 +1,290 @@
+# 字段拆分清单 — 个人数据 vs 知识库
+
+> 目标:每个字段明确归属「个人数据 JSON(因人而异)」或「知识库 JSON(所有人共用)」
+> 状态标记:✅ = 已有 · ⚠️ = 部分有 · ❌ = 没有
+
+---
+
+## 一、报告概述(基本信息 + 总分)
+
+### 个人 JSON 现状
+```
+姓名 / 编号 / 年龄 / 性别
+肠道预测年龄 / 肠型
+肠道菌群平衡(38) / 菌群多样性(50) / 有益菌(22) / 有害菌(26) / 核心菌属(85)
+健康总分(57) / 菌群健康(76) / 慢病控制(64) / 营养均衡(30)
+```
+
+### 拆分方案
+
+| 字段 | 归属 | 原因 |
+|------|------|------|
+| 姓名/编号/年龄/性别 | **个人** ✅ | 基础身份信息 |
+| 肠道预测年龄(55.52岁) | **个人** ✅ | 检测计算结果 |
+| 肠型("普雷沃氏菌型") | **个人** ✅ | 判定结果 |
+| 菌群多样性/有益菌/有害菌/核心菌属 数值 | **个人** ✅ | 检测数值 |
+| 健康总分/菌群健康/慢病控制/营养均衡 数值 | **个人** ✅ | 评分值 |
+| 健康总分分级标准(0-40需关注/40-60一般/60-80良好/80-100优秀) | **知识库** ✅ 已有 | 健康总分评估 |
+| 菌群健康/慢病控制/营养均衡 分级标准 | **知识库** ⚠️ 有字段无分级 | 需补充 |
+| 肠道年龄计算逻辑/参考标准 | **知识库** ❌ | 需补充 |
+
+---
+
+## 二、指标类数据(8 组)
+
+### 2.1 疾病风险评估(18 项)
+
+#### 个人 JSON 现状
+```json
+{"名称":"炎症性肠炎", "数值":"0.24", "状态":"低风险", "解读":""}
+```
+→ `解读` 字段全部为空
+
+#### 知识库 JSON 现状
+```json
+{"名称":"炎症性肠炎", "说明":"肠道慢性炎症性疾病风险评估"}
+```
+→ 有标准范围(0-1) + 状态分级(低风险<0.3 / 注意0.3-0.5 / 高风险>0.5)
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称 | **知识库** ✅ | 已有 |
+| 数值(0.24) | **个人** ✅ | 个人检测值 |
+| 状态(低风险) | **个人** 或 **动态计算** | 可用知识库分级+个人数值算出 |
+| 标准范围(0-1) / 状态分级 | **知识库** ✅ | 已有 |
+| 说明(一句话) | **知识库** ✅ | 已有 |
+| 高的影响 / 调整建议 | **知识库** ❌ | **需补充** |
+| 解读(个性化语句) | **个人** | 知识库模板+个人数据动态拼接 |
+
+### 2.2 主要营养评估(5 项)
+
+#### 个人 JSON 现状
+```json
+{"名称":"碳水化合物", "评估值":"44", "健康状况":"正常", "正常范围":"15-100", "解读":"您的…评估分值为44分,属于正常范围…"}
+```
+→ `解读` 部分有值(模板化文字,大多为"保持现有饮食即可")
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称 | **知识库** ✅ | 已有 |
+| 评估值(44) | **个人** ✅ | 个人检测值 |
+| 健康状况(正常) | **个人** 或 **动态计算** | 可由知识库范围算出 |
+| 正常范围(15-100) | **知识库** ✅ | 已有(状态分级隐含) |
+| 说明(一句话) | **知识库** ✅ | 已有 |
+| 解读文字 | **动态拼接** ⚠️ | 现有"解读"是模板文本→应改为知识库存模板 + 个人数值填充 |
+| 偏低的调整建议 | **知识库** ❌ | **需补充** |
+| 偏高的调整建议 | **知识库** ❌ | **需补充** |
+
+### 2.3 氨基酸评估(15 项)
+
+与营养评估结构完全相同。`解读` 字段部分有值(类似模板化文字)。
+
+拆分方案同 2.2。
+
+### 2.4 维生素评估(10 项)
+
+同 2.2。
+
+### 2.5 微量元素评估(2 项)
+
+同 2.2。
+
+### 2.6 肠道屏障及代谢物(11 项)
+
+#### 个人 JSON 现状
+```json
+{"名称":"肠道炎症水平", "评估值":"16", "健康状况":"正常", "正常范围":"0-80", "解读":""}
+```
+→ `解读` 全部为空
+
+#### 知识库现状
+```json
+// 整体标准范围=null, 状态分级=null
+// 每个指标独立定义标准范围和分级
+{"名称":"肠道炎症水平", "标准范围":{"最小":0,"最大":80}, "状态分级":[{"状态":"正常",0,80},{"状态":"过高",80,100}], "说明":"肠道炎症程度评估"}
+```
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称 | **知识库** ✅ | 已有 |
+| 评估值(16) | **个人** ✅ | 个人检测值 |
+| 健康状况(正常) | **个人** 或 **动态计算** | 可由知识库范围算出 |
+| 标准范围 / 状态分级 | **知识库** ✅ | 已有(每项独立) |
+| 说明(一句话) | **知识库** ✅ | 已有 |
+| "正常范围"重复存 | **→ 删除** | 个人JSON里的`正常范围`与知识库重复,应移除 |
+| 解读(个性化建议) | **动态生成** ❌ | 知识库没有调整建议模板 |
+
+### 2.7 短链脂肪酸(4 项)
+
+结构同 2.6,`解读` 全部为空。
+
+拆分方案同 2.6。
+
+### 2.8 神经递质及激素(11 项)
+
+结构同 2.6,`解读` 全部为空。
+
+拆分方案同 2.6。
+
+---
+
+## 三、抗生素风险评估(9 项)
+
+#### 个人 JSON 现状
+```json
+{"名称":"β-内酰胺酶类", "丰度":"0%", "正常范围":"0-100", "健康状况":"低风险", "解读":""}
+```
+→ 有`丰度`替代`评估值`,`解读` 全部为空
+
+#### 知识库现状
+有标准范围(0-100) + 状态分级(低风险<30 / 注意30-60 / 高风险>60)
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称 | **知识库** ✅ | 已有 |
+| 丰度(0%) | **个人** ✅ | 个人检测值 |
+| 健康状况 | **个人** 或 **动态计算** | 可由知识库范围算出 |
+| 标准范围/状态分级 | **知识库** ✅ | 已有 |
+| 各抗生素的作用说明 | **知识库** ❌ | **需补充** |
+| 解读 | **动态生成** ❌ | 需补充调整建议模板 |
+
+---
+
+## 四、个体化食物推荐表(224 条)
+
+#### 个人 JSON 现状
+```json
+{"名称":"大麦", "分类":"主食", "推荐指数":"17",
+ "能量KJ":"1481", "蛋白g":"12", "脂肪g":"2",
+ "碳水化合物g":"73", "总膳食纤维g":"17"}
+```
+→ 224 条食物,包含完整的营养数据(能量/蛋白/脂肪/碳水/纤维/胆固醇)和推荐指数
+
+#### 拆分方案 🔥 关键决策
+
+这里有一个架构选择:
+
+| 方案 | 做法 | 优劣 |
+|------|------|------|
+| **A. 全量食物库在知识库** | 知识库存 224 条食物的基础营养数据 + 推荐指数计算规则;个人数据只存 224 个 `推荐指数` 值 | ✅ 节省体积,食物数据集中维护<br>❌ 每次展示需查两个数据源再合并 |
+| **B. 全量食物在个人数据** | 个人数据完整存每条食物的名称+分类+营养数据+推荐指数 | ✅ 展示时一次性取出<br>❌ 重复存储(每份报告都存同样的224条),个人JSON膨胀 |
+
+**推荐方案 A**:知识库存食物基础库 + 计算规则,个人数据只存最终推荐指数。
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称/分类/营养数据 | **知识库** ❌ | **需新建食物库** |
+| 推荐指数计算规则 | **知识库** ❌ | **需补充算法** |
+| 推荐指数(224 个数值) | **个人** ✅ | 已有 |
+| 食物分类体系 | **知识库** ❌ | **需补充** |
+
+---
+
+## 五、菌群检出详细列表(核心大块)
+
+### 5.1 功能分组菌属(核心菌属 / 益生菌 / 有害菌属 / 其它重要菌属)
+
+#### 个人 JSON 现状
+```json
+{"名称":"梭菌属 Clostridium", "丰度%":"0.2787", "正常范围%":"0.0306-6.9615",
+ "人群水平%":"23%", "检出率%":"99.52%",
+ "说明":"说明:多导致人体炎症;致病;导致菌群失衡;产丁酸…"}
+```
+→ `说明` 字段内容为各菌属的功能解释(来自原始报告),**乱码和截断问题严重**
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 名称(梭菌属 Clostridium) | **个人** ✅ | 检测到的菌属列表 |
+| 丰度%(0.2787) | **个人** ✅ | 个人检测值 |
+| 正常范围% / 人群水平% / 检出率% | **个人** ✅ | 检测结果 |
+| 分组归属(核心菌属/益生菌/有害菌) | **个人** ⚠️ | 已有分组,但分组方式需与知识库统一 |
+| 菌属功能说明(是什么、作用) | **知识库** ❌ | **需新建菌属功能库** |
+| 偏高/偏低的影响 | **知识库** ❌ | **需补充** |
+| 调整建议(怎么吃/怎么补) | **知识库** ❌ | **需补充** |
+
+### 5.2 分类层级(纲 / 目 / 科 / 属 / 种)
+
+#### 个人 JSON 现状
+```
+菌纲构成: 12 纲 (拟杆菌纲76.721% / 梭菌纲17.067% / …)
+菌目构成: 14 目
+菌科构成: 20 科
+菌属构成: 20 属
+菌种构成: 19 种(仅丰度,无名)
+```
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 各层级丰度值(76.721%) | **个人** ✅ | 个人检测数据 |
+| 菌群分类层级标准映射(纲→目→科→属→种) | **知识库** ❌ | **需补充**(标准分类树) |
+| 各菌属的功能说明 | **知识库** ❌ | **需新建** |
+
+### 5.3 病原菌属 / 病原菌检出
+
+#### 个人 JSON 现状
+```json
+// 病原菌属(17项)
+{"名称":"嗜血杆菌属 Haemophilus", "丰度%":"ND", "说明":"病原菌,过多可导致菌群紊乱…"}
+// 病原菌检出(4项,仅丰度)
+{"丰度%":"0.135%"}
+```
+
+#### 拆分
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 检出列表 + 丰度 | **个人** ✅ | 已有 |
+| 各病原菌的致病说明 | **知识库** ❌ | 个人JSON里散落一些→应移入知识库统一管理 |
+| 临床意义的解读 | **知识库** ❌ | **需补充** |
+
+---
+
+## 六、报告解读 / 总结(目前几乎完全丢失)
+
+#### 个人 JSON 现状
+- 散见少量解读文字(~800字),截断严重
+- `解读` 字段大多为空
+
+#### 拆分方案
+
+| 字段 | 归属 | 状态 |
+|------|------|------|
+| 各模块固定话术模板 | **知识库** ❌ | **需新建解读模板库** |
+| 各状态的话术变体(正常版/偏高版/偏低版) | **知识库** ❌ | **需补充** |
+| 个性化数据填充点(数值/状态/食物名) | **个人** ✅ | 已有 |
+| 综合方案生成规则(优先级/汇总逻辑) | **知识库** ❌ | **需补充** |
+
+---
+
+## 七、总结:知识库待补全清单
+
+| 模块 | 需补充内容 | 工作量评估 |
+|------|-----------|-----------|
+| 评分体系 | 菌群健康/慢病控制/营养均衡 分级标准 + 肠道年龄参考 | 小 |
+| 指标定义库 | 每项指标偏高/偏低的影响 + 调整建议(饮食/补剂/生活方式) | **大** (~80 项指标) |
+| 菌属功能库 | 所有菌属的功能说明 + 高低影响 + 调整方向 | **大** (~60+ 菌属) |
+| 分类层级标准 | 门→纲→目→科→属→种 的标准映射树 | 中 |
+| 食物库 | 224 种食物的基础营养数据 | 中(可搬运现有数据) |
+| 解读模板库 | 各模块固定话术 + 状态变体 + 生成规则 | **大** |
+
+### 个人 JSON 删除/瘦身项
+
+| 字段 | 原因 |
+|------|------|
+| 各项的`正常范围` | 与知识库标准范围重复 |
+| 各项的`健康状况`/`状态` | 可由个人数值 + 知识库分级动态算出 |
+| 各项的`解读`(大部分为空) | 改为动态拼接,无需存储 |
+| 食物推荐表的营养数据(224×7字段) | 若不采用方案A(全量食物在知识库),则保留 |
+| `说明`字段(菌属功能散落在个人数据) | 移入知识库统一管理 |

+ 0 - 225
docs/参考资料/推荐指数汇总.csv

@@ -1,225 +0,0 @@
-名称,分类,能量KJ,蛋白g,脂肪g,碳水化合物g,淀粉g,总膳食纤维g,胆固醇mg,某人,侯,547982403,儿童示例,朱评估报告
-大麦,主食,1481,12,2,73,0,17,0,17,10,12,20,1
-小米,主食,1582,11,4,72,0,8,0,5,5,5,9,4
-小麦,主食,1423,10,1,75,0,12,0,10,3,7,1,4
-小麦面包,主食,1116,10,3,48,36,4,0,-14,-7,-7,-17,-6
-意大利面,主食,386,1,3,13,0,2,0,-4,0,0,-5,-1
-燕麦,主食,297,17,6,66,0,1,0,35,31,32,38,3
-玉米粒,主食,298,1,0,14,14,0,0,38,39,39,42,3
-米饭,主食,1527,7,0,79,0,1,0,-12,-1,-4,-4,-3
-玉米饼,主食,912,5,2,44,0,6,0,7,4,6,6,4
-荞麦面粉,主食,1402,12,3,70,0,10,0,0,1,1,0,0
-葡萄干浆即食谷物,主食,1354,7,1,78,0,13,0,0,0,0,0,0
-面条,主食,1609,14,4,71,0,3,84,-10,-1,-4,-1,-2
-鸡蛋面包,主食,1201,9,6,47,0,2,51,-11,-1,-3,-2,-2
-黑麦面包,主食,1188,9,3,53,0,6,0,-6,1,0,3,0
-冰淇淋,乳制品,690,1,3,32,0,0,8,-11,-4,-5,-15,-5
-奶油,乳制品,515,3,10,4,0,0,35,-20,-5,-7,-10,-7
-奶酪,乳制品,1552,23,29,2,0,0,94,-8,-1,-4,8,-1
-牛奶,乳制品,268,3,3,4,0,0,14,9,3,4,10,4
-脱脂牛奶,乳制品,142,3,0,4,0,0,2,15,6,8,15,7
-黄油,乳制品,2999,0,81,0,0,0,215,-48,-20,-27,-50,-2
-山核桃,干果,2889,9,71,13,0,9,0,-15,-7,-8,-22,-8
-山核桃干,干果,2749,12,64,18,0,6,0,-5,-3,-3,-9,-3
-杏仁,干果,2423,21,49,21,0,12,0,-3,-2,-2,-5,-2
-开心果,干果,2392,21,45,28,1,10,0,-13,-6,-8,-15,-7
-松子,干果,2816,13,68,13,1,3,0,-17,-7,-10,-20,-9
-栗子,干果,1519,6,1,79,0,0,0,37,50,47,54,4
-核桃,干果,2738,15,65,13,0,6,0,-10,-5,-6,-15,-6
-椰肉,干果,1481,3,33,15,0,9,0,0,0,0,0,0
-榛子,干果,2629,14,60,16,0,9,0,40,45,44,38,4
-橡子,干果,1619,6,23,40,0,0,0,36,44,42,36,4
-腰果,干果,2402,15,46,32,0,3,0,-9,-3,-4,-5,-3
-芝麻酱,干果,2454,18,50,24,0,5,0,3,1,1,4,1
-莲子,干果,372,4,0,17,0,0,0,53,45,47,52,4
-葵花子,干果,2445,20,51,20,0,8,0,-1,-1,-1,-2,-1
-银杏坚果,干果,1456,10,2,72,0,0,0,-8,0,-2,2,
-比萨,快餐,1121,10,12,29,18,2,14,-12,-4,-6,-6,-4
-热狗,快餐,1167,9,3,50,36,1,0,-17,-5,-9,-7,-6
-鸡米花,快餐,1469,17,21,21,18,1,40,-20,-7,-11,-12,-8
-三文鱼,水产品,594,19,6,0,0,0,55,16,6,7,22,7
-凤尾鱼,水产品,548,20,4,0,0,0,60,15,6,7,26,8
-墨鱼,水产品,331,16,0,0,0,0,112,8,6,6,27,7
-大比目鱼,水产品,382,18,1,0,0,0,49,15,7,8,25,8
-大西洋鳕鱼,水产品,343,17,0,0,0,0,43,0,0,0,0,0
-小龙虾,水产品,322,15,0,0,0,0,114,13,7,8,24,8
-扇贝,水产品,289,12,0,3,2,0,24,0,2,1,14,2
-条纹鲈鱼,水产品,406,17,2,0,0,0,80,18,8,9,28,1
-海鲈鱼,水产品,332,15,1,0,0,0,52,5,4,3,18,4
-牡蛎,水产品,339,9,2,4,0,0,50,14,9,9,28,1
-白鲑,水产品,611,17,8,0,0,0,65,10,4,5,16,5
-石斑鱼,水产品,385,19,1,0,0,0,37,23,9,11,30,1
-章鱼,水产品,343,14,1,2,0,0,48,11,9,8,29,9
-虾,水产品,297,13,1,0,0,0,126,-2,2,0,14,1
-蛤蜊,水产品,360,14,0,3,1,0,30,0,4,2,20,3
-蟹,水产品,364,18,1,0,0,0,78,13,9,8,30,1
-贻贝,水产品,360,11,2,3,0,0,28,4,5,4,21,5
-金枪鱼,水产品,602,23,4,0,0,0,38,15,7,8,26,8
-鱼子酱,水产品,1105,24,17,4,0,0,588,-19,-2,-7,1,-4
-鱿鱼,水产品,385,15,1,3,0,0,233,9,5,5,19,6
-鲈鱼,水产品,381,19,0,0,0,0,90,16,8,9,27,9
-鲍鱼,水产品,439,17,0,6,0,0,85,5,5,4,21,5
-鲟鱼,水产品,439,16,4,0,0,0,60,12,5,6,20,6
-鲤鱼,水产品,531,17,5,0,0,0,66,11,4,5,16,5
-鲭鱼,水产品,858,18,13,0,0,0,70,4,3,2,14,3
-鲱鱼,水产品,661,17,9,0,0,0,60,2,0,0,5,0
-鲶鱼,水产品,519,20,4,0,0,0,59,17,7,8,27,9
-鲷鱼,水产品,418,20,1,0,0,0,37,17,8,9,27,9
-鲽鱼,水产品,294,12,1,0,0,0,45,3,2,2,14,3
-鳕鱼,水产品,364,18,0,0,0,0,41,16,8,9,27,9
-鳗鱼,水产品,770,18,11,0,0,0,126,5,2,2,11,2
-鳟鱼,水产品,619,20,6,0,0,0,58,11,5,5,20,6
-沙丁鱼,水产品,347,0,1,19,0,5,0,19,8,11,13,9
-黄尾,水产品,611,23,5,0,0,0,55,17,6,7,24,8
-龙虾,水产品,324,16,0,0,0,0,127,3,5,3,22,5
-无花果,水果,310,0,0,19,0,2,0,15,7,9,8,7
-李子,水果,192,0,0,11,0,1,0,13,21,19,2,2
-杏,水果,201,1,0,11,0,2,0,2,17,14,-7,1
-杨桃,水果,128,1,0,6,0,2,0,57,41,45,56,4
-枣,水果,1176,4,0,72,0,6,0,-6,15,10,-3,1
-柠檬,水果,121,1,0,9,0,2,0,58,41,45,56,4
-柿子,水果,293,0,0,18,0,3,0,16,23,21,5,2
-桃,水果,165,0,0,9,0,1,0,3,17,14,-8,1
-桑葚,水果,180,1,0,9,0,1,0,50,37,41,46,3
-梨,水果,239,0,0,15,0,3,0,55,39,43,43,4
-榴莲,水果,615,1,5,27,0,3,0,43,39,41,47,3
-樱桃,水果,1395,1,0,80,0,2,0,20,24,23,10,2
-哈密瓜,水果,141,0,0,8,0,0,0,6,19,16,2,1
-橘子,水果,197,0,0,11,0,2,0,1,17,14,-5,1
-橙汁,水果,188,0,0,10,0,0,0,47,37,39,48,3
-橙皮,水果,405,1,0,25,0,10,0,38,21,24,37,2
-橙菠萝汁,水果,214,0,0,12,0,0,0,14,5,7,12,6
-油桃,水果,185,1,0,10,0,1,0,3,16,14,-9,1
-猕猴桃,水果,255,1,0,14,0,3,0,32,31,30,34,3
-甜瓜,水果,150,0,0,9,0,0,0,-4,5,3,-11,4
-番木瓜,水果,179,0,0,10,0,1,0,32,31,31,33,3
-石榴,水果,346,1,1,18,0,4,0,46,36,39,37,3
-红苹果,水果,247,0,0,14,0,2,0,13,21,20,-1,1
-芒果,水果,250,0,0,14,0,1,0,-11,6,2,-15,4
-苹果,水果,218,0,0,13,0,2,0,14,21,20,1,2
-苹果汁,水果,191,0,0,11,0,0,0,-19,-12,-13,-40,-1
-草莓,水果,136,0,0,7,0,2,0,37,34,34,36,3
-荔枝,水果,276,0,0,16,0,1,0,25,16,19,26,1
-菠萝,水果,209,0,0,13,0,1,0,1,18,14,-1,1
-菠萝蜜,水果,397,1,0,23,1,1,0,14,23,20,10,2
-葡萄,水果,280,0,0,17,0,0,0,40,34,36,33,3
-葡萄干,水果,264,1,0,15,0,0,0,-38,-15,-20,-43,-1
-葡萄柚,水果,134,0,0,8,0,1,0,54,40,43,52,4
-蓝莓,水果,240,0,0,14,0,2,0,40,41,41,31,4
-蔓越莓,水果,191,0,0,11,0,3,0,33,30,31,25,3
-西瓜,水果,127,0,0,7,0,0,0,19,23,22,9,2
-覆盆子,水果,220,1,0,11,0,6,0,42,33,36,33,3
-面包果酱,水果,431,1,0,27,0,4,0,15,7,10,11,7
-香蕉,水果,371,1,0,22,5,2,0,10,21,19,3,1
-鳄梨,水果,670,2,14,8,0,6,0,37,32,34,31,3
-黑莓,水果,181,1,0,9,0,5,0,61,53,55,53,5
-龙眼,水果,251,1,0,15,0,1,0,55,43,45,60,4
-番茄汤,汤,165,0,0,9,0,0,0,8,3,5,5,
-土豆蔬菜汤,汤,126,1,1,3,0,0,1,-5,-1,-2,-3,
-素食蔬菜汤,汤,119,0,0,4,0,0,0,-5,-4,-3,-11,
-火腿,肉类,683,16,8,3,0,1,57,-11,-2,-4,3,-2
-火鸡,肉类,790,28,7,0,0,0,109,4,3,2,16,3
-烟熏火腿,肉类,591,18,2,10,0,0,50,-14,-4,-7,-1,-5
-烤肉,肉类,1512,20,30,0,0,0,105,-11,-3,-6,-1,-4
-烤鸭,肉类,1410,18,28,0,0,0,84,-6,-3,-5,-1,-3
-烧鹅,肉类,1276,25,21,0,0,0,91,0,-1,-2,5,0
-牛肉汤,肉类,25,1,0,0,0,0,0,-2,-4,-2,-9,
-牛肉瘦,肉类,488,23,2,0,0,0,55,7,1,4,11,4
-牛肉肥,肉类,2845,10,70,0,0,0,95,-29,-12,-17,-24,-1
-牛蛙,肉类,305,16,0,0,0,0,50,12,1,5,9,4
-猪培根,肉类,1744,12,39,1,0,0,66,-28,-12,-16,-25,-1
-猪头肉,肉类,658,13,10,0,0,0,69,-18,-10,-10,-18,-9
-猪瘦肉,肉类,562,21,4,0,0,0,64,11,5,6,21,6
-猪耳朵,肉类,695,15,10,0,0,0,90,1,0,0,10,0
-猪肝,肉类,690,26,4,3,0,0,355,14,9,9,30,1
-猪脑,肉类,577,12,9,0,0,0,2552,-21,-6,-9,-12,-7
-猪蹄,肉类,889,23,12,0,0,0,88,1,-5,-3,-6,-2
-瘦羊肉,肉类,862,28,9,0,0,0,92,12,5,5,24,7
-肉丸,肉类,1196,14,22,8,2,2,66,-25,-12,-13,-26,-1
-肥猪肉,肉类,2449,10,60,0,0,0,81,-34,-13,-18,-28,-1
-肥羊肉,肉类,2782,6,70,0,0,0,90,-32,-13,-19,-29,-1
-鸡心,肉类,640,15,9,0,0,0,136,9,5,5,20,5
-鸡汤,肉类,26,0,0,0,0,0,2,-8,-6,-5,-17,
-鸡肉,肉类,604,28,3,0,0,0,86,-2,-1,-3,4,-1
-鸡肝,肉类,496,16,4,0,0,0,345,2,6,5,22,5
-鹅肝,肉类,556,16,4,6,0,0,515,9,10,9,31,1
-鹌鹑,肉类,803,19,12,0,0,0,76,8,2,3,14,4
-南瓜,蔬菜,109,1,0,6,0,0,0,66,55,57,61,5
-卷心菜,蔬菜,103,1,0,5,0,2,0,51,43,45,49,4
-四季豆,蔬菜,131,1,0,6,0,2,0,68,62,64,63,6
-土豆,蔬菜,322,2,0,17,15,2,0,57,52,54,53,5
-土豆面粉,蔬菜,1493,6,0,83,0,5,0,48,54,53,56,5
-大白菜,蔬菜,55,1,0,2,0,1,0,75,61,64,79,6
-大蒜,蔬菜,623,6,0,33,0,2,0,47,42,43,51,4
-大豆,蔬菜,614,12,6,11,0,4,0,72,59,62,75,6
-小南瓜,蔬菜,69,1,0,3,0,1,0,0,0,0,0,0
-小萝卜,蔬菜,76,0,0,4,0,1,0,74,59,63,72,6
-山药,蔬菜,343,1,0,20,0,0,0,56,52,53,49,5
-扁豆,豆类及豆制品,1473,24,1,63,49,10,0,55,54,54,60,5
-木薯,蔬菜,667,1,0,38,0,1,0,36,38,38,37,3
-洋葱,蔬菜,166,1,0,9,0,1,0,45,46,46,35,4
-炒蘑菇,蔬菜,110,3,0,4,0,1,0,24,9,13,21,1
-炒香菇,蔬菜,162,3,0,7,0,3,0,17,7,10,13,8
-牛蒡根,蔬菜,302,1,0,17,0,3,0,78,68,71,72,6
-甘薯,蔬菜,359,1,0,20,12,3,0,35,43,42,27,4
-甜椒,蔬菜,84,0,0,4,0,1,0,65,55,57,67,5
-甜玉米,蔬菜,360,3,1,18,5,2,0,42,46,45,37,4
-甜菜,蔬菜,180,1,0,9,0,2,0,67,58,60,65,5
-甜菜叶,蔬菜,92,2,0,4,0,3,0,68,60,62,78,6
-生姜,蔬菜,75,0,0,3,0,1,0,86,66,71,83,6
-生菜,蔬菜,62,1,0,2,0,1,0,68,56,59,65,5
-番茄汁,蔬菜,72,0,0,3,0,0,0,0,0,0,6,0
-白菜,蔬菜,48,1,0,1,0,1,0,59,55,56,70,5
-白萝卜,蔬菜,59,1,0,2,0,1,0,81,61,66,78,6
-白蘑菇,蔬菜,93,3,0,3,0,1,0,63,53,56,57,5
-秋葵,蔬菜,138,1,0,7,0,3,0,62,54,56,59,5
-竹笋,蔬菜,115,2,0,5,0,2,0,81,61,66,76,6
-红心萝卜,蔬菜,132,1,0,7,0,3,0,76,62,65,79,6
-红豆,蔬菜,121,4,0,4,0,0,0,38,20,24,38,2
-绿豆,蔬菜,126,3,0,5,0,1,0,35,20,24,33,2
-羽衣甘蓝,蔬菜,207,4,0,8,0,3,0,80,63,67,82,6
-胡萝卜,蔬菜,173,0,0,9,1,2,0,33,41,40,24,4
-芋头,蔬菜,469,1,0,26,0,4,0,62,56,58,59,5
-芝麻,蔬菜,2397,17,49,23,0,11,0,57,53,54,56,5
-芥末,蔬菜,114,2,0,4,0,3,0,83,63,68,81,6
-芦笋,蔬菜,85,2,0,3,0,2,0,71,61,64,66,6
-花椒,蔬菜,80,0,0,4,0,1,0,77,61,65,72,6
-花椰菜,蔬菜,104,1,0,4,0,2,0,63,56,57,66,5
-芹菜,蔬菜,67,0,0,2,0,1,0,60,52,55,54,5
-苦瓜,蔬菜,126,5,0,3,0,0,0,72,53,57,74,5
-茄子,蔬菜,104,0,0,5,0,3,0,59,52,54,49,5
-苋菜叶,蔬菜,97,2,0,4,0,0,0,50,33,36,52,3
-菊苣,蔬菜,71,0,0,4,0,3,0,83,61,67,72,6
-菜豆,蔬菜,280,6,0,13,0,0,0,70,59,62,76,6
-菠菜,蔬菜,97,2,0,3,0,2,0,68,59,61,75,6
-蕨类,蔬菜,143,4,0,5,0,0,0,80,61,66,78,6
-藜,蔬菜,180,4,0,7,0,4,0,83,65,68,84,6
-蘑菇,蔬菜,141,2,0,6,0,2,0,64,54,57,56,5
-西兰花,蔬菜,141,2,0,6,0,2,0,74,60,64,72,6
-西红柿,蔬菜,74,0,0,3,0,1,0,74,63,66,67,6
-豆芽,蔬菜,510,13,6,9,0,1,0,69,57,59,72,5
-豇豆,蔬菜,376,2,0,18,0,5,0,73,60,63,68,6
-豌豆,豆类及豆制品,1435,21,1,62,0,15,0,72,62,65,78,6
-辣椒,蔬菜,88,0,0,5,0,1,0,35,48,46,57,4
-韭菜,蔬菜,126,3,0,4,0,2,0,47,38,40,46,3
-香菇,蔬菜,160,1,0,6,0,3,0,63,56,59,59,5
-黄瓜,蔬菜,65,0,0,3,0,0,0,61,52,54,51,5
-水煮蛋,蛋类,597,12,9,0,0,0,370,-13,-4,-6,-7,-5
-炒蛋,蛋类,621,9,10,1,0,0,277,-22,-6,-9,-12,-8
-煎蛋,蛋类,643,10,11,0,0,0,313,-24,-7,-10,-13,-9
-鸡蛋,蛋类,599,12,9,0,0,0,372,-12,-3,-5,-6,-4
-鸡蛋白,蛋类,216,10,0,0,0,0,0,10,4,4,19,5
-鸡蛋黄,蛋类,1346,15,26,3,0,0,1085,-26,-8,-12,-20,-1
-鹌鹑蛋,蛋类,663,13,11,0,0,0,844,-14,-3,-6,-5,-4
-利马豆,豆类及豆制品,1414,21,0,63,0,19,0,21,13,15,29,1
-大豆面粉,豆类及豆制品,1816,37,20,31,0,9,0,11,6,7,19,7
-嫩豆腐,豆类及豆制品,253,7,3,1,0,0,0,18,6,9,18,8
-纳豆,豆类及豆制品,883,19,11,12,0,5,0,16,7,9,19,8
-羽扇豆,豆类及豆制品,1554,36,9,40,0,18,0,26,12,15,29,1
-老豆腐,豆类及豆制品,326,9,4,2,0,0,0,19,7,10,22,9
-花生,豆类及豆制品,2374,25,49,16,0,8,0,4,1,1,5,1
-花生酱,豆类及豆制品,2464,24,49,21,4,8,0,-14,-6,-8,-12,-7
-蚕豆,豆类及豆制品,1425,26,1,58,0,25,0,25,14,17,30,1
-豆浆,豆类及豆制品,226,3,1,6,0,0,0,19,5,8,13,7
-鹰嘴豆,豆类及豆制品,1581,20,6,62,0,12,0,12,8,9,19,8
-黄豆,豆类及豆制品,1443,22,2,60,0,25,0,27,14,17,29,1

File diff suppressed because it is too large
+ 898 - 2646
docs/参考资料/朱评估报告.json


+ 4314 - 0
docs/参考资料/知识库/报告指标知识库.json

@@ -0,0 +1,4314 @@
+{
+  "元数据": {
+    "名称": "菌群报告指标知识库",
+    "版本": "3.0",
+    "说明": "v3: 新增食物库、菌属功能库、指标调整建议。数据与模板分离,学名匹配。",
+    "数据来源": "5份肠道菌群健康检测报告交叉验证",
+    "用途": "用于报告指标值的自动化状态比对,取值规则:遍历状态分级,若值在[最小值, 最大值)区间内则匹配该状态"
+  },
+  "疾病风险评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 1
+    },
+    "状态分级": [
+      {
+        "状态": "低风险",
+        "最小值": 0,
+        "最大值": 0.3
+      },
+      {
+        "状态": "注意",
+        "最小值": 0.3,
+        "最大值": 0.5
+      },
+      {
+        "状态": "高风险",
+        "最小值": 0.5,
+        "最大值": 1
+      }
+    ],
+    "指标": [
+      {
+        "名称": "炎症性肠炎",
+        "说明": "肠道慢性炎症性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制炎症性肠炎的风险水平。"
+      },
+      {
+        "名称": "肠易激综合征",
+        "说明": "功能性肠道疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肠易激综合征的风险水平。"
+      },
+      {
+        "名称": "感染性腹泻",
+        "说明": "细菌/病毒感染性腹泻风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制感染性腹泻的风险水平。"
+      },
+      {
+        "名称": "自闭症",
+        "说明": "自闭症谱系障碍风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制自闭症的风险水平。"
+      },
+      {
+        "名称": "抑郁症",
+        "说明": "抑郁症风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制抑郁症的风险水平。"
+      },
+      {
+        "名称": "甲状腺疾病",
+        "说明": "甲状腺功能异常风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制甲状腺疾病的风险水平。"
+      },
+      {
+        "名称": "肺部感染或疾病",
+        "说明": "呼吸系统疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肺部感染或疾病的风险水平。"
+      },
+      {
+        "名称": "肺部疾病",
+        "说明": "肺部疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肺部疾病的风险水平。"
+      },
+      {
+        "名称": "自体免疫病",
+        "说明": "自身免疫性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制自体免疫病的风险水平。"
+      },
+      {
+        "名称": "结直肠癌",
+        "说明": "结直肠癌风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制结直肠癌的风险水平。"
+      },
+      {
+        "名称": "肥胖",
+        "说明": "肥胖风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肥胖的风险水平。"
+      },
+      {
+        "名称": "便秘",
+        "说明": "便秘风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制便秘的风险水平。"
+      },
+      {
+        "名称": "过敏",
+        "说明": "过敏性疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制过敏的风险水平。"
+      },
+      {
+        "名称": "失眠",
+        "说明": "睡眠障碍风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制失眠的风险水平。"
+      },
+      {
+        "名称": "肝病",
+        "说明": "肝脏疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肝病的风险水平。"
+      },
+      {
+        "名称": "肾病",
+        "说明": "肾脏疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制肾病的风险水平。"
+      },
+      {
+        "名称": "胃病",
+        "说明": "胃部疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制胃病的风险水平。"
+      },
+      {
+        "名称": "胆病",
+        "说明": "胆囊/胆道疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制胆病的风险水平。"
+      },
+      {
+        "名称": "心脑血管疾病",
+        "说明": "心脑血管疾病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制心脑血管疾病的风险水平。"
+      },
+      {
+        "名称": "II型糖尿病",
+        "说明": "II型糖尿病风险评估",
+        "偏高影响": "",
+        "偏低影响": "低风险提示该疾病风险较低,保持现有健康状态即可。",
+        "调整建议": "维持健康的饮食和生活习惯,定期关注肠道菌群变化,有助于控制II型糖尿病的风险水平。"
+      }
+    ]
+  },
+  "主要营养评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "碳水化合物",
+        "说明": "主要能量来源",
+        "偏高影响": "碳水化合物摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "碳水化合物摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整碳水化合物来源食物的比例。"
+      },
+      {
+        "名称": "蛋白质",
+        "说明": "机体构建和修复的重要营养素",
+        "偏高影响": "蛋白质摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "蛋白质摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整蛋白质来源食物的比例。"
+      },
+      {
+        "名称": "脂肪",
+        "说明": "必需脂肪酸来源,脂溶性维生素载体",
+        "偏高影响": "脂肪摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "脂肪摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整脂肪来源食物的比例。"
+      },
+      {
+        "名称": "纤维素",
+        "说明": "促进肠道蠕动,维持菌群健康",
+        "偏高影响": "纤维素摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "纤维素摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整纤维素来源食物的比例。"
+      },
+      {
+        "名称": "乳制品",
+        "说明": "钙质和优质蛋白来源",
+        "偏高影响": "乳制品摄入偏高提示当前摄入充足,无需额外补充。",
+        "偏低影响": "乳制品摄入不足可能影响能量供给和身体机能。",
+        "调整建议": "保持均衡摄入,根据个人情况适当调整乳制品来源食物的比例。"
+      }
+    ]
+  },
+  "氨基酸评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "苏氨酸",
+        "说明": "必需氨基酸,参与蛋白质合成和免疫功能",
+        "偏高影响": "",
+        "偏低影响": "苏氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含苏氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "异亮氨酸",
+        "说明": "支链氨基酸,促进肌肉合成和能量代谢",
+        "偏高影响": "",
+        "偏低影响": "异亮氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含异亮氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "亮氨酸",
+        "说明": "支链氨基酸,激活肌肉蛋白合成通路",
+        "偏高影响": "",
+        "偏低影响": "亮氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含亮氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "赖氨酸",
+        "说明": "必需氨基酸,参与钙吸收和胶原蛋白合成",
+        "偏高影响": "",
+        "偏低影响": "赖氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含赖氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "蛋氨酸",
+        "说明": "含硫氨基酸,参与甲基化和解毒过程",
+        "偏高影响": "",
+        "偏低影响": "蛋氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含蛋氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "胱氨酸",
+        "说明": "非必需氨基酸,参与谷胱甘肽合成",
+        "偏高影响": "",
+        "偏低影响": "胱氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含胱氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "苯丙氨酸",
+        "说明": "必需氨基酸,多巴胺和肾上腺素前体",
+        "偏高影响": "",
+        "偏低影响": "苯丙氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含苯丙氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "酪氨酸",
+        "说明": "非必需氨基酸,甲状腺激素和黑色素前体",
+        "偏高影响": "",
+        "偏低影响": "酪氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含酪氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "缬氨酸",
+        "说明": "支链氨基酸,参与肌肉代谢和能量供应",
+        "偏高影响": "",
+        "偏低影响": "缬氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含缬氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "组氨酸",
+        "说明": "必需氨基酸,组胺前体,参与免疫调节",
+        "偏高影响": "",
+        "偏低影响": "组氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含组氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "丙氨酸",
+        "说明": "非必需氨基酸,参与葡萄糖-丙氨酸循环",
+        "偏高影响": "",
+        "偏低影响": "丙氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含丙氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "丝氨酸",
+        "说明": "非必需氨基酸,参与磷脂和核苷酸合成",
+        "偏高影响": "",
+        "偏低影响": "丝氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含丝氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "甘氨酸",
+        "说明": "最简单的氨基酸,参与胶原蛋白和胆汁酸合成",
+        "偏高影响": "",
+        "偏低影响": "甘氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含甘氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "脯氨酸",
+        "说明": "非必需氨基酸,胶原蛋白的重要组成成分",
+        "偏高影响": "",
+        "偏低影响": "脯氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含脯氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      },
+      {
+        "名称": "谷氨酸",
+        "说明": "兴奋性神经递质,参与氨代谢和解毒",
+        "偏高影响": "",
+        "偏低影响": "谷氨酸水平偏低可能影响蛋白质合成和相关代谢功能。",
+        "调整建议": "增加富含谷氨酸的蛋白质食物摄入,如肉类、蛋类、豆制品等。"
+      }
+    ]
+  },
+  "维生素评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "维生素A",
+        "说明": "维持视力、免疫功能和皮肤健康",
+        "偏高影响": "",
+        "偏低影响": "维生素A不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素A的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B1",
+        "说明": "硫胺素,参与能量代谢和神经功能",
+        "偏高影响": "",
+        "偏低影响": "维生素B1不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B1的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B2",
+        "说明": "核黄素,参与能量代谢和细胞生长",
+        "偏高影响": "",
+        "偏低影响": "维生素B2不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B2的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B5",
+        "说明": "泛酸,辅酶A的组成部分",
+        "偏高影响": "",
+        "偏低影响": "维生素B5不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B5的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B6",
+        "说明": "参与氨基酸代谢和神经递质合成",
+        "偏高影响": "",
+        "偏低影响": "维生素B6不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B6的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "叶酸",
+        "说明": "维生素B9,参与DNA合成和细胞分裂",
+        "偏高影响": "",
+        "偏低影响": "叶酸不足可能影响相应的生理功能。",
+        "调整建议": "增加富含叶酸的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素B12",
+        "说明": "钴胺素,参与红细胞生成和神经功能",
+        "偏高影响": "",
+        "偏低影响": "维生素B12不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素B12的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素C",
+        "说明": "抗氧化,促进胶原蛋白合成和铁吸收",
+        "偏高影响": "",
+        "偏低影响": "维生素C不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素C的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素D",
+        "说明": "促进钙吸收,维持骨骼健康和免疫功能",
+        "偏高影响": "",
+        "偏低影响": "维生素D不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素D的食物摄入,必要时在专业指导下补充。"
+      },
+      {
+        "名称": "维生素K2",
+        "说明": "参与钙代谢和凝血功能",
+        "偏高影响": "",
+        "偏低影响": "维生素K2不足可能影响相应的生理功能。",
+        "调整建议": "增加富含维生素K2的食物摄入,必要时在专业指导下补充。"
+      }
+    ]
+  },
+  "微量元素评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "缺乏",
+        "最小值": 0,
+        "最大值": 5
+      },
+      {
+        "状态": "偏低",
+        "最小值": 5,
+        "最大值": 15
+      },
+      {
+        "状态": "正常",
+        "最小值": 15,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "铁",
+        "说明": "血红蛋白的重要组成部分,缺铁会导致贫血",
+        "偏高影响": "",
+        "偏低影响": "铁缺乏可能影响造血和免疫功能。",
+        "调整建议": "增加富含铁的食物摄入,如红肉、动物肝脏、海鲜等。"
+      },
+      {
+        "名称": "锌",
+        "说明": "参与免疫功能和伤口愈合,影响生长发育",
+        "偏高影响": "",
+        "偏低影响": "锌缺乏可能影响造血和免疫功能。",
+        "调整建议": "增加富含锌的食物摄入,如红肉、动物肝脏、海鲜等。"
+      }
+    ]
+  },
+  "抗生素风险评估": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "低风险",
+        "最小值": 0,
+        "最大值": 30
+      },
+      {
+        "状态": "注意",
+        "最小值": 30,
+        "最大值": 60
+      },
+      {
+        "状态": "高风险",
+        "最小值": 60,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "β-内酰胺酶类",
+        "说明": "青霉素类抗生素耐药基因水平",
+        "偏高影响": "β-内酰胺酶类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "氨基糖苷类",
+        "说明": "氨基糖苷类抗生素耐药基因水平",
+        "偏高影响": "氨基糖苷类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "大环内酯类",
+        "说明": "大环内酯类抗生素耐药基因水平",
+        "偏高影响": "大环内酯类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "呋喃类",
+        "说明": "呋喃类抗生素耐药基因水平",
+        "偏高影响": "呋喃类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "喹诺酮类",
+        "说明": "喹诺酮类抗生素耐药基因水平",
+        "偏高影响": "喹诺酮类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "磺胺类",
+        "说明": "磺胺类抗生素耐药基因水平",
+        "偏高影响": "磺胺类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "甲氧苄啶类",
+        "说明": "甲氧苄啶类抗生素耐药基因水平",
+        "偏高影响": "甲氧苄啶类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "氯霉素类",
+        "说明": "氯霉素类抗生素耐药基因水平",
+        "偏高影响": "氯霉素类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      },
+      {
+        "名称": "四环素类",
+        "说明": "四环素类抗生素耐药基因水平",
+        "偏高影响": "四环素类耐药基因水平偏高,提示可能携带相关耐药性。",
+        "偏低影响": "",
+        "调整建议": "合理使用抗生素,避免滥用,遵医嘱完成疗程。"
+      }
+    ]
+  },
+  "肠道屏障及代谢物": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "肠道炎症水平",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 80
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 80
+          },
+          {
+            "状态": "过高",
+            "最小值": 80,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道炎症程度评估",
+        "偏高影响": "肠道炎症水平水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "肠道产气",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 50
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 50
+          },
+          {
+            "状态": "轻度产气",
+            "最小值": 50,
+            "最大值": 80
+          },
+          {
+            "状态": "严重产气",
+            "最小值": 80,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道产气水平评估",
+        "偏高影响": "肠道产气水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "肠道屏障",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 100
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道屏障功能评估",
+        "偏高影响": "",
+        "偏低影响": "肠道屏障水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "脂多糖LPS",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "内毒素水平评估",
+        "偏高影响": "脂多糖LPS水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "次级胆汁酸",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "胆汁酸代谢产物",
+        "偏高影响": "次级胆汁酸水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "次级胆汁酸水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "对甲酚(p-Cresol)",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "酪氨酸代谢产物,尿毒症毒素",
+        "偏高影响": "对甲酚(p-Cresol)水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "吲哚",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 90
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 90
+          },
+          {
+            "状态": "过高",
+            "最小值": 90,
+            "最大值": 100
+          }
+        ],
+        "说明": "色氨酸代谢产物",
+        "偏高影响": "吲哚水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "吲哚水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "苯酚",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "酪氨酸代谢产物",
+        "偏高影响": "苯酚水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "腐胺",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "多胺类物质,与细胞增殖和炎症相关",
+        "偏高影响": "腐胺水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "腐胺水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "硫化氢",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "含硫氨基酸代谢产物",
+        "偏高影响": "硫化氢水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "硫化氢水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      },
+      {
+        "名称": "尸胺",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "组氨酸代谢产物,与肠道炎症相关",
+        "偏高影响": "尸胺水平偏高,提示肠道代谢环境异常。",
+        "偏低影响": "尸胺水平偏低,可能影响肠道健康功能。",
+        "调整建议": "建议均衡饮食,增加膳食纤维摄入,促进肠道菌群健康。"
+      }
+    ]
+  },
+  "短链脂肪酸": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "丁酸盐(Butyrate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "肠道上皮细胞主要能量来源,抗炎",
+        "偏高影响": "丁酸盐(Butyrate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "丁酸盐(Butyrate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "丙酸盐(Propionate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 90
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 90
+          },
+          {
+            "状态": "过高",
+            "最小值": 90,
+            "最大值": 100
+          }
+        ],
+        "说明": "参与肝脏糖异生,调节食欲",
+        "偏高影响": "丙酸盐(Propionate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "丙酸盐(Propionate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "乙酸盐(Acetate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "最丰富的短链脂肪酸,参与脂质代谢",
+        "偏高影响": "乙酸盐(Acetate)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "乙酸盐(Acetate)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      },
+      {
+        "名称": "异戊酸盐(Isovaleric)",
+        "标准范围": {
+          "最小值": 5,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "正常",
+            "最小值": 5,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "支链脂肪酸,过量提示蛋白质腐败",
+        "偏高影响": "异戊酸盐(Isovaleric)水平偏高,可能提示肠道发酵过度。",
+        "偏低影响": "异戊酸盐(Isovaleric)水平偏低,可能影响肠道上皮健康和抗炎能力。",
+        "调整建议": "增加膳食纤维摄入(全谷物、蔬菜、豆类),促进短链脂肪酸生成。"
+      }
+    ]
+  },
+  "神经递质及激素": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": null,
+    "指标": [
+      {
+        "名称": "血清素(5-HT)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "情绪调节、睡眠和食欲相关",
+        "偏高影响": "血清素(5-HT)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "血清素(5-HT)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "γ-氨基丁酸(GABA)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 85
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 85
+          },
+          {
+            "状态": "过高",
+            "最小值": 85,
+            "最大值": 100
+          }
+        ],
+        "说明": "抑制性神经递质,抗焦虑",
+        "偏高影响": "γ-氨基丁酸(GABA)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "γ-氨基丁酸(GABA)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "谷氨酸(Glutamate)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "兴奋性神经递质,学习记忆相关",
+        "偏高影响": "谷氨酸(Glutamate)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "谷氨酸(Glutamate)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "色氨酸(Tryptophan)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "血清素和褪黑素前体",
+        "偏高影响": "色氨酸(Tryptophan)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "色氨酸(Tryptophan)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "DOPAC",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "多巴胺代谢产物",
+        "偏高影响": "DOPAC水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "DOPAC水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "多巴胺",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "奖赏、动机和运动控制相关",
+        "偏高影响": "多巴胺水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "多巴胺水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "组胺(Histamine)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "免疫反应和胃酸分泌调节",
+        "偏高影响": "组胺(Histamine)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "组胺(Histamine)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "一氧化氮",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "血管舒张和神经信号传导",
+        "偏高影响": "一氧化氮水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "一氧化氮水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "喹啉(Quinolinic)",
+        "标准范围": {
+          "最小值": 0,
+          "最大值": 95
+        },
+        "状态分级": [
+          {
+            "状态": "正常",
+            "最小值": 0,
+            "最大值": 95
+          },
+          {
+            "状态": "过高",
+            "最小值": 95,
+            "最大值": 100
+          }
+        ],
+        "说明": "色氨酸代谢产物,NMDA受体激动剂",
+        "偏高影响": "喹啉(Quinolinic)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "维生素K2",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 99
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 99
+          },
+          {
+            "状态": "过高",
+            "最小值": 99,
+            "最大值": 100
+          }
+        ],
+        "说明": "钙代谢和凝血功能调节",
+        "偏高影响": "维生素K2水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "维生素K2水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      },
+      {
+        "名称": "肌醇(Inositol)",
+        "标准范围": {
+          "最小值": 15,
+          "最大值": 99
+        },
+        "状态分级": [
+          {
+            "状态": "缺乏",
+            "最小值": 0,
+            "最大值": 5
+          },
+          {
+            "状态": "不足",
+            "最小值": 5,
+            "最大值": 15
+          },
+          {
+            "状态": "正常",
+            "最小值": 15,
+            "最大值": 99
+          },
+          {
+            "状态": "过高",
+            "最小值": 99,
+            "最大值": 100
+          }
+        ],
+        "说明": "细胞信号传导和脂质代谢",
+        "偏高影响": "肌醇(Inositol)水平偏高,可能影响神经信号传导平衡。",
+        "偏低影响": "肌醇(Inositol)水平偏低,可能影响相关神经功能。",
+        "调整建议": "保持规律作息和均衡营养,必要时在专业指导下干预。"
+      }
+    ]
+  },
+  "主要消化道致病菌": {
+    "标准范围": {
+      "最小值": 0,
+      "最大值": 100
+    },
+    "状态分级": [
+      {
+        "状态": "未检出",
+        "最小值": 0,
+        "最大值": 0
+      },
+      {
+        "状态": "检出",
+        "最小值": 0,
+        "最大值": 100
+      }
+    ],
+    "指标": [
+      {
+        "名称": "幽门螺杆菌",
+        "说明": "与胃炎、胃溃疡和胃癌相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "艰难梭菌",
+        "说明": "抗生素相关性腹泻的主要病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "沙门氏菌",
+        "说明": "食物中毒和肠道感染的常见病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "志贺氏菌",
+        "说明": "细菌性痢疾的病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      },
+      {
+        "名称": "弯曲杆菌",
+        "说明": "常见的肠道感染病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整建议": ""
+      }
+    ]
+  },
+  "健康总分评估": {
+    "健康总分": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "状态分级": [
+        {
+          "状态": "需关注",
+          "最小值": 0,
+          "最大值": 40
+        },
+        {
+          "状态": "一般",
+          "最小值": 40,
+          "最大值": 60
+        },
+        {
+          "状态": "良好",
+          "最小值": 60,
+          "最大值": 80
+        },
+        {
+          "状态": "优秀",
+          "最小值": 80,
+          "最大值": 100
+        }
+      ],
+      "说明": "健康综合评分"
+    },
+    "菌群健康": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映肠道菌群整体健康程度"
+    },
+    "慢病控制": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映慢性疾病风险控制水平"
+    },
+    "营养均衡": {
+      "标准范围": {
+        "最小值": 0,
+        "最大值": 100
+      },
+      "说明": "反映营养摄入均衡程度"
+    },
+    "肠道年龄": {
+      "说明": "与实际年龄比较,反映肠道菌群的衰老/年轻程度"
+    }
+  },
+  "食物库": {
+    "说明": "224种食物的基础营养数据,用于展示食物详情和计算推荐指数",
+    "数据": [
+      {
+        "名称": "大麦",
+        "分类": "主食",
+        "能量KJ": "1481",
+        "蛋白g": "12",
+        "脂肪g": "2",
+        "碳水化合物g": "73",
+        "总膳食纤维g": "17"
+      },
+      {
+        "名称": "小米",
+        "分类": "主食",
+        "能量KJ": "1582",
+        "蛋白g": "11",
+        "脂肪g": "4",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "小麦",
+        "分类": "主食",
+        "能量KJ": "1423",
+        "蛋白g": "10",
+        "脂肪g": "1",
+        "碳水化合物g": "75",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "小麦面包",
+        "分类": "主食",
+        "能量KJ": "1116",
+        "蛋白g": "10",
+        "脂肪g": "3",
+        "碳水化合物g": "48",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "意大利面",
+        "分类": "主食",
+        "能量KJ": "386",
+        "蛋白g": "1",
+        "脂肪g": "3",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "燕麦",
+        "分类": "主食",
+        "能量KJ": "297",
+        "蛋白g": "17",
+        "脂肪g": "6",
+        "碳水化合物g": "66",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "玉米粒",
+        "分类": "主食",
+        "能量KJ": "298",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "米饭",
+        "分类": "主食",
+        "能量KJ": "1527",
+        "蛋白g": "7",
+        "脂肪g": "0",
+        "碳水化合物g": "79",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "玉米饼",
+        "分类": "主食",
+        "能量KJ": "912",
+        "蛋白g": "5",
+        "脂肪g": "2",
+        "碳水化合物g": "44",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "荞麦面粉",
+        "分类": "主食",
+        "能量KJ": "1402",
+        "蛋白g": "12",
+        "脂肪g": "3",
+        "碳水化合物g": "70",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "葡萄干浆即食谷物",
+        "分类": "主食",
+        "能量KJ": "1354",
+        "蛋白g": "7",
+        "脂肪g": "1",
+        "碳水化合物g": "78",
+        "总膳食纤维g": "13"
+      },
+      {
+        "名称": "面条",
+        "分类": "主食",
+        "能量KJ": "1609",
+        "蛋白g": "14",
+        "脂肪g": "4",
+        "碳水化合物g": "71",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "鸡蛋面包",
+        "分类": "主食",
+        "能量KJ": "1201",
+        "蛋白g": "9",
+        "脂肪g": "6",
+        "碳水化合物g": "47",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "黑麦面包",
+        "分类": "主食",
+        "能量KJ": "1188",
+        "蛋白g": "9",
+        "脂肪g": "3",
+        "碳水化合物g": "53",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "冰淇淋",
+        "分类": "乳制品",
+        "能量KJ": "690",
+        "蛋白g": "1",
+        "脂肪g": "3",
+        "碳水化合物g": "32",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "奶油",
+        "分类": "乳制品",
+        "能量KJ": "515",
+        "蛋白g": "3",
+        "脂肪g": "10",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "奶酪",
+        "分类": "乳制品",
+        "能量KJ": "1552",
+        "蛋白g": "23",
+        "脂肪g": "29",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛奶",
+        "分类": "乳制品",
+        "能量KJ": "268",
+        "蛋白g": "3",
+        "脂肪g": "3",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "脱脂牛奶",
+        "分类": "乳制品",
+        "能量KJ": "142",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "黄油",
+        "分类": "乳制品",
+        "能量KJ": "2999",
+        "蛋白g": "0",
+        "脂肪g": "81",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "山核桃",
+        "分类": "干果",
+        "能量KJ": "2889",
+        "蛋白g": "9",
+        "脂肪g": "71",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "山核桃干",
+        "分类": "干果",
+        "能量KJ": "2749",
+        "蛋白g": "12",
+        "脂肪g": "64",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "杏仁",
+        "分类": "干果",
+        "能量KJ": "2423",
+        "蛋白g": "21",
+        "脂肪g": "49",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "开心果",
+        "分类": "干果",
+        "能量KJ": "2392",
+        "蛋白g": "21",
+        "脂肪g": "45",
+        "碳水化合物g": "28",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "松子",
+        "分类": "干果",
+        "能量KJ": "2816",
+        "蛋白g": "13",
+        "脂肪g": "68",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "栗子",
+        "分类": "干果",
+        "能量KJ": "1519",
+        "蛋白g": "6",
+        "脂肪g": "1",
+        "碳水化合物g": "79",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "核桃",
+        "分类": "干果",
+        "能量KJ": "2738",
+        "蛋白g": "15",
+        "脂肪g": "65",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "椰肉",
+        "分类": "干果",
+        "能量KJ": "1481",
+        "蛋白g": "3",
+        "脂肪g": "33",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "榛子",
+        "分类": "干果",
+        "能量KJ": "2629",
+        "蛋白g": "14",
+        "脂肪g": "60",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "橡子",
+        "分类": "干果",
+        "能量KJ": "1619",
+        "蛋白g": "6",
+        "脂肪g": "23",
+        "碳水化合物g": "40",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "腰果",
+        "分类": "干果",
+        "能量KJ": "2402",
+        "蛋白g": "15",
+        "脂肪g": "46",
+        "碳水化合物g": "32",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "芝麻酱",
+        "分类": "干果",
+        "能量KJ": "2454",
+        "蛋白g": "18",
+        "脂肪g": "50",
+        "碳水化合物g": "24",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "莲子",
+        "分类": "干果",
+        "能量KJ": "372",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葵花子",
+        "分类": "干果",
+        "能量KJ": "2445",
+        "蛋白g": "20",
+        "脂肪g": "51",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "银杏坚果",
+        "分类": "干果",
+        "能量KJ": "1456",
+        "蛋白g": "10",
+        "脂肪g": "2",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "氏萨",
+        "分类": "快餐",
+        "能量KJ": "1121",
+        "蛋白g": "10",
+        "脂肪g": "12",
+        "碳水化合物g": "29",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "热狗",
+        "分类": "快餐",
+        "能量KJ": "1167",
+        "蛋白g": "9",
+        "脂肪g": "3",
+        "碳水化合物g": "50",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "鸡米花",
+        "分类": "快餐",
+        "能量KJ": "1469",
+        "蛋白g": "17",
+        "脂肪g": "21",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "三文鱼",
+        "分类": "水产品",
+        "能量KJ": "594",
+        "蛋白g": "19",
+        "脂肪g": "6",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "凤尾鱼",
+        "分类": "水产品",
+        "能量KJ": "548",
+        "蛋白g": "20",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "墨鱼",
+        "分类": "水产品",
+        "能量KJ": "331",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "大氏目鱼",
+        "分类": "水产品",
+        "能量KJ": "382",
+        "蛋白g": "18",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "大西洋鳕鱼",
+        "分类": "水产品",
+        "能量KJ": "343",
+        "蛋白g": "17",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "小龙虾",
+        "分类": "水产品",
+        "能量KJ": "322",
+        "蛋白g": "15",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "扇贝",
+        "分类": "水产品",
+        "能量KJ": "289",
+        "蛋白g": "12",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "条纹鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "406",
+        "蛋白g": "17",
+        "脂肪g": "2",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "海鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "332",
+        "蛋白g": "15",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牡蛎",
+        "分类": "水产品",
+        "能量KJ": "339",
+        "蛋白g": "9",
+        "脂肪g": "2",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "白鲑",
+        "分类": "水产品",
+        "能量KJ": "611",
+        "蛋白g": "17",
+        "脂肪g": "8",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "石斑鱼",
+        "分类": "水产品",
+        "能量KJ": "385",
+        "蛋白g": "19",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "章鱼",
+        "分类": "水产品",
+        "能量KJ": "343",
+        "蛋白g": "14",
+        "脂肪g": "1",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "虾",
+        "分类": "水产品",
+        "能量KJ": "297",
+        "蛋白g": "13",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "蛤蜊",
+        "分类": "水产品",
+        "能量KJ": "360",
+        "蛋白g": "14",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "蟹",
+        "分类": "水产品",
+        "能量KJ": "364",
+        "蛋白g": "18",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "贻贝",
+        "分类": "水产品",
+        "能量KJ": "360",
+        "蛋白g": "11",
+        "脂肪g": "2",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "金枪鱼",
+        "分类": "水产品",
+        "能量KJ": "602",
+        "蛋白g": "23",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鱼子酱",
+        "分类": "水产品",
+        "能量KJ": "1105",
+        "蛋白g": "24",
+        "脂肪g": "17",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鱿鱼",
+        "分类": "水产品",
+        "能量KJ": "385",
+        "蛋白g": "15",
+        "脂肪g": "1",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲈鱼",
+        "分类": "水产品",
+        "能量KJ": "381",
+        "蛋白g": "19",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲍鱼",
+        "分类": "水产品",
+        "能量KJ": "439",
+        "蛋白g": "17",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲟鱼",
+        "分类": "水产品",
+        "能量KJ": "439",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲤鱼",
+        "分类": "水产品",
+        "能量KJ": "531",
+        "蛋白g": "17",
+        "脂肪g": "5",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲭鱼",
+        "分类": "水产品",
+        "能量KJ": "858",
+        "蛋白g": "18",
+        "脂肪g": "13",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲱鱼",
+        "分类": "水产品",
+        "能量KJ": "661",
+        "蛋白g": "17",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲶鱼",
+        "分类": "水产品",
+        "能量KJ": "519",
+        "蛋白g": "20",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲷鱼",
+        "分类": "水产品",
+        "能量KJ": "418",
+        "蛋白g": "20",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鲽鱼",
+        "分类": "水产品",
+        "能量KJ": "294",
+        "蛋白g": "12",
+        "脂肪g": "1",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳕鱼",
+        "分类": "水产品",
+        "能量KJ": "364",
+        "蛋白g": "18",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳗鱼",
+        "分类": "水产品",
+        "能量KJ": "770",
+        "蛋白g": "18",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鳟鱼",
+        "分类": "水产品",
+        "能量KJ": "619",
+        "蛋白g": "20",
+        "脂肪g": "6",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "沙丁鱼",
+        "分类": "水产品",
+        "能量KJ": "347",
+        "蛋白g": "0",
+        "脂肪g": "1",
+        "碳水化合物g": "19",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "黄尾",
+        "分类": "水产品",
+        "能量KJ": "611",
+        "蛋白g": "23",
+        "脂肪g": "5",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "龙虾",
+        "分类": "水产品",
+        "能量KJ": "324",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "无花果",
+        "分类": "水果",
+        "能量KJ": "310",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "19",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "李子",
+        "分类": "水果",
+        "能量KJ": "192",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "杏",
+        "分类": "水果",
+        "能量KJ": "201",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "杨桃",
+        "分类": "水果",
+        "能量KJ": "128",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "枣",
+        "分类": "水果",
+        "能量KJ": "1176",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "72",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "柠檬",
+        "分类": "水果",
+        "能量KJ": "121",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "柿子",
+        "分类": "水果",
+        "能量KJ": "293",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "桃",
+        "分类": "水果",
+        "能量KJ": "165",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "桑葚",
+        "分类": "水果",
+        "能量KJ": "180",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "梨",
+        "分类": "水果",
+        "能量KJ": "239",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "榴莲",
+        "分类": "水果",
+        "能量KJ": "615",
+        "蛋白g": "1",
+        "脂肪g": "5",
+        "碳水化合物g": "27",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "樱桃",
+        "分类": "水果",
+        "能量KJ": "1395",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "80",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "哈密瓜",
+        "分类": "水果",
+        "能量KJ": "141",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "橘子",
+        "分类": "水果",
+        "能量KJ": "197",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "橙汁",
+        "分类": "水果",
+        "能量KJ": "188",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "橙皮",
+        "分类": "水果",
+        "能量KJ": "405",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "25",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "橙菠萝汁",
+        "分类": "水果",
+        "能量KJ": "214",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "12",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "油桃",
+        "分类": "水果",
+        "能量KJ": "185",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "猕猴桃",
+        "分类": "水果",
+        "能量KJ": "255",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甜瓜",
+        "分类": "水果",
+        "能量KJ": "150",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "番木瓜",
+        "分类": "水果",
+        "能量KJ": "179",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "石榴",
+        "分类": "水果",
+        "能量KJ": "346",
+        "蛋白g": "1",
+        "脂肪g": "1",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "红苹果",
+        "分类": "水果",
+        "能量KJ": "247",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芒果",
+        "分类": "水果",
+        "能量KJ": "250",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "苹果",
+        "分类": "水果",
+        "能量KJ": "218",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "苹果汁",
+        "分类": "水果",
+        "能量KJ": "191",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "草莓",
+        "分类": "水果",
+        "能量KJ": "136",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "荔枝",
+        "分类": "水果",
+        "能量KJ": "276",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "菠萝",
+        "分类": "水果",
+        "能量KJ": "209",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "菠萝蜜",
+        "分类": "水果",
+        "能量KJ": "397",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "23",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "葡萄",
+        "分类": "水果",
+        "能量KJ": "280",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葡萄干",
+        "分类": "水果",
+        "能量KJ": "264",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "葡萄柚",
+        "分类": "水果",
+        "能量KJ": "134",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "蓝莓",
+        "分类": "水果",
+        "能量KJ": "240",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "14",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "蔓越莓",
+        "分类": "水果",
+        "能量KJ": "191",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "西瓜",
+        "分类": "水果",
+        "能量KJ": "127",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "覆盆子",
+        "分类": "水果",
+        "能量KJ": "220",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "面包果酱",
+        "分类": "水果",
+        "能量KJ": "431",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "27",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "香蕉",
+        "分类": "水果",
+        "能量KJ": "371",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "22",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "鳄梨",
+        "分类": "水果",
+        "能量KJ": "670",
+        "蛋白g": "2",
+        "脂肪g": "14",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "6"
+      },
+      {
+        "名称": "黑莓",
+        "分类": "水果",
+        "能量KJ": "181",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "龙眼",
+        "分类": "水果",
+        "能量KJ": "251",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "15",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "番茄汤",
+        "分类": "汤",
+        "能量KJ": "165",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "土豆蔬菜汤",
+        "分类": "汤",
+        "能量KJ": "126",
+        "蛋白g": "1",
+        "脂肪g": "1",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "素食蔬菜汤",
+        "分类": "汤",
+        "能量KJ": "119",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "火腿",
+        "分类": "肉类",
+        "能量KJ": "683",
+        "蛋白g": "16",
+        "脂肪g": "8",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "火鸡",
+        "分类": "肉类",
+        "能量KJ": "790",
+        "蛋白g": "28",
+        "脂肪g": "7",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烟熏火腿",
+        "分类": "肉类",
+        "能量KJ": "591",
+        "蛋白g": "18",
+        "脂肪g": "2",
+        "碳水化合物g": "10",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烤肉",
+        "分类": "肉类",
+        "能量KJ": "1512",
+        "蛋白g": "20",
+        "脂肪g": "30",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烤鸭",
+        "分类": "肉类",
+        "能量KJ": "1410",
+        "蛋白g": "18",
+        "脂肪g": "28",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "烧鹅",
+        "分类": "肉类",
+        "能量KJ": "1276",
+        "蛋白g": "25",
+        "脂肪g": "21",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉汤",
+        "分类": "肉类",
+        "能量KJ": "25",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉瘦",
+        "分类": "肉类",
+        "能量KJ": "488",
+        "蛋白g": "23",
+        "脂肪g": "2",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛肉肥",
+        "分类": "肉类",
+        "能量KJ": "2845",
+        "蛋白g": "10",
+        "脂肪g": "70",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "牛蛙",
+        "分类": "肉类",
+        "能量KJ": "305",
+        "蛋白g": "16",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪培根",
+        "分类": "肉类",
+        "能量KJ": "1744",
+        "蛋白g": "12",
+        "脂肪g": "39",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪头肉",
+        "分类": "肉类",
+        "能量KJ": "658",
+        "蛋白g": "13",
+        "脂肪g": "10",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪瘦肉",
+        "分类": "肉类",
+        "能量KJ": "562",
+        "蛋白g": "21",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪耳朵",
+        "分类": "肉类",
+        "能量KJ": "695",
+        "蛋白g": "15",
+        "脂肪g": "10",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪肝",
+        "分类": "肉类",
+        "能量KJ": "690",
+        "蛋白g": "26",
+        "脂肪g": "4",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪脑",
+        "分类": "肉类",
+        "能量KJ": "577",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "猪蹄",
+        "分类": "肉类",
+        "能量KJ": "889",
+        "蛋白g": "23",
+        "脂肪g": "12",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "瘦羊肉",
+        "分类": "肉类",
+        "能量KJ": "862",
+        "蛋白g": "28",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "肉丸",
+        "分类": "肉类",
+        "能量KJ": "1196",
+        "蛋白g": "14",
+        "脂肪g": "22",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "肥猪肉",
+        "分类": "肉类",
+        "能量KJ": "2449",
+        "蛋白g": "10",
+        "脂肪g": "60",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "肥羊肉",
+        "分类": "肉类",
+        "能量KJ": "2782",
+        "蛋白g": "6",
+        "脂肪g": "70",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡心",
+        "分类": "肉类",
+        "能量KJ": "640",
+        "蛋白g": "15",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡汤",
+        "分类": "肉类",
+        "能量KJ": "26",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡肉",
+        "分类": "肉类",
+        "能量KJ": "604",
+        "蛋白g": "28",
+        "脂肪g": "3",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡肝",
+        "分类": "肉类",
+        "能量KJ": "496",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹅肝",
+        "分类": "肉类",
+        "能量KJ": "556",
+        "蛋白g": "16",
+        "脂肪g": "4",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹌鹑",
+        "分类": "肉类",
+        "能量KJ": "803",
+        "蛋白g": "19",
+        "脂肪g": "12",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "南瓜",
+        "分类": "蔬菜",
+        "能量KJ": "109",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "卷心菜",
+        "分类": "蔬菜",
+        "能量KJ": "103",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "四季豆",
+        "分类": "蔬菜",
+        "能量KJ": "131",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "土豆",
+        "分类": "蔬菜",
+        "能量KJ": "322",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "土豆面粉",
+        "分类": "蔬菜",
+        "能量KJ": "1493",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "83",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "大白菜",
+        "分类": "蔬菜",
+        "能量KJ": "55",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "大蒜",
+        "分类": "蔬菜",
+        "能量KJ": "623",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "33",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "大豆",
+        "分类": "蔬菜",
+        "能量KJ": "614",
+        "蛋白g": "12",
+        "脂肪g": "6",
+        "碳水化合物g": "11",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "小南瓜",
+        "分类": "蔬菜",
+        "能量KJ": "69",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "小萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "76",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "山药",
+        "分类": "蔬菜",
+        "能量KJ": "343",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "扁豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1473",
+        "蛋白g": "24",
+        "脂肪g": "1",
+        "碳水化合物g": "63",
+        "总膳食纤维g": "10"
+      },
+      {
+        "名称": "木薯",
+        "分类": "蔬菜",
+        "能量KJ": "667",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "38",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "洋葱",
+        "分类": "蔬菜",
+        "能量KJ": "166",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "炒蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "110",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "炒香菇",
+        "分类": "蔬菜",
+        "能量KJ": "162",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "牛蒡根",
+        "分类": "蔬菜",
+        "能量KJ": "302",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "17",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甘薯",
+        "分类": "蔬菜",
+        "能量KJ": "359",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "20",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "甜椒",
+        "分类": "蔬菜",
+        "能量KJ": "84",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "甜玉米",
+        "分类": "蔬菜",
+        "能量KJ": "360",
+        "蛋白g": "3",
+        "脂肪g": "1",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "甜菜",
+        "分类": "蔬菜",
+        "能量KJ": "180",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "甜菜叶",
+        "分类": "蔬菜",
+        "能量KJ": "92",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "生姜",
+        "分类": "蔬菜",
+        "能量KJ": "75",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "生菜",
+        "分类": "蔬菜",
+        "能量KJ": "62",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "番茄汁",
+        "分类": "蔬菜",
+        "能量KJ": "72",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "白菜",
+        "分类": "蔬菜",
+        "能量KJ": "48",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "白萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "59",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "白蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "93",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "秋葵",
+        "分类": "蔬菜",
+        "能量KJ": "138",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "竹笋",
+        "分类": "蔬菜",
+        "能量KJ": "115",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "红心萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "132",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "红豆",
+        "分类": "蔬菜",
+        "能量KJ": "121",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "绿豆",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "羽衣甘蓝",
+        "分类": "蔬菜",
+        "能量KJ": "207",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "8",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "胡萝卜",
+        "分类": "蔬菜",
+        "能量KJ": "173",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芋头",
+        "分类": "蔬菜",
+        "能量KJ": "469",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "26",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "芝麻",
+        "分类": "蔬菜",
+        "能量KJ": "2397",
+        "蛋白g": "17",
+        "脂肪g": "49",
+        "碳水化合物g": "23",
+        "总膳食纤维g": "11"
+      },
+      {
+        "名称": "芥末",
+        "分类": "蔬菜",
+        "能量KJ": "114",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "芦笋",
+        "分类": "蔬菜",
+        "能量KJ": "85",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "花椒",
+        "分类": "蔬菜",
+        "能量KJ": "80",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "花椰菜",
+        "分类": "蔬菜",
+        "能量KJ": "104",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "芹菜",
+        "分类": "蔬菜",
+        "能量KJ": "67",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "苦瓜",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "5",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "茄子",
+        "分类": "蔬菜",
+        "能量KJ": "104",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "苋菜叶",
+        "分类": "蔬菜",
+        "能量KJ": "97",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "菊苣",
+        "分类": "蔬菜",
+        "能量KJ": "71",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "菜豆",
+        "分类": "蔬菜",
+        "能量KJ": "280",
+        "蛋白g": "6",
+        "脂肪g": "0",
+        "碳水化合物g": "13",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "菠菜",
+        "分类": "蔬菜",
+        "能量KJ": "97",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "蕨类",
+        "分类": "蔬菜",
+        "能量KJ": "143",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "藜",
+        "分类": "蔬菜",
+        "能量KJ": "180",
+        "蛋白g": "4",
+        "脂肪g": "0",
+        "碳水化合物g": "7",
+        "总膳食纤维g": "4"
+      },
+      {
+        "名称": "蘑菇",
+        "分类": "蔬菜",
+        "能量KJ": "141",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "西兰花",
+        "分类": "蔬菜",
+        "能量KJ": "141",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "西红柿",
+        "分类": "蔬菜",
+        "能量KJ": "74",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "豆芽",
+        "分类": "蔬菜",
+        "能量KJ": "510",
+        "蛋白g": "13",
+        "脂肪g": "6",
+        "碳水化合物g": "9",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "豇豆",
+        "分类": "蔬菜",
+        "能量KJ": "376",
+        "蛋白g": "2",
+        "脂肪g": "0",
+        "碳水化合物g": "18",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "豌豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1435",
+        "蛋白g": "21",
+        "脂肪g": "1",
+        "碳水化合物g": "62",
+        "总膳食纤维g": "15"
+      },
+      {
+        "名称": "辣椒",
+        "分类": "蔬菜",
+        "能量KJ": "88",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "5",
+        "总膳食纤维g": "1"
+      },
+      {
+        "名称": "韭菜",
+        "分类": "蔬菜",
+        "能量KJ": "126",
+        "蛋白g": "3",
+        "脂肪g": "0",
+        "碳水化合物g": "4",
+        "总膳食纤维g": "2"
+      },
+      {
+        "名称": "香菇",
+        "分类": "蔬菜",
+        "能量KJ": "160",
+        "蛋白g": "1",
+        "脂肪g": "0",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "3"
+      },
+      {
+        "名称": "黄瓜",
+        "分类": "蔬菜",
+        "能量KJ": "65",
+        "蛋白g": "0",
+        "脂肪g": "0",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "水煮蛋",
+        "分类": "蛋类",
+        "能量KJ": "597",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "炒蛋",
+        "分类": "蛋类",
+        "能量KJ": "621",
+        "蛋白g": "9",
+        "脂肪g": "10",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "煎蛋",
+        "分类": "蛋类",
+        "能量KJ": "643",
+        "蛋白g": "10",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋",
+        "分类": "蛋类",
+        "能量KJ": "599",
+        "蛋白g": "12",
+        "脂肪g": "9",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋白",
+        "分类": "蛋类",
+        "能量KJ": "216",
+        "蛋白g": "10",
+        "脂肪g": "0",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鸡蛋黄",
+        "分类": "蛋类",
+        "能量KJ": "1346",
+        "蛋白g": "15",
+        "脂肪g": "26",
+        "碳水化合物g": "3",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹌鹑蛋",
+        "分类": "蛋类",
+        "能量KJ": "663",
+        "蛋白g": "13",
+        "脂肪g": "11",
+        "碳水化合物g": "0",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "利马豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1414",
+        "蛋白g": "21",
+        "脂肪g": "0",
+        "碳水化合物g": "63",
+        "总膳食纤维g": "19"
+      },
+      {
+        "名称": "大豆面粉",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1816",
+        "蛋白g": "37",
+        "脂肪g": "20",
+        "碳水化合物g": "31",
+        "总膳食纤维g": "9"
+      },
+      {
+        "名称": "嫩豆腐",
+        "分类": "豆类及豆制品",
+        "能量KJ": "253",
+        "蛋白g": "7",
+        "脂肪g": "3",
+        "碳水化合物g": "1",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "纳豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "883",
+        "蛋白g": "19",
+        "脂肪g": "11",
+        "碳水化合物g": "12",
+        "总膳食纤维g": "5"
+      },
+      {
+        "名称": "羽扇豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1554",
+        "蛋白g": "36",
+        "脂肪g": "9",
+        "碳水化合物g": "40",
+        "总膳食纤维g": "18"
+      },
+      {
+        "名称": "老豆腐",
+        "分类": "豆类及豆制品",
+        "能量KJ": "326",
+        "蛋白g": "9",
+        "脂肪g": "4",
+        "碳水化合物g": "2",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "花生",
+        "分类": "豆类及豆制品",
+        "能量KJ": "2374",
+        "蛋白g": "25",
+        "脂肪g": "49",
+        "碳水化合物g": "16",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "花生酱",
+        "分类": "豆类及豆制品",
+        "能量KJ": "2464",
+        "蛋白g": "24",
+        "脂肪g": "49",
+        "碳水化合物g": "21",
+        "总膳食纤维g": "8"
+      },
+      {
+        "名称": "蚕豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1425",
+        "蛋白g": "26",
+        "脂肪g": "1",
+        "碳水化合物g": "58",
+        "总膳食纤维g": "25"
+      },
+      {
+        "名称": "豆浆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "226",
+        "蛋白g": "3",
+        "脂肪g": "1",
+        "碳水化合物g": "6",
+        "总膳食纤维g": "0"
+      },
+      {
+        "名称": "鹰嘴豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1581",
+        "蛋白g": "20",
+        "脂肪g": "6",
+        "碳水化合物g": "62",
+        "总膳食纤维g": "12"
+      },
+      {
+        "名称": "黄豆",
+        "分类": "豆类及豆制品",
+        "能量KJ": "1443",
+        "蛋白g": "22",
+        "脂肪g": "2",
+        "碳水化合物g": "60",
+        "总膳食纤维g": "25"
+      }
+    ]
+  },
+  "菌属功能库": {
+    "说明": "所有菌属的功能说明、高低影响、调整方向。学名为主键,个人JSON用学名匹配",
+    "菌属": [
+      {
+        "学名": "Clostridium",
+        "中文名": "梭菌属",
+        "分组": "核心菌属",
+        "功能说明": "多导致⼈体炎症;致病;导致菌群失衡;产丁酸;肥胖⼈群丰度较⾼;参与胆汁酸代谢;对抗艰难梭菌;",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Prevotella",
+        "中文名": "普雷沃氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "核心菌,健康的植物性饮食相关菌,在自闭症、多发性硬化中减少;丰度⾼促炎,加剧过敏、",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Ruminococcus",
+        "中文名": "瘤胃球菌属",
+        "分组": "核心菌属",
+        "功能说明": "消化抗性淀粉、纤维素,丰度⾼促进肠炎和过敏相关疾病,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bacteroides",
+        "中文名": "拟杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,消化蔬菜和谷食,蛋白,降解复杂多糖,交叉喂养关键菌,维持免疫和肠道稳态,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Eubacterium",
+        "中文名": "优杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,产短链脂肪酸尤其丁酸,有助于肠道健康,降解胆固醇、调节餐后血糖、",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lachnoclostridium",
+        "中文名": "",
+        "分组": "核心菌属",
+        "功能说明": "丁酸,与内脏脂肪积累相关,与肥胖、⾼血压、糖尿病正相关,与肠道炎症、肠癌和阿尔茨海默病进展有关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Faecalibacterium",
+        "中文名": "粪杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Blautia",
+        "中文名": "经黏液真杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Dialister",
+        "中文名": "戴阿利斯特杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "代谢碳水化合物、产短链脂肪酸,许多种都可能导致感染,但是抑郁症患者缺乏,关节炎患者富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Roseburia",
+        "中文名": "罗氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Agathobacter",
+        "中文名": "直肠真杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "可利用抗性淀粉,具有抗炎和调节免疫功能的作用,类⻛湿性关节炎和溃疡性结肠炎⼈群显著减少。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Gemmiger",
+        "中文名": "吉米菌属",
+        "分组": "核心菌属",
+        "功能说明": "健康饮食,⾼果蔬、谷物及豆类饮食含量⾼,与雄激素分泌相关,缓解便秘,与脂肪堆积分布负相关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Parabacteroides",
+        "中文名": "副拟杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "帮助糖脂代谢,改善⾼脂影响,产生强大的降解酶,参与胆碱代谢,顺产宝宝和⻓寿老⼈肠道丰富,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Alistipes",
+        "中文名": "另枝菌属",
+        "分组": "核心菌属",
+        "功能说明": "耐胆汁酸菌,丙酸,乙酸生产者,参与腐败途径产生氨、H2S、甲酚、吲哚和苯酚,诱发结直肠癌,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lachnospira",
+        "中文名": "母螺菌属",
+        "分组": "核心菌属",
+        "功能说明": "基石菌,发酵代谢膳食纤维,利用果蔬果㬵产生乙酸,丁酸,与睡眠质量呈负相关,过少与多种疾病相关,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Phascolarctobacterium",
+        "中文名": "考拉杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "东⽅⼈肠道的核心菌属,⾼易减肥,与水果蔬菜摄⼊相关,随年龄增加,在重度抑郁、阿尔茨海默病(AD)、自闭症⼉童富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Megamonas",
+        "中文名": "巨单胞菌属",
+        "分组": "核心菌属",
+        "功能说明": "发酵各种碳水化合物、产乙酸、丙酸、乳酸,自闭症谱系障碍、注意缺陷、多动障碍 (ADHD)急性脑卒中(AIS)",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Coprococcus",
+        "中文名": "粪球菌属",
+        "分组": "核心菌属",
+        "功能说明": "可产丁酸,抑制免疫反应,降低过敏,抑郁、帕金森、认知障碍、便秘,慢性肾病、虚弱者减少,过多导致菌群紊乱,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium",
+        "中文名": "双歧杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "最重要的",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus",
+        "中文名": "乳杆菌属",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rogosae",
+        "中文名": "罗氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium adolescentis",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium longum",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus reuteri",
+        "中文名": "罗伊氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium bifidum",
+        "中文名": "双歧双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium catenulatum",
+        "中文名": "链状双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium pseudolongum",
+        "中文名": "假长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium gallicum",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium stercoris",
+        "中文名": "排泄物双岐杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus paracasei",
+        "中文名": "副干酪乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus plantarum",
+        "中文名": "植物乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus johnsonii",
+        "中文名": "约氏乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus helveticus",
+        "中文名": "瑞一乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium animalis",
+        "中文名": "动物双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus fermentum",
+        "中文名": "发酵乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium breve",
+        "中文名": "短双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rhamnosus",
+        "中文名": "",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus brevis",
+        "中文名": "短乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus delbrueckii",
+        "中文名": "德氏乳酸乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus acidophilus",
+        "中文名": "嗜酸乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Escherichia",
+        "中文名": "埃希氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "正常菌属,条件致病菌,过多致病,导致菌群失衡",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Streptococcus",
+        "中文名": "",
+        "分组": "有害菌属",
+        "功能说明": "可引起化脓性炎症,个别菌为",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Desulfovibrio",
+        "中文名": "脱硫弧菌属",
+        "分组": "有害菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Helicobacter",
+        "中文名": "螺杆菌属",
+        "分组": "有害菌属",
+        "功能说明": "⾰兰氏阴性菌,微需氧菌,该菌属下的⼀些菌种被发现在⼈类上消化道内壁,部分种为致病菌,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Arcobacter",
+        "中文名": "",
+        "分组": "有害菌属",
+        "功能说明": "好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,⼈畜共患菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Anaerobiospirillum",
+        "中文名": "厌氧螺菌",
+        "分组": "有害菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Enterococcus",
+        "中文名": "肠球菌属",
+        "分组": "有害菌属",
+        "功能说明": "常⻅上呼吸道,⼝腔或肠道的常居菌,也分布在畜、禽养殖环境,饲料或肠道,抑菌调节肠道菌群,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Neisseria",
+        "中文名": "奈瑟氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "部分为⼈体病原菌,⼝腔,唾液,⿐腔,肺部正常菌,需氧,对干燥、热、消毒剂敏感,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Acinetobacter",
+        "中文名": "不动杆菌属",
+        "分组": "有害菌属",
+        "功能说明": "条件致病菌,医院感染病原体之⼀,尤其ICU,易引起呼吸道感染、泌尿道感染、创伤感染,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Pseudomonas",
+        "中文名": "假单胞菌属",
+        "分组": "有害菌属",
+        "功能说明": "属于变形菌⻔,在环境中⼴泛存在,代谢多变适应⼒强,好氧或微需,会导致感染和食物变质,医院获得性感染主要原因,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Holdemania",
+        "中文名": "霍尔德曼氏菌属",
+        "分组": "有害菌属",
+        "功能说明": "肠道共生菌,降解黏蛋白,机会致病菌,少数研究表明与痛⻛正相关,帕金森,双向情感障碍,过敏,抑郁患者富集",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Collinsella",
+        "中文名": "柯林斯氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "产气菌,与脂质代谢及心脑血管相关,过多可导致菌群紊乱,部分病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bilophila",
+        "中文名": "嗜胆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "条件致病菌,与耐胆汁酸和脂肪摄⼊相关,便秘⼈群丰度更⾼",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Flavonifractor",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "参与肠道⼉茶素代谢,减轻免疫反应,产丁酸",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Dorea",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "消化碳水化合物,多发性硬化症、炎症性肠病、结直肠癌、自闭症谱系障碍以及肥胖⼈群中⾼丰度富集,",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Hungatella",
+        "中文名": "亨盖特氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "参与生成氧化三甲胺和牛磺酸。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Oscillospira",
+        "中文名": "颤螺菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "基石菌、核心菌群,帮助消化抗性淀粉,产丁酸,并在大肠中发酵。与⼉童过敏和肥胖呈负相关。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Citrobacter",
+        "中文名": "枸橼酸杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "常⻅菌,免疫⼒下降可能引发感染。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Akkermansia",
+        "中文名": "",
+        "分组": "其它重要菌属",
+        "功能说明": "基石菌,可降解淀粉,黏蛋白降解菌,可控制体重,改善代谢和炎症,过多导致肠粘膜屏障破坏。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Enterobacter",
+        "中文名": "肠杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "产酸产气,不引起腹泻,机会性感染,过多导致菌群紊乱和肥胖。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Turicibacter",
+        "中文名": "苏黎世杆菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "发酵生成乳酸,参与肌肉和疲劳调节。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Butyrivibrio",
+        "中文名": "丁酸弧菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "利用纤维素、淀粉和其他多聚糖生成丁酸,有助于维持肠道上皮,发挥抗炎、抗氧化作用。可调节体内的氨水平,影响免疫。",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Christensenella",
+        "中文名": "克里斯滕森氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "过多:肥胖,代谢综合征,包括⾼血压、⾼血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Haemophilus",
+        "中文名": "嗜血杆菌属",
+        "分组": "病原菌属",
+        "功能说明": "病原菌,过多可导致菌群紊乱,可引发呼吸道感染,常⻅于呼吸道感染",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella",
+        "中文名": "沙门氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "是引起食物中毒和肠道感染的常⻅病原菌之⼀",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Sutterella",
+        "中文名": "萨特氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "肠道共生菌,潜在病原菌,自闭症相关,减少IgA",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Corynebacterium",
+        "中文名": "棒杆菌属",
+        "分组": "病原菌属",
+        "功能说明": "可导致急性腹泻、腹痛、恶心",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Aeromonas",
+        "中文名": "气单胞菌属",
+        "分组": "病原菌属",
+        "功能说明": "病原菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Staphylococcus",
+        "中文名": "葡萄球菌属",
+        "分组": "病原菌属",
+        "功能说明": "利用碳水化合物或氨基酸,产生乳酸。部分产生毒素,如金黄色葡萄球菌,可能引发肠道炎症、并影响肠道屏障功能",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Vibrio",
+        "中文名": "",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bilophila wadsworthia",
+        "中文名": "沃氏嗜胆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella enterica",
+        "中文名": "肠炎沙门氏菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Escherichia coli",
+        "中文名": "大肠杆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bacteroides fragilis",
+        "中文名": "脆弱拟杆菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium adolescentis",
+        "中文名": "青春双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium longum",
+        "中文名": "长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium gallicum",
+        "中文名": "高卢双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Bifidobacterium pseudolongum",
+        "中文名": "假长双歧杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Lactobacillus rhamnosus",
+        "中文名": "鼠李糖乳杆菌",
+        "分组": "益生菌",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Arcobacter",
+        "中文名": "弓形菌属",
+        "分组": "有害菌属",
+        "功能说明": "好氧菌,腹泻致病菌,与河流海洋污染相关的潜在病原菌,人畜共患菌",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Christensenella",
+        "中文名": "克里斯滕森氏菌属",
+        "分组": "其它重要菌属",
+        "功能说明": "过多:肥胖,代谢综合征,包括高血压、高血糖、异常胆固醇水平和腹部肥胖,胰岛素抵抗",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Salmonella",
+        "中文名": "沙门氏菌属",
+        "分组": "病原菌属",
+        "功能说明": "是引起食物中毒和肠道感染的常见病原菌之一",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Streptococcus sanguinis",
+        "中文名": "血链球菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Pseudomonas aeruginosa",
+        "中文名": "铜绿假单胞菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Actinomyces oris",
+        "中文名": "口腔放线菌",
+        "分组": "病原菌属",
+        "功能说明": "",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Coprobacter",
+        "中文名": "粪杆菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,参与短链脂肪酸代谢",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Paraprevotella",
+        "中文名": "副普雷沃氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,与植物性饮食相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      },
+      {
+        "学名": "Parasutterella",
+        "中文名": "副萨特氏菌属",
+        "分组": "核心菌属",
+        "功能说明": "肠道共生菌,与宿主代谢相关",
+        "偏高影响": "",
+        "偏低影响": "",
+        "调整方向": ""
+      }
+    ]
+  }
+}

+ 158 - 0
docs/参考资料/知识库/报告指标知识库.md

@@ -0,0 +1,158 @@
+# 菌群报告指标知识库
+
+> 标准化报告指标定义,包含标准范围、评估标准和说明。
+> 适用于肠道菌群健康检测报告的数据分析和解读。
+
+---
+
+## 一、疾病风险评估
+
+| 指标 | 标准范围 | 低风险 | 注意 | 高风险 | 说明 |
+|------|---------|-------|------|-------|------|
+| 炎症性肠炎 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 肠道慢性炎症性疾病风险评估 |
+| 肠易激综合征 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 功能性肠道疾病风险评估 |
+| 感染性腹泻 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 细菌/病毒感染性腹泻风险评估 |
+| 自闭症 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 自闭症谱系障碍风险评估 |
+| 抑郁症 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 抑郁症风险评估 |
+| 甲状腺疾病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 甲状腺功能异常风险评估 |
+| 肺部感染或疾病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 呼吸系统疾病风险评估 |
+| 肺部疾病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 肺部疾病风险评估 |
+| 自体免疫病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 自身免疫性疾病风险评估 |
+| 结直肠癌 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 结直肠癌风险评估 |
+| 肥胖 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 肥胖风险评估 |
+| 便秘 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 便秘风险评估 |
+| 过敏 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 过敏性疾病风险评估 |
+| 失眠 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 睡眠障碍风险评估 |
+| 肝病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 肝脏疾病风险评估 |
+| 肾病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 肾脏疾病风险评估 |
+| 胃病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 胃部疾病风险评估 |
+| 胆病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 胆囊/胆道疾病风险评估 |
+| 心脑血管疾病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | 心脑血管疾病风险评估 |
+| II型糖尿病 | 0-1 | <0.3 | 0.3-0.5 | >0.5 | II型糖尿病风险评估 |
+
+## 二、主要营养评估
+
+| 指标 | 标准范围 | 缺乏 | 偏低 | 正常 | 偏高 | 说明 |
+|------|---------|------|------|------|------|------|
+| 碳水化合物 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 主要能量来源,建议维持在70-80分最佳 |
+| 蛋白质 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 机体构建和修复的重要营养素 |
+| 脂肪 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 必需脂肪酸来源,脂溶性维生素载体 |
+| 纤维素 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 促进肠道蠕动,维持菌群健康 |
+| 乳制品 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 钙质和优质蛋白来源 |
+
+## 三、氨基酸评估
+
+| 指标 | 标准范围 | 缺乏 | 偏低 | 正常 | 偏高 | 说明 |
+|------|---------|------|------|------|------|------|
+| 苏氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 必需氨基酸,参与蛋白质合成和免疫功能 |
+| 异亮氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 支链氨基酸,促进肌肉合成和能量代谢 |
+| 亮氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 支链氨基酸,激活肌肉蛋白合成通路 |
+| 赖氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 必需氨基酸,参与钙吸收和胶原蛋白合成 |
+| 蛋氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 含硫氨基酸,参与甲基化和解毒过程 |
+| 胱氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 非必需氨基酸,参与谷胱甘肽合成 |
+| 苯丙氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 必需氨基酸,多巴胺和肾上腺素前体 |
+| 酪氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 非必需氨基酸,甲状腺激素和黑色素前体 |
+| 缬氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 支链氨基酸,参与肌肉代谢和能量供应 |
+| 组氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 必需氨基酸,组胺前体,参与免疫调节 |
+| 丙氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 非必需氨基酸,参与葡萄糖-丙氨酸循环 |
+| 丝氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 非必需氨基酸,参与磷脂和核苷酸合成 |
+| 甘氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 最简单的氨基酸,参与胶原蛋白和胆汁酸合成 |
+| 脯氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 非必需氨基酸,胶原蛋白的重要组成成分 |
+| 谷氨酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 兴奋性神经递质,参与氨代谢和解毒 |
+
+## 四、维生素评估
+
+| 指标 | 标准范围 | 缺乏 | 偏低 | 正常 | 偏高 | 说明 |
+|------|---------|------|------|------|------|------|
+| 维生素A | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 维持视力、免疫功能和皮肤健康 |
+| 维生素B1 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 硫胺素,参与能量代谢和神经功能 |
+| 维生素B2 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 核黄素,参与能量代谢和细胞生长 |
+| 维生素B5 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 泛酸,辅酶A的组成部分 |
+| 维生素B6 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 参与氨基酸代谢和神经递质合成 |
+| 叶酸 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 维生素B9,参与DNA合成和细胞分裂 |
+| 维生素B12 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 钴胺素,参与红细胞生成和神经功能 |
+| 维生素C | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 抗氧化,促进胶原蛋白合成和铁吸收 |
+| 维生素D | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 促进钙吸收,维持骨骼健康和免疫功能 |
+| 维生素K2 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 参与钙代谢和凝血功能 |
+
+## 五、微量元素评估
+
+| 指标 | 标准范围 | 缺乏 | 偏低 | 正常 | 偏高 | 说明 |
+|------|---------|------|------|------|------|------|
+| 铁 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 血红蛋白的重要组成部分,缺铁会导致贫血 |
+| 锌 | 0-100 | 0-5 | 6-14 | 15-99 | 90-100 | 参与免疫功能和伤口愈合,影响生长发育 |
+
+## 六、抗生素风险评估
+
+| 指标 | 标准范围 | 低风险 | 注意 | 高风险 | 说明 |
+|------|---------|-------|------|-------|------|
+| β-内酰胺酶类 | 0-100 | 0-30 | 30-60 | 60-100 | 青霉素类抗生素耐药基因水平 |
+| 氨基糖苷类 | 0-100 | 0-30 | 30-60 | 60-100 | 氨基糖苷类抗生素耐药基因水平 |
+| 大环内酯类 | 0-100 | 0-30 | 30-60 | 60-100 | 大环内酯类抗生素耐药基因水平 |
+| 呋喃类 | 0-100 | 0-30 | 30-60 | 60-100 | 呋喃类抗生素耐药基因水平 |
+| 喹诺酮类 | 0-100 | 0-30 | 30-60 | 60-100 | 喹诺酮类抗生素耐药基因水平 |
+| 磺胺类 | 0-100 | 0-30 | 30-60 | 60-100 | 磺胺类抗生素耐药基因水平 |
+| 甲氧苄啶类 | 0-100 | 0-30 | 30-60 | 60-100 | 甲氧苄啶类抗生素耐药基因水平 |
+| 氯霉素类 | 0-100 | 0-30 | 30-60 | 60-100 | 氯霉素类抗生素耐药基因水平 |
+| 四环素类 | 0-100 | 0-30 | 30-60 | 60-100 | 四环素类抗生素耐药基因水平 |
+
+## 七、肠道屏障及代谢物
+
+| 指标 | 标准范围 | 缺乏 | 不足 | 正常 | 过多 | 说明 |
+|------|---------|------|------|------|------|------|
+| 肠道炎症水平 | 0-80 | - | - | 0-80 | >80 | 肠道炎症程度评估,过高提示慢性炎症 |
+| 肠道产气 | 0-50 | - | - | 0-50 | >50 | 肠道产气水平,过高提示肠道菌群产气过多 |
+| 肠道屏障 | 15-100 | 0-15 | - | 15-100 | - | 肠道屏障功能评估,过低提示肠漏风险 |
+| 脂多糖LPS | 0-85 | - | - | 0-85 | >85 | 内毒素水平,过高提示肠道通透性增加 |
+| 次级胆汁酸 | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 胆汁酸代谢产物,与肝脏和消化功能相关 |
+| 对甲酚(p-Cresol) | 0-85 | - | - | 0-85 | >85 | 酪氨酸代谢产物,尿毒症毒素 |
+| 吲哚 | 15-90 | 0-5 | 5-15 | 15-90 | >90 | 色氨酸代谢产物,影响免疫和神经功能 |
+| 苯酚 | 0-85 | - | - | 0-85 | >85 | 酪氨酸代谢产物,过高提示肠道菌群失衡 |
+| 腐胺 | 5-85 | 0-5 | - | 5-85 | >85 | 多胺类物质,与细胞增殖和炎症相关 |
+| 硫化氢 | 5-85 | 0-5 | - | 5-85 | >85 | 含硫氨基酸代谢产物,影响肠道健康 |
+| 尸胺 | 5-85 | 0-5 | - | 5-85 | >85 | 组氨酸代谢产物,与肠道炎症相关 |
+
+## 八、短链脂肪酸
+
+| 指标 | 标准范围 | 缺乏 | 不足 | 正常 | 过高 | 说明 |
+|------|---------|------|------|------|------|------|
+| 丁酸盐(Butyrate) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 肠道上皮细胞主要能量来源,抗炎 |
+| 丙酸盐(Propionate) | 15-90 | 0-5 | 5-15 | 15-90 | >90 | 参与肝脏糖异生,调节食欲 |
+| 乙酸盐(Acetate) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 最丰富的短链脂肪酸,参与脂质代谢 |
+| 异戊酸盐(Isovaleric) | 5-85 | 0-5 | - | 5-85 | >85 | 支链脂肪酸,过量提示蛋白质腐败 |
+
+## 九、神经递质及激素
+
+| 指标 | 标准范围 | 缺乏 | 不足 | 正常 | 过多 | 说明 |
+|------|---------|------|------|------|------|------|
+| 血清素(5-HT) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 情绪调节、睡眠和食欲相关 |
+| γ-氨基丁酸(GABA) | 15-85 | 0-5 | 5-15 | 15-85 | >85 | 抑制性神经递质,抗焦虑 |
+| 谷氨酸(Glutamate) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 兴奋性神经递质,学习记忆相关 |
+| 色氨酸(Tryptophan) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 血清素和褪黑素前体 |
+| DOPAC | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 多巴胺代谢产物 |
+| 多巴胺 | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 奖赏、动机和运动控制相关 |
+| 组胺(Histamine) | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 免疫反应和胃酸分泌调节 |
+| 一氧化氮 | 15-95 | 0-5 | 5-15 | 15-95 | >95 | 血管舒张和神经信号传导 |
+| 喹啉(Quinolinic) | 0-95 | - | - | 0-95 | >95 | 色氨酸代谢产物,NMDA受体激动剂 |
+| 维生素K2 | 15-99 | 0-5 | 5-15 | 15-99 | >99 | 钙代谢和凝血功能调节 |
+| 肌醇(Inositol) | 15-99 | 0-5 | 5-15 | 15-99 | >99 | 细胞信号传导和脂质代谢 |
+
+## 十、主要消化道致病菌
+
+| 指标 | 检测值 | 评估 | 说明 |
+|------|-------|------|------|
+| 幽门螺杆菌 | 0% / ND | 未检出/检出 | 与胃炎、胃溃疡和胃癌相关 |
+| 艰难梭菌 | 0% / ND | 未检出/检出 | 抗生素相关性腹泻的主要病原菌 |
+| 沙门氏菌 | 0% / ND | 未检出/检出 | 食物中毒和肠道感染的常见病原菌 |
+| 志贺氏菌 | 0% / ND | 未检出/检出 | 细菌性痢疾的病原菌 |
+| 弯曲杆菌 | 0% / ND | 未检出/检出 | 常见的肠道感染病原菌 |
+
+## 附:健康总分评估标准
+
+| 维度 | 标准范围 | 分级说明 |
+|------|---------|---------|
+| 健康总分 | 0-100 | ≥80优秀,60-79良好,40-59一般,<40需关注 |
+| 菌群健康 | 0-100 | 反映肠道菌群整体健康程度 |
+| 慢病控制 | 0-100 | 反映慢性疾病风险控制水平 |
+| 营养均衡 | 0-100 | 反映营养摄入均衡程度 |
+| 肠道年龄 | 与实际年龄比较 | 肠道年龄反映肠道菌群的衰老/年轻程度 |

+ 388 - 0
docs/实现计划.md

@@ -0,0 +1,388 @@
+# 数据与 AI 结合 — 实现计划
+
+## 依赖关系图
+
+```
+Phase 1.1 (DB迁移) ──→ 1.3 (createDynamicTask) ──→ 1.4 (Controller改造)
+                                                       │
+Phase 1.2 (TaskParseService) ──────────────────────────┘
+                                                       │
+Phase 1.8 (FamilyContext增强) ─────────────────────────┘
+                                                       ↓
+                                             1.9 (编译验证)
+                                                       │
+               ┌───────────────────────────────────────┘
+               ↓
+Phase 1.5 (AITaskCard组件) ──→ 1.6 (chat.vue改造) ──→ 1.7 (报告详情页入口)
+                                                                  │
+                                                                  ↓
+                                                         Phase 2.x (持续增强)
+```
+
+## Phase 1: 基础能力 — 2周
+
+### 1.1 数据库迁移 — growth_tasks 表扩展
+
+**目标:** 支持 AI_GENERATED 类型任务,新增维度跟踪字段
+
+**文件:**
+- `cfc-backend/src/main/resources/schema.sql` — 同步建表语句
+- `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java` — 迁移代码
+- `cfc-backend/src/main/java/com/etotem/cfc/entity/GrowthTask.java` — 新增字段
+
+**迁移内容:**
+```sql
+-- migration N: growth_tasks 支持 AI 生成任务
+ALTER TABLE growth_tasks MODIFY COLUMN type
+  ENUM('DAILY','NEWBIE','AI_GENERATED') NOT NULL DEFAULT 'DAILY';
+ALTER TABLE growth_tasks ADD COLUMN dimension VARCHAR(20) NULL COMMENT '五维维度';
+ALTER TABLE growth_tasks ADD COLUMN source_conversation_id VARCHAR(100) NULL COMMENT '来源AI会话ID';
+```
+
+**实体类新增字段:**
+```java
+@TableField("dimension")
+private String dimension;
+
+@TableField("source_conversation_id")
+private String sourceConversationId;
+```
+
+**验收:** `mvn clean compile` 通过,迁移可重复执行不报错
+
+---
+
+### 1.2 TaskParseService — [TASK] 标记解析
+
+**目标:** 新建服务解析 Dify 返回的 `[TASK:{...}]` 标记,提取任务参数
+
+**文件:** 新建 `cfc-backend/src/main/java/com/etotem/cfc/service/TaskParseService.java`
+
+```
+1. TASK: 解析 Dify answer 中的 [TASK:{"title":"...","description":"...",...}] 标记
+2. EXPECTED OUTCOME: 返回解析后的 TaskParseResult 对象列表
+3. REQUIRED TOOLS: 正则 Pattern + Jackson ObjectMapper
+4. MUST DO:
+   - 正则 `\[TASK:\s*(\{.*?\})\](?:\s*\[TASK:...)*` 提取所有 TASK 标记
+   - 解析 JSON → TaskParseResult 对象
+   - 校验 title 必填
+   - 返回解析结果列表
+   - 从原 answer 中移除所有 TASK 标记
+5. MUST NOT DO: 不写入数据库(由调用方控制)
+```
+
+**TaskParseResult DTO:**
+```java
+public class TaskParseResult {
+    private String title;          // 必填
+    private String description;    // 选填
+    private String deadline;       // 选填 yyyy-MM-dd
+    private String dimension;      // 选填 body/mind/wisdom/action/wealth
+    private Integer rewardPoints;  // 选填
+}
+```
+
+**验收:** `"[TASK:{\"title\":\"读书30分钟\",\"dimension\":\"wisdom\"}]"` → 解析出 title=读书30分钟, dimension=wisdom
+
+---
+
+### 1.3 GrowthTaskService.createDynamicTask()
+
+**目标:** 新增方法,根据 AI 生成的任务参数创建 growth_tasks + growth_task_log
+
+**文件:** `cfc-backend/src/main/java/com/etotem/cfc/service/GrowthTaskService.java`
+
+**新增方法:**
+```java
+/**
+ * 创建 AI 动态生成任务
+ * @param userId 目标用户ID
+ * @param task 解析后的任务参数
+ * @param conversationId 来源AI会话ID
+ * @return 创建的任务ID
+ */
+@Transactional
+public Long createDynamicTask(Long userId, TaskParseResult task, String conversationId) {
+    // 1. 插入 growth_tasks (type=AI_GENERATED, enabled=1)
+    // 2. 插入 growth_task_log (progress=0, completed=0, claimed=0)
+    // 3. 返回 taskId
+}
+```
+
+**验收:** 调用后 growth_tasks 和 growth_task_log 各多一条记录
+
+---
+
+### 1.4 AIChatController 通用化改造
+
+**目标:** 统一处理 `[RECOMMEND]` 和 `[TASK]` 标记,全模式支持推荐
+
+**文件:** `cfc-backend/src/main/java/com/etotem/cfc/controller/ai/AIChatController.java`
+
+**改动点:**
+
+1. **sendMessage() 方法改造:**
+   - 将原来只在 sendNutritionMessage() 中的 RECOMMEND 解析提取为通用方法
+   - 在 sendMessage() 返回前统一调用 `parseAndHandleMarkers(answer)`
+   - 返回值结构扩展:`{ answer, conversationId, recommendations, tasks }`
+
+2. **parseAndHandleMarkers() 新增方法:**
+   ```java
+   private Map<String, Object> parseAndHandleMarkers(String answer, Long userId, String conversationId) {
+       // 1. 解析 [RECOMMEND:...] → RecommendationService.search
+       // 2. 解析 [TASK:...] → TaskParseService → GrowthTaskService.createDynamicTask
+       // 3. 返回 { cleanAnswer, recommendations, tasks }
+   }
+   ```
+
+3. **sendNutritionMessage() 简化:** 复用 parseAndHandleMarkers() 避免重复
+
+**验收:**
+- 普通对话输入"帮我推荐一些健康食品" → response 含 recommendations 列表
+- 普通对话输入"给我安排一个每天读书的任务" → response 含 tasks 列表
+- 旧功能不受影响(回归:营养对话仍能正常推荐)
+
+---
+
+### 1.5 AITaskCard 组件
+
+**目标:** 可复用的任务卡片组件,展示任务信息 + 接受按钮
+
+**文件:** 新建 `cfc-frontend/components/AITaskCard.vue`
+
+```vue
+<template>
+  <view class="ai-task-card">
+    <view class="task-header">
+      <text class="task-icon">📋</text>
+      <text class="task-title">{{ task.title }}</text>
+    </view>
+    <text class="task-desc" v-if="task.description">{{ task.description }}</text>
+    <view class="task-footer">
+      <text class="task-dimension" v-if="task.dimension">维度:{{ dimLabel }}</text>
+      <text class="task-deadline" v-if="task.deadline">截止:{{ task.deadline }}</text>
+    </view>
+    <button class="task-accept-btn" :loading="accepting" @click="handleAccept">接受任务</button>
+  </view>
+</template>
+
+<script>
+export default {
+  props: {
+    task: Object,
+    conversationId: String
+  },
+  data() { return { accepting: false } },
+  methods: {
+    async handleAccept() {
+      // 调用 POST /api/tasks/accept-dynamic
+      // 参数: { taskTitle, taskDescription, deadline, dimension, conversationId }
+      this.accepting = true
+      try {
+        const res = await api.acceptDynamicTask({...})
+        if (res.code === 200) {
+          uni.showToast({ title: '任务已接受' })
+          this.$emit('accepted', res.data)
+        }
+      } finally {
+        this.accepting = false
+      }
+    }
+  }
+}
+</script>
+```
+
+**验收:** 组件在 chat.vue 中导入后可正常渲染和点击接受
+
+---
+
+### 1.6 chat.vue 改造
+
+**目标:** 支持任务卡片渲染、全模式推荐展示、报告解读模式
+
+**文件:** `cfc-frontend/pages/ai/chat.vue`
+
+**改动点:**
+
+1. **消息结构扩展** — 在 data 中支持 tasks 字段
+2. **模板新增任务卡片区域** — messages 循环中插入 AITaskCard
+3. **推荐卡片区域增强** — 从 only nutrition 模式扩展到所有模式
+4. **新模版:`mode=report`** — 接收 reportId 参数,sendMessage 时自动传入
+5. **消息气泡标注来源** — 如果是报告解读,气泡上显示"基于健康报告"标签
+
+```
+改动区段:
+- <template> 中 #80~90 行,推荐卡片区域改为无条件渲染
+- <template> 消息气泡内新增任务卡片区域
+- <script> data() 中新增支持任务字段
+- <script> sendMessage() 中参数扩展:reportId
+- <script> onLoad() 中新增 mode=report 处理
+```
+
+**验收:**
+- 普通对话返回推荐数据 → 显示推荐卡片
+- AI 返回任务 → 显示任务卡片 + 可点击接受
+- 跳转 `chat.vue?mode=report&reportId=123` → 发消息时自动带 reportId
+
+---
+
+### 1.7 报告详情页 AI 解读入口
+
+**目标:** 各报告详情页底部增加"让浠宝/福宝解读"入口
+
+**文件:**
+- `cfc-frontend/pages/body-detail/health-report.vue`
+- `cfc-frontend/pages/health/gut-index.vue`
+- `cfc-frontend/pages/health/tongue-index.vue`
+- `cfc-frontend/pages/health/report-upload.vue`
+- `cfc-frontend/pages/body-detail/health-report.vue`
+
+**实现方式:** 各页面的模板底部新增:
+```vue
+<view class="ai-interpret-entry" @click="goAIChat">
+  <image class="ai-mascot-avatar" :src="mascotAvatar" />
+  <view class="ai-entry-text">
+    <text class="ai-entry-title">让 {{ mascotName }} 帮你解读</text>
+    <text class="ai-entry-desc">基于这份报告,{{ mascotName }} 会给出个建议</text>
+  </view>
+  <text class="ai-entry-arrow">›</text>
+</view>
+```
+
+**goAIChat 方法:**
+```javascript
+goAIChat() {
+  const userInfo = uni.getStorageSync('userInfo')
+  const mascot = userInfo && userInfo.mascot === 'fubao' ? '福宝' : '浠宝'
+  uni.navigateTo({
+    url: '/pages/ai/chat?mode=report&reportId=' + this.reportId + '&firstMessage=' 
+         + encodeURIComponent('你好' + mascot + ',帮我看看这份报告有什么需要注意的地方?')
+  })
+}
+```
+
+**验收:** 每个报告详情页底部可见 AI 入口,点击后跳转 chat.vue 并自动发送解读请求
+
+---
+
+### 1.8 FamilyContextService 任务上下文注入
+
+**目标:** 在 AI 上下文中注入用户当前任务状态,让 Dify 感知任务进度
+
+**文件:** `cfc-backend/src/main/java/com/etotem/cfc/service/FamilyContextService.java`
+
+**改动点:** `buildContext()` 末尾增加:
+```java
+// 6. 当前未完成任务列表
+List<Map<String, Object>> pendingTasks = getPendingTasks(userId);
+if (!pendingTasks.isEmpty()) {
+    ctx.put("pendingTasks", pendingTasks);
+}
+```
+
+```java
+private List<Map<String, Object>> getPendingTasks(Long userId) {
+    // 查询当前用户未完成的 growth_task_log 关联的 growth_tasks
+    // 返回 title, type, dimension 等信息
+}
+```
+
+**验收:** 用户有未完成任务时,Dify inputs 中包含 `pendingTasks` 字段
+
+---
+
+### 1.9 编译验证
+
+**目标:** 确保 Phase 1 所有后端改动编译通过,无路由冲突
+
+```bash
+cd cfc-backend && mvn clean compile
+grep -rn '@Mapping' src/main/java/com/etotem/cfc/controller/ | grep -oP '@\w+Mapping\("\K[^"]*' | sort -u | grep -E '(task|ai)'
+```
+
+**验收:** `mvn clean compile` exit 0,新增路由无重复
+
+---
+
+## Phase 2: 智能增强 — 2周
+
+### 2.1 Dify Workflow 合并
+
+**平台配置(在 Dify 平台操作,非代码):**
+1. 在 Dify 中创建新的 App(含 Workflow)
+2. 配置 Classifier Node,基于 query+inputs 做场景分类
+3. 配置 Report Analysis Agent / Nutrition Advisor Agent / Task Manager Agent / Family Assistant Agent
+4. 配置 Post Processor 格式化输出(合并 RECOMMEND / TASK 标记)
+5. 配置回调 URL 指向 `/api/ai/context`(保留原有记忆逻辑)
+6. 生成新的 API Key
+
+**后端适配:**
+- `AIService.java`:统一使用新 API Key,删除 nutritionApiKey/tongueApiKey
+- 响应兼容处理(workflow 返回格式可能与 chat-messages 有差异)
+
+**验收:** 现有所有 AI 功能在新 App 上正常运作
+
+### 2.2 推荐排序优化
+
+**文件:** `cfc-backend/src/main/java/com/etotem/cfc/service/RecommendationService.java`
+
+**改动点:**
+1. `search()` 方法中增加排序逻辑:
+   - 标签匹配度排序(匹配标签数多的优先)
+   - 已购商品降权(`ProductOrder` 中已购买过的商品排后)
+   - 维度匹配加分(与用户当前关注维度对齐的优先)
+   - 按 `createdAt` 时效性排序
+2. 前端推荐卡片增加"已购买"标记
+
+### 2.3 任务展示与接受完整流程
+
+**后端:** 新建 `POST /api/tasks/accept-dynamic`
+```java
+@PostMapping("/api/tasks/accept-dynamic")
+public Result<Long> acceptDynamicTask(@RequestAttribute("userId") Long userId,
+                                      @RequestBody Map<String, Object> params) {
+    // 参数:title, description, deadline, dimension, conversationId
+    // 调用 growthTaskService.createDynamicTask()
+    // 返回 taskId
+}
+```
+
+**前端:** AITaskCard 组件点击"接受任务" → 调用此接口 → 显示成功提示
+
+---
+
+## Phase 3: 体验优化 — 持续
+
+### 3.1 Mascot 动效与个性化
+
+- 浠宝(🌟):暖橙色系动画,温柔语音提示
+- 福宝(💪):金色系动画,活泼语气
+- 表情随对话内容变化(开心/思考/鼓励)
+
+### 3.2 A/B 测试
+
+- 对照组:无 AI 解读入口的报告详情页
+- 实验组:有 AI 解读入口
+- 指标:解读点击率、任务接受率、次日回访率
+
+---
+
+## 团队任务分配建议
+
+| 开发 | 任务 |
+|------|------|
+| 后端 A | 1.1 DB迁移 + 1.2 TaskParseService + 1.3 createDynamicTask |
+| 后端 B | 1.4 Controller改造 + 1.8 FamilyContext增强 + 1.9 编译验证 |
+| 前端 A | 1.5 AITaskCard组件 + 1.6 chat.vue改造 |
+| 前端 B | 1.7 各报告详情页AI入口 |
+| 并行启动 | 1.1/1.2 可先启动(无依赖),1.5 可先启动(无依赖) |
+
+---
+
+## 回滚策略
+
+- 数据库迁移:`ALTER TABLE ... MODIFY COLUMN` 改回原 ENUM,`DROP COLUMN` 新字段
+- 后端:回滚 Git 提交
+- 前端:`git revert` 对应提交
+- Dify:保留旧 App 配置,新 App 验证通过后再切换

+ 409 - 0
docs/数据与AI结合技术方案.md

@@ -0,0 +1,409 @@
+# 数据与 AI 结合技术方案
+
+## 一、现有系统分析
+
+### 1.1 Dify AI 聊天架构
+
+```
+前端 (ai/chat.vue) → AIChatController → AIService → Dify Chatbot API (http://dify.bianwoyou.cn/v1)
+                                         ↕
+                                    FamilyContextService (家庭上下文)
+                                    AiConversationSummary (记忆层)
+                                    AiUserFact (用户事实)
+```
+
+**核心数据流:**
+1. 用户发消息 → `POST /api/ai/chat/send` (参数: query + conversationId + reportId/surveyId)
+2. `FamilyContextService.buildContext(userId, reportId, surveyId)` 组装家庭上下文
+3. 注入 mascot 角色信息到 Dify inputs
+4. `AiService.enrichInputsWithMemory()` 注入记忆层(最近摘要 + 关键事实)
+5. 调用 Dify `/chat-messages` API
+6. 返回 answer → 前端展示
+
+**已有能力:**
+- 家庭上下文注入(用户信息、孩子列表、任务完成率、健康报告、五维能量分数、认知测评结果、已购商品标签)
+- 报告上下文注入(reportId → reportDetail + surveyData)
+- Mascot 人格注入(浠宝 🌟/福宝 💪)
+- AI 记忆层(会话摘要 + 关键事实,通过 Dify Workflow 异步生成)
+- 两个 Dify 应用:通用家庭助手 + 精准营养助手(不同 API Key)
+
+### 1.2 健康报告体系
+
+```
+报告上传 (report-upload.vue)
+  ├── 体检报告 (physical_exam) → HealthReportService
+  ├── 肠道菌群报告 (gut_flora)  → HealthAnalysisService 分析 → 营养推荐
+  └── 舌诊拍照 (tongue)         → AIService.sendTongueDiagnosis()
+
+DAN 报告上传 (DanReportController)
+  └── Upload PDF → DanReportParseService 解析 → 编辑/确认 → 入库到 DanAssessmentResult
+      └── 确认后刷新五维能量分数
+```
+
+**健康分析流程:**
+- `HealthAnalysisService.analyze(reportId)` → 分析菌群、指标 → 生成 findings/suggestions/nutritionTags
+- 分析后异步关联推荐商品(`ProductRecommendationLog`)
+- 分析结果注入 Dify inputs → 精准营养助手
+
+### 1.3 推荐系统
+
+```java
+RecommendationService.search(RecommendationQuery)
+  ├── searchProducts(tags, limit)    → Product 表(状态=上架, stock>0, 名称/描述模糊匹配)
+  ├── searchActivities(tags, limit)  → Activity 表(状态=published, 未过期)
+  ├── searchArticles(tags, limit)    → Article 表(状态=published)
+  ├── searchViaDify(tags, limit)     → Dify 知识库 fallback
+  └── getDimensionProducts(dimensionCode) → ProductDimensionMapping 维度匹配
+
+// 营养模式下:Dify 返回 [RECOMMEND:{"tags":["益生菌","膳食纤维"],"types":["product"],"limit":3}]
+// AIChatController 解析 → RecommendationService.search → 返回推荐列表
+```
+
+### 1.4 任务生成
+
+- `GrowthTaskService` 管理预定义 DAILY/NEWBIE 任务(如 DAILY_AI = 每日 AI 对话)
+- `AIChatController` 在每次 AI 对话后调用 `growthTaskService.updateProgress(userId, "DAILY_AI", 1)`
+- 不支持 AI 动态生成任务
+
+### 1.5 饮食推荐
+
+- `MealRecommendController` → `MealRecommendService` → 聚合用户上下文 → 调用 Dify 营养助手生成食谱
+
+---
+
+## 二、目标方案设计
+
+### 核心需求
+
+1. **报告上传 → AI 解读**:用户上传健康报告/测评报告后,自动触发浠宝/福宝互动解读
+2. **上下文增强 AI**:AI 对话中携带用户关键数据(报告、任务、能量、历史对话)
+3. **AI 生成任务**:AI 解读过程中可生成待办任务
+4. **AI 内容推荐**:解读过程中推荐相关商品/活动/文章
+
+### 2.1 报告上传 → AI 解读
+
+**触发场景:**
+
+| 场景 | 入口 | 报告类型 | 解读方式 |
+|------|------|----------|----------|
+| 健康报告上传 | `report-upload.vue` | health_report | 上传后弹窗"去问浠宝/福宝" → 跳转 chat.vue?mode=report&reportId=X |
+| 菌群报告完成 | `gut-index.vue` | gut_flora | 分析完成后自动弹出 AI 解读入口 |
+| DAN 报告确认 | `DanReportController.confirm` | dan_assessment | 确认入库后自动触发 AI 解读任务 |
+| 舌诊完成 | `tongue-index.vue` | tongue | 舌诊结果页面→点击"AI 分析"→跳转 chat |
+
+**流程图:**
+
+```
+用户上传报告
+    ↓
+解析/保存成功
+    ↓
+页面显示"AI 解读"按钮 (浠宝/福宝 头像 + "让XX帮你解读")
+    ↓
+用户点击 → 跳转 chat.vue?mode=report&reportId=X&dimension=body
+    ↓
+AIChatController.sendMessage(reportId=X)
+    ↓
+FamilyContextService.buildContext(userId, reportId) 注入报告详情
+    ↓
+Dify 根据报告数据生成个性化解读 + 建议
+```
+
+**前端改动:**
+
+每个报告详情页底部增加"AI 解读"入口,使用用户设置的 mascot 角色:
+
+```vue
+<view class="ai-entry" @click="goAIChat">
+  <text class="ai-entry-icon">{{ mascotIcon }}</text>
+  <text class="ai-entry-text">让 {{ mascotName }} 帮你解读这份报告</text>
+</view>
+```
+
+### 2.2 Dify AI 应用整合
+
+**当前问题:** 通用助手、营养助手、舌诊分析各自独立,上下文隔离。
+
+**目标架构:** 单一增强型 Dify Chatbot,通过 inputs 实现场景路由:
+
+```
+Dify Workflow:
+  User Input → 场景分类节点 → 
+    ├─ 报告解读 → 注入报告上下文 → 专业解读
+    ├─ 营养建议 → 注入健康分析 → 营养推荐
+    ├─ 日常对话 → 家庭上下文 → 通用回答
+    ├─ 任务生成 → 检测任务意图 → 生成任务
+    └─ 内容推荐 → 检测推荐意图 → 返回推荐标记
+```
+
+**inputs 注入数据层级:**
+
+```json
+{
+  // === 基础层(每次必带)===
+  "user": {"nickname": "...", "role": "parent"},
+  "mascot_name": "XIBAO",
+  "mascot_gender": "女", 
+  "mascot_persona": "温柔可爱的浠宝小女孩",
+  "children": [{"name": "小明", "age": 8, "taskCompletionRate": 0.8}],
+  "dimensionScores": {"body": 85, "mind": 72, "wisdom": 90, "action": 78, "wealth": 65},
+  
+  // === 场景层(按需注入)===
+  // 报告解读场景
+  "reportDetail": { /* 完整报告数据 */ },
+  "reportSurvey": { /* 问卷数据 */ },
+  
+  // 健康分析场景  
+  "health_analysis": { /* findings, suggestions, nutritionTags */ },
+  
+  // 对话记忆层
+  "conversation_summary": "家长很关心孩子的肠道健康...",
+  "user_facts": "小明对乳糖不耐受\n小明喜欢运动",
+  
+  // 任务上下文
+  "recentTasks": [{"title": "每日阅读30分钟", "status": "in_progress"}]
+}
+```
+
+### 2.3 AI 生成任务
+
+**方案:** 在 Dify Workflow 中增加"任务生成"节点,当检测到用户意图包含"任务"、"计划"、"目标"等关键词时,按约定格式返回任务数据。
+
+**Dify 返回格式约定:**
+
+```
+[TASK:{"title":"每日阅读30分钟","description":"选择一本感兴趣的课外书","deadline":"2026-07-25","dimension":"wisdom","rewardPoints":10}]
+```
+
+**后端解析流程(新增 TaskParseService):**
+
+```
+AIChatController
+  ├── 调用 Dify → 获取 answer
+  ├── 解析 [TASK:...] 标记 → TaskParseService
+  │   ├── 校验参数完整性
+  │   ├── 调用 GrowthTaskService.createDynamicTask() → 插入 growth_tasks 表(新增 type=AI_GENERATED)
+  │   └── 返回 taskId
+  ├── 从 answer 移除 TASK 标记
+  └── 返回 result { answer, tasks: [...] }
+```
+
+**GrowthTaskService 新增方法:**
+
+```java
+@Transactional
+public Long createDynamicTask(Long userId, String title, String description,
+                               String deadline, String dimension, Integer rewardPoints) {
+    // 新增 growth_tasks 记录(type=AI_GENERATED)
+    GrowthTask task = new GrowthTask();
+    task.setType("AI_GENERATED");
+    task.setTitle(title);
+    task.setDescription(description);
+    // 自动创建 GrowthTaskLog 并分配给对应用户
+    // 返回 taskId
+}
+```
+
+**数据库:**
+
+```sql
+-- growth_tasks 新增 AI_GENERATED 类型
+ALTER TABLE growth_tasks MODIFY COLUMN type 
+  ENUM('DAILY','NEWBIE','AI_GENERATED') NOT NULL DEFAULT 'DAILY';
+
+-- 新增字段
+ALTER TABLE growth_tasks ADD COLUMN dimension VARCHAR(20) NULL COMMENT '五维维度(body/mind/wisdom/action/wealth)';
+ALTER TABLE growth_tasks ADD COLUMN source_conversation_id VARCHAR(100) NULL COMMENT '来源AI会话ID';
+```
+
+**前端展示:**
+
+AI 消息气泡中增加任务卡片,显示任务标题+描述+截止时间,点击"接受任务"按钮:
+
+```vue
+<view class="task-card" v-if="msg.tasks && msg.tasks.length > 0">
+  <view class="task-item" v-for="(task, ti) in msg.tasks" :key="ti">
+    <text class="task-title">📋 {{ task.title }}</text>
+    <text class="task-desc">{{ task.description }}</text>
+    <text class="task-deadline" v-if="task.deadline">截止:{{ task.deadline }}</text>
+    <button class="task-accept-btn" @click="acceptTask(task)">接受任务</button>
+  </view>
+</view>
+```
+
+### 2.4 AI 内容推荐增强
+
+**当前限制:** 仅营养模式下支持 `[RECOMMEND]` 标记,普通对话模式不支持推荐。
+
+**增强方案:** 所有 Dify 回复统一支持推荐标记
+
+```java
+// 通用推荐解析(AIChatController.sendMessage 中统一处理)
+if (answer.contains("[RECOMMEND]")) {
+    // 解析推荐标记 → RecommendationService.search
+    // 返回 recommendations 列表
+}
+```
+
+**推荐范围扩展:**
+
+| 推荐类型 | 匹配方式 | 数据源 |
+|----------|----------|--------|
+| product | 营养标签 → 商品名称/描述 | Product(state=上架) |
+| activity | 营养标签 → 活动标题/描述 | Activity(已发布+未过期) |
+| article | 营养标签 → 文章标题/摘要/标签 | Article(已发布) |
+| meal | 营养标签+健康分析 → Dify 生成 | MealRecommend |
+
+**推荐排序优化:**
+```
+RecommendationService.search 增强:
+  1. 标签匹配度排序(匹配标签数多的优先)
+  2. 用户已购商品降权(不重复推荐已购买商品)
+  3. 五维维度匹配加分(与用户当前关注维度对齐的优先)
+  4. 时效性排序
+```
+
+### 2.5 Dify Workflow 改造设计
+
+**当前 Dify 应用:**
+- App1: 通用家庭助手 (api-key-1)
+- App2: 精准营养助手 (api-key-nutrition)
+
+**目标:** 合并为单一应用 + 场景路由
+
+```
+Dify Workflow 设计:
+
+[Start] User Input + Inputs (family context)
+  │
+  ▼
+[Classifier Node] 场景分类(基于 query + context)
+  ├── "report" → [Report Analysis Agent] 
+  │   ├── 解读报告数据
+  │   ├── 生成个性化建议
+  │   ├── [Recommend Items] → 输出 [RECOMMEND...]
+  │   └── [Generate Tasks] → 输出 [TASK...]
+  │
+  ├── "nutrition" → [Nutrition Advisor Agent]
+  │   ├── 基于 health_analysis 给出营养建议
+  │   ├── [Recommend Items]
+  │   └── [Generate Tasks]
+  │
+  ├── "meal" → [Meal Planner Agent]
+  │   ├── 根据健康数据和候选食材生成食谱
+  │   └── [Generate Tasks]
+  │
+  ├── "task" → [Task Manager Agent]
+  │   ├── 创建/修改/查询任务
+  │   └── [TASK...]
+  │
+  └── "general" → [Family Assistant Agent]
+      ├── 基于家庭上下文的日常问答
+      └── [Recommend Items] (可选)
+
+所有 Agent 输出 → [Post Processor] 
+  ├── 合并 RECOMMEND / TASK 标记
+  └── 返回最终 answer
+```
+
+### 2.6 前端 chat.vue 改造
+
+**新增能力:**
+
+| 特性 | 实现方式 |
+|------|----------|
+| 报告解读模式 | `mode=report&reportId=X` → 自动注入报告上下文 |
+| 任务卡片渲染 | 解析 `msg.tasks` → 展示任务卡片 + 接受按钮 |
+| 推荐卡片增强 | 全模式支持推荐展示(目前仅 nutrition) |
+| 上下文来源显示 | 消息气泡上标注"基于你的健康报告"等来源标签 |
+| Mascot 动效 | 浠宝/福宝各有不同的动画和语气 |
+
+**消息类型扩展:**
+
+```javascript
+// 消息结构
+{
+  id: 'msg_xxx',
+  role: 'assistant',
+  content: '根据你的肠道报告...',
+  type: 'report_analysis' | 'nutrition' | 'general' | 'task',
+  recommendations: [
+    { type: 'product', id: 1, name: '益生菌', ... }
+  ],
+  tasks: [
+    { id: 'task_1', title: '每日补充益生菌', description: '...', deadline: '...' }
+  ],
+  sourceReport: { id: 123, type: 'gut_flora', score: 85 }
+}
+```
+
+---
+
+## 三、实施优先级与里程碑
+
+### Phase 1: 基础能力(2周)
+1. **报告上传后的 AI 解读入口** — 各报告详情页增加"AI 解读"按钮
+2. **通用推荐解析** — 普通对话模式也支持 `[RECOMMEND]` 标记
+3. **消息类型扩展** — 前端支持任务卡片渲染
+
+### Phase 2: 智能增强(2周)
+4. **AI 动态任务生成** — TaskParseService + GrowthTaskService.createDynamicTask
+5. **Dify Workflow 合并** — 单一应用 + 场景分类节点
+6. **任务展示与接受流程** — 前端完整交互
+
+### Phase 3: 体验优化(持续)
+7. **Mascot 动效与个性化** — 浠宝/福宝各有特色
+8. **推荐排序优化** — 标签权重 + 用户画像
+9. **A/B 测试** — AI 解读 vs 无 AI 解读的转化率对比
+
+---
+
+## 四、涉及文件清单
+
+### 后端新增/修改
+| 文件 | 改动类型 | 说明 |
+|------|----------|------|
+| `AIChatController.java` | 修改 | 通用化推荐解析、增加 task 标记解析 |
+| `AIService.java` | 修改 | 支持新 Dify Workflow 格式 |
+| `GrowthTaskService.java` | 修改 | 新增 `createDynamicTask()` 方法 |
+| `FamilyContextService.java` | 修改 | 增加任务上下文注入 |
+| `RecommendationService.java` | 修改 | 推荐排序优化 |
+| `service/TaskParseService.java` | 新增 | 解析 `[TASK]` 标记 |
+| `entity/GrowthTask.java` | 修改 | 新增 dimension/sourceConversationId 字段 |
+| `schema.sql` | 修改 | 新增字段定义 |
+| `DatabaseInitializer.java` | 修改 | 数据库迁移 |
+
+### 前端新增/修改
+| 文件 | 改动类型 | 说明 |
+|------|----------|------|
+| `pages/ai/chat.vue` | 修改 | 任务卡片渲染、全模式推荐展示 |
+| `pages/health/report-upload.vue` | 修改 | 上传后 AI 解读入口 |
+| `pages/body-detail/health-report.vue` | 修改 | 报告详情页 AI 入口 |
+| `pages/health/gut-index.vue` | 修改 | 菌群报告 AI 入口 |
+| `pages/health/tongue-index.vue` | 修改 | 舌诊 AI 入口 |
+| `utils/api.js` | 修改 | 新增 chat 相关 API 类型 |
+| `components/AITaskCard.vue` | 新增 | 任务卡片组件 |
+
+### Dify 平台配置
+| 配置 | 说明 |
+|------|------|
+| Dify Workflow 改造 | 合并为单一应用+场景分类 |
+| 新增 Agent 节点 | Report Analysis / Task Manager |
+| API Key 统一 | 由多个 API Key 合并为单一 Key |
+
+---
+
+## 五、关键设计决策
+
+1. **Dify 端做场景分类 vs 后端分类**
+   - 选择:**Dify Workflow 做场景分类** — 减少后端耦合,场景路由规则可灵活调整
+   - 后端只做通用接口 + 标记解析
+
+2. **任务结构:growth_tasks vs 独立任务表**
+   - 选择:**复用 growth_tasks**(新增 AI_GENERATED 类型)— 统一任务展示入口,复用积分/能量奖励体系
+
+3. **推荐触发:Dify 标记 vs 后端规则**
+   - 选择:**Dify 标记 + 后端兜底** — Dify 根据语义判断何时推荐,后端在无推荐时基于标签做兜底推荐
+
+4. **AI 记忆:Dify 自带 vs 本地存储**
+   - 选择:**两者结合** — Dify 会话级记忆 + 本地 AiConversationSummary/AiUserFact 做跨会话持久记忆

+ 226 - 0
omo/plans/migration-python-to-java-report-parsing.md

@@ -0,0 +1,226 @@
+# Python → Java 报告解析迁移计划
+
+## 背景
+
+菌群报告和 DAN 测评报告的 Python 解析脚本(`docs/参考资料/`)是离线数据预处理工具。Java 运行时(`cfc-backend/`)已有部分实现但覆盖不全。
+
+## 现状
+
+| 解析器 | Java 现状 | Python 覆盖 | 差距 |
+|--------|----------|------------|------|
+| 菌群报告 `PdfParseService` | ✅ 868行,PDFBox,完整 | `extract_full_report_v5.py` 1393行 | 持平,Java 已可用于生产 |
+| DAN A2 (mind) | ✅ 已完成 | `extract_a2_data()` | 持平 |
+| DAN B4 (wisdom) | ✅ 已完成 | `extract_b4_data()` | 持平 |
+| DAN A1 儿童认知 | ❌ 未实现 | `extract_a1_data()` | **需移植** |
+| DAN B2 儿童行为 | ❌ 未实现 | `extract_b2_data()` | **需移植** |
+| DAN B3 学习能力 | ❌ 未实现 | `extract_b3_data()` | **需移植** |
+| DAN B5 青春期 | ❌ 未实现 | `extract_b5_data()`(含仪表盘图片分析) | **需移植** |
+| DAN B6 职业发展 | ❌ 未实现 | `extract_b6_data()` | **需移植** |
+| DAN C1 校园版 | ❌ 未实现 | `extract_c1_data()` | **需移植** |
+
+## 总体策略
+
+**菌群报告**:Java 已满足生产需求,不做变动。Python 脚本保留为离线参考。
+
+**DAN 报告**:分3波迁移。每波包含:解析逻辑 → 新增 Controller 端点 → 测试验证。
+
+---
+
+## Wave 1 — 基础类型(A1 + B3)
+
+**目标**:纯文本正则提取,无图片分析,约 140 行 Python → Java
+
+### A1 儿童核心认知发展
+
+Python: `extract_a1_data()` ~43 行
+- 6 个认知维度:感知觉、注意力、记忆力、推理能力、空间能力、加工速度
+- 提取逻辑:正则匹配 3 种 PDF 格式(summary 页百分位、detail 页得分+百分位、fallback)
+- 输出格式:`{维度名_pct, 维度名_score}`
+
+**Java 实现方案**:
+- 在 `DanReportParseService` 中新增 `parseA1Report(List<String> lines, String fullText)` 方法
+- 复用现有的 `DataItem` 和 `DanParsedReport` 结构
+- 维度映射到 `dan_assessment_results` 表的 `attention_score`, `memory_score`, `perception_score`, `spatial_score`, `processing_speed_score`, `logic_score` 字段
+- 新增 `dimension="cognition"` 路由分支(`parseText()` 中)
+
+### B3 核心学习能力
+
+Python: `extract_b3_data()` ~74 行
+- 3 大模块:执行功能(认知灵活性/抑制控制/元认知)、学习动机(内在/外在)、学习策略(深层/表面)
+- 提取逻辑:章节分割 + 正则匹配分数
+
+**Java 实现方案**:
+- 新增 `parseB3Report()` 方法
+- 复用 `findSectionStart()` + `parseScorePairs()` 模式
+- 新增 `dimension="learning"` 路由分支
+
+### Wave 1 改动范围
+
+```
+DanReportParseService.java
+├── parseText(): 新增 "cognition" / "learning" 路由
+├── parseA1Report()        ← 新增,~60 行
+├── parseB3Report()        ← 新增,~80 行
+├── parseScorePairs()      ← 新增辅助方法,复用正则
+└── DataItem / DanParsedReport 结构不变
+
+DanAssessmentController.java
+├── parsePreview(): 放开 dimension 校验(当前只允许 mind/wisdom)
+└── dimension 映射表: cognition→A1, learning→B3
+
+schema.sql / DatabaseInitializer
+└── 无需新增表(dan_assessment_results 已有 JSON 字段 structured_analysis)
+```
+
+---
+
+## Wave 2 — 中等复杂度(B2 + B6 + C1)
+
+### B2 儿童自我与家庭教养
+
+Python: `extract_b2_data()` ~74 行
+- 自我概念 6 维 + 儿童行为 8 维 + 家庭环境 10 维
+- 提取逻辑:章节定位 + 正则匹配
+
+**Java 实现方案**:
+- 新增 `parseB2Report()` 方法
+- 复用 `parseSelfConcept()`(已存在于 B4 解析中)
+- 新增行为、家庭环境的提取方法
+- 新增 `dimension="behavior"` 路由
+
+### B6 职业发展
+
+Python: `extract_b6_data()` ~77 行
+- Holland 兴趣 6 型(RIASEC)+ 多元智能 8 维 + 职业价值观
+- 提取逻辑:表格文本正则匹配
+
+**Java 实现方案**:
+- 新增 `parseB6Report()` 方法
+- 新增 `dimension="career"` 路由
+
+### C1 校园版
+
+Python: `extract_c1_data()` ~91 行
+- 认知 6 维(同 A1)+ 大五人格 5 维(同 A2)+ 自驱力 3 维 + 自我概念 6 维
+- 提取逻辑:复用 A1 和 A2 的维度提取
+
+**Java 实现方案**:
+- 新增 `parseC1Report()` 方法
+- 复用 `parseA1Report()` 的认知维度提取 + A2 的大五人格提取
+- 新增 `dimension="campus"` 路由
+
+### Wave 2 改动范围
+
+```
+DanReportParseService.java
+├── parseText(): 新增 "behavior"/"career"/"campus" 路由
+├── parseB2Report()         ← 新增,~80 行
+├── parseB6Report()         ← 新增,~80 行
+├── parseC1Report()         ← 新增,~60 行(复用现有方法)
+├── parseFamilyEnvironment() ← 新增辅助方法
+├── parseHollandInterest()   ← 新增辅助方法
+└── parseMultipleIntelligence() ← 新增辅助方法
+
+DanAssessmentController.java
+└── 路由映射扩展
+
+schema.sql / DatabaseInitializer
+└── 无需新增表
+```
+
+---
+
+## Wave 3 — 高复杂度(B5 青春期 + B4 增强)
+
+### B5 青春期挑战
+
+Python: `extract_b5_data()` + 罗盘仪表盘图片分析 ~150 行
+- 情绪调节 2 维 + 学业压力 5 维 + 人际关系 4 维 + 社交 5 维 + 睡眠/运动/网络
+- 特殊:B5 报告含 **指南针仪表盘图像**,Python 用 PyMuPDF 提取 PNG + 像素分析
+
+**Java 实现方案**:
+- **文本部分**:新增 `parseB5Report()`,正则提取各维度分数,这覆盖 80% 的数据
+- **图像部分**(指南针仪表盘):
+  1. 用 PDFBox 提取页面图像 `PDImageXObject`
+  2. 用 Java `BufferedImage` 做像素颜色分析(替代 Python 的 PIL 角度测量)
+  3. 或:降级方案——跳过图像分析,仅从文本提取可读分数(文本已包含主要维度的数字评分)
+- 新增 `dimension="adolescent"` 路由
+
+**谨慎意见**:B5 指南针仪表盘是 PNG 嵌入图像,PDFBox 可以提取,但像素级别的指针角度分析在 Java 中更啰嗦(需用 `BufferedImage.getRGB()` 手动实现)。可以考虑:
+- 方案 A:纯 Java 实现完整图像分析(2-3 天工作量)
+- 方案 B:跳过图像分析,从文本提取所有维度分数(文本里已有 80% 的数据),1 天内完成
+- 建议:**先做方案 B**,文本提取覆盖核心数据,图像部分延后
+
+### Wave 3 改动范围
+
+```
+DanReportParseService.java
+├── parseText(): 新增 "adolescent" 路由
+├── parseB5Report()         ← 新增,~120 行(文本部分)
+├── parseB5CompassImage()   ← 可选,降级优先
+└── extractImageFromPDF()   ← 新增辅助(PDFBox→BufferedImage)
+
+DanAssessmentController.java
+└── 路由映射扩展 + 处理 B5 图片分析结果
+
+schema.sql / DatabaseInitializer
+└── 无需新增表
+```
+
+---
+
+## 测试策略
+
+每波完成后验证:
+
+```
+cfc-backend/src/test/java/.../DanReportParseServiceTest.java
+├── testParseA1Report()     — 用真实 A1 PDF 测试 6 维度提取
+├── testParseB3Report()     — 用真实 B3 PDF 测试
+├── testParseA2Report()     — 已有,确认回归
+├── testParseB4Report()     — 已有,确认回归
+├── testParseB2Report()     — Wave 2
+├── testParseB6Report()     — Wave 2
+├── testParseC1Report()     — Wave 2
+└── testParseB5Report()     — Wave 3
+
+HealthReportControllerTest.java
+└── testUploadGutFloraReport() — 回归确认菌群报告不受影响
+```
+
+**测试用 PDF**:`docs/参考资料/dan_reports/` 下已有各类型真实 PDF 样本。
+
+**验证命令**:
+```bash
+cd cfc-backend && mvn clean compile test -Dtest=DanReportParseServiceTest
+```
+
+---
+
+## 不会改动的内容
+
+- 菌群报告的 Python `extract_full_report_v5.py`:保留为离线参考
+- DAN Python 脚本集合 `dan_reports/`:完整保留,不删除
+- `PdfParseService.java`:不做任何改动
+- `HealthReportController.java`:不做任何改动
+- DB schema:**不需要新增表**,`dan_assessment_results.structured_analysis`(JSON 字段)已支持所有 DAN 报告类型的结构化数据存储
+
+## 总工作量估算
+
+| Wave | 新增 Java 行数 | 类型数 | 复杂度 | 估计工时 |
+|------|---------------|--------|--------|---------|
+| Wave 1 (A1+B3) | ~140 | 2 | 低 | 1-2 天 |
+| Wave 2 (B2+B6+C1) | ~220 | 3 | 中 | 2-3 天 |
+| Wave 3 (B5) | ~150 | 1 | 高 | 1-2 天(文本)/ +2天(图像) |
+| **合计** | **~510** | **6** | — | **4-7 天** |
+
+---
+
+## 变更风险矩阵
+
+| Risk | 影响 | 缓解措施 |
+|------|------|---------|
+| Python 正则与 PDF 实际格式强耦合,不同 PDF 版本格式不同 | 提取失败/漏数据 | 测试覆盖多种 PDF 样本;Java 中用多模式回退(Python 已有多模式模式,直接移植) |
+| PDFBox 文本提取顺序和 PyMuPDF 不同 | 正则不匹配 | `parseText()` 中增加行合并预处理;对比 5+ 份 PDF 输出 |
+| B5 图片分析在 PDFBox 中比 PyMuPDF 更复杂 | 开发成本翻倍 | Wave 3 先做文本部分,图片分析延后独立 |
+| `DanAssessmentController` 现有接口调用方依赖 `mind`/`wisdom` | 前端不兼容 | 向后兼容:老 dimension 值保持可用,新值只影响解析路径 |

Some files were not shown because too many files changed in this diff