商家组合维度分析需求设计.md 26 KB

商家组合维度分析报告 - 需求分析与设计文档

版本: 2.0.0
日期: 2026-02-12
项目: fw-pms-ai(AI配件补货建议系统)


1. 业务背景与目标

1.1 业务痛点

汽车配件管理面临以下核心挑战:

痛点 描述 影响
库存失衡 部分配件长期缺货,部分配件严重呆滞 缺货导致客户流失,呆滞占用资金
人工决策低效 传统补货依赖采购员经验判断 效率低、易出错、难以规模化
多门店协调困难 同一商家组合下的多门店库存无法统一调配 资源利用率低,部分门店过剩而另一部分缺货
数据利用不足 丰富的销售数据未能有效转化为决策依据 补货缺乏数据支撑,决策质量参差不齐

1.2 项目目标

mindmap
  root((商家组合维度分析))
    智能补货建议
      LLM驱动分析
      配件级决策
      门店级分配
    风险识别与预警
      呆滞件识别
      低频件过滤
      缺货预警
    数据驱动分析报告
      库存概览
      销量分析
      库存健康度
      补货建议汇总
    可视化展示
      分析报告
      配件明细
      执行日志

核心价值主张

  1. 智能化:通过 LLM 自动分析库销比数据,生成专业补货建议
  2. 精细化:从商家组合维度统一分析,再下钻到配件级、门店级
  3. 专业化:输出的分析理由贴合采购人员专业度,包含具体数据指标

2. 功能模块设计

2.1 功能架构

flowchart TB
    subgraph 用户层["🖥️ 用户层"]
        UI[Web管理界面]
    end

    subgraph 应用层["⚙️ 应用层"]
        API[FastAPI 接口层]

        subgraph Agent["🤖 LangGraph Agent"]
            N1[获取配件库销比<br/>fetch_part_ratio]
            N2[LLM分析生成建议<br/>sql_agent]
            N3[转换补货明细<br/>allocate_budget]
            N4[生成分析报告<br/>generate_analysis_report]
        end

        subgraph ReportSubgraph["📊 分析报告并发子图"]
            R1[库存概览 LLM]
            R2[销量分析 LLM]
            R3[健康度 LLM]
            R4[补货建议 LLM]
        end
    end

    subgraph 基础设施["🔧 基础设施"]
        LLM[LLM服务<br/>智谱GLM/豆包/OpenAI/Anthropic]
        DB[(MySQL数据库)]
    end

    UI --> API
    API --> Agent
    N1 --> N2 --> N3 --> N4
    N4 --> ReportSubgraph
    N1 -.-> DB
    N2 -.-> LLM
    N3 -.-> DB
    R1 & R2 & R3 & R4 -.-> LLM

2.2 功能模块清单

模块 功能 输入 输出
数据获取 获取商家组合内所有配件的库销比数据 dealer_grouping_id part_ratios[]
LLM分析 按配件分组分析,生成补货建议和决策理由 part_ratios, base_ratio llm_suggestions[]
建议转换 将LLM建议转换为结构化的补货明细 llm_suggestions[] details[], part_summaries[]
分析报告 四大板块统计计算 + 并发LLM分析 part_ratios, part_results analysis_report

3. 系统架构设计

3.1 整体架构

C4Component
    title 商家组合维度分析系统 - 组件架构

    Container_Boundary(web, "Web层") {
        Component(ui, "前端UI", "HTML/CSS/JS", "任务管理、结果展示")
    }

    Container_Boundary(api, "API层") {
        Component(routes, "路由模块", "FastAPI", "REST API接口")
        Component(scheduler, "定时调度", "APScheduler", "任务调度")
    }

    Container_Boundary(agent, "Agent层") {
        Component(workflow, "工作流引擎", "LangGraph", "状态机编排")
        Component(nodes, "节点实现", "Python", "业务逻辑")
        Component(report_subgraph, "报告子图", "LangGraph 并发子图", "4路并发LLM分析")
        Component(prompts, "提示词", "Markdown", "LLM指令")
    }

    Container_Boundary(service, "服务层") {
        Component(data, "数据服务", "Python", "数据查询")
        Component(writer, "写入服务", "Python", "结果持久化")
    }

    Container_Boundary(infra, "基础设施") {
        ComponentDb(mysql, "MySQL", "数据库", "业务数据存储")
        Component(llm, "LLM", "GLM/Doubao/OpenAI/Anthropic", "大语言模型")
    }

    Rel(ui, routes, "HTTP请求")
    Rel(routes, workflow, "触发任务")
    Rel(workflow, nodes, "执行")
    Rel(nodes, report_subgraph, "fan-out/fan-in")
    Rel(nodes, prompts, "加载")
    Rel(nodes, llm, "调用")
    Rel(nodes, data, "查询")
    Rel(nodes, writer, "写入")
    Rel(data, mysql, "SQL")
    Rel(writer, mysql, "SQL")

3.2 工作流状态机

stateDiagram-v2
    [*] --> FetchPartRatio: 启动任务

    FetchPartRatio --> SQLAgent: 获取库销比数据
    FetchPartRatio --> [*]: 无数据

    SQLAgent --> SQLAgent: 重试(错误 & 次数<3)
    SQLAgent --> AllocateBudget: 分析完成
    SQLAgent --> [*]: 重试失败

    AllocateBudget --> GenerateReport: 转换完成

    GenerateReport --> [*]: 生成报告

    state GenerateReport {
        [*] --> 统计计算
        统计计算 --> 并发LLM子图

        state 并发LLM子图 {
            [*] --> 库存概览LLM
            [*] --> 销量分析LLM
            [*] --> 健康度LLM
            [*] --> 补货建议LLM
            库存概览LLM --> [*]
            销量分析LLM --> [*]
            健康度LLM --> [*]
            补货建议LLM --> [*]
        }

        并发LLM子图 --> 汇总写入
        汇总写入 --> [*]
    }

4. 核心算法说明

4.1 三层决策逻辑

flowchart LR
    subgraph L1["第一层: 配件级判断"]
        A1[汇总商家组合内<br/>所有门店数据]
        A2[计算整体库销比]
        A3{是否需要补货?}
        A4[生成配件级理由]
    end

    subgraph L2["第二层: 门店级分配"]
        B1[按库销比从低到高排序]
        B2[计算各门店缺口]
        B3[分配补货数量]
    end

    subgraph L3["第三层: 决策理由生成"]
        C1[状态判定标签]
        C2[关键指标数据]
        C3[缺口分析]
        C4[天数说明]
    end

    A1 --> A2 --> A3
    A3 -->|是| L2
    A3 -->|否| A4
    B1 --> B2 --> B3
    B3 --> L3
    C1 --> C2 --> C3 --> C4

4.2 补货数量计算公式

suggest_cnt = ceil(目标库销比 × 月均销量 - 当前库存)

其中:

  • 有效库存 = in_stock_unlocked_cnt + on_the_way_cnt + has_plan_cnt
  • 月均销量 = (out_stock_cnt + storage_locked_cnt + out_stock_ongoing_cnt + buy_cnt) / 3
  • 资金占用 = (in_stock_unlocked_cnt + on_the_way_cnt) × cost_price

4.3 配件分类与处理规则

分类 判定条件 处理策略
缺货件 有效库存 = 0 且 月均销量 ≥ 1 优先补货
呆滞件 有效库存 > 0 且 90天出库数 = 0 不补货,建议清理
低频件 月均销量 < 1 或 出库次数 < 3 或 出库间隔 ≥ 30天 不补货
正常件 不属于以上三类 按缺口补货

分类优先级:缺货件 > 呆滞件 > 低频件 > 正常件(按顺序判断,命中即止)

4.4 优先级判定标准

flowchart TD
    A{库存状态} -->|库存=0 且 销量活跃| H[高优先级<br/>急需补货]
    A -->|库销比<0.5| M[中优先级<br/>建议补货]
    A -->|0.5≤库销比<目标值| L[低优先级<br/>可选补货]
    A -->|库销比≥目标值| N[无需补货<br/>库存充足]

    style H fill:#ff6b6b
    style M fill:#feca57
    style L fill:#48dbfb
    style N fill:#2ecc71

5. 数据模型设计

5.1 ER图

erDiagram
    AI_REPLENISHMENT_TASK ||--o{ AI_REPLENISHMENT_DETAIL : contains
    AI_REPLENISHMENT_TASK ||--o{ AI_REPLENISHMENT_PART_SUMMARY : contains
    AI_REPLENISHMENT_TASK ||--o{ AI_TASK_EXECUTION_LOG : logs
    AI_REPLENISHMENT_TASK ||--o| AI_ANALYSIS_REPORT : generates
    PART_RATIO }o--|| AI_REPLENISHMENT_DETAIL : references

    AI_REPLENISHMENT_TASK {
        bigint id PK
        varchar task_no UK "AI-开头"
        bigint group_id "集团ID"
        bigint dealer_grouping_id
        varchar dealer_grouping_name
        bigint brand_grouping_id "品牌组合ID"
        decimal plan_amount "计划采购金额"
        decimal actual_amount "实际分配金额"
        int part_count "配件数量"
        decimal base_ratio "基准库销比"
        tinyint status "0运行/1成功/2失败"
        varchar llm_provider
        varchar llm_model
        int llm_total_tokens
        varchar statistics_date
        datetime start_time
        datetime end_time
    }

    AI_REPLENISHMENT_DETAIL {
        bigint id PK
        varchar task_no FK
        bigint group_id
        bigint dealer_grouping_id
        bigint brand_grouping_id
        bigint shop_id "库房ID"
        varchar shop_name
        varchar part_code "配件编码"
        varchar part_name
        varchar unit
        decimal cost_price
        decimal current_ratio "当前库销比"
        decimal base_ratio "基准库销比"
        decimal post_plan_ratio "计划后库销比"
        decimal valid_storage_cnt "有效库存"
        decimal avg_sales_cnt "月均销量"
        int suggest_cnt "建议数量"
        decimal suggest_amount "建议金额"
        text suggestion_reason "决策理由"
        int priority "1高/2中/3低"
        float llm_confidence "LLM置信度"
    }

    AI_REPLENISHMENT_PART_SUMMARY {
        bigint id PK
        varchar task_no FK
        bigint group_id
        bigint dealer_grouping_id
        varchar part_code "配件编码"
        varchar part_name
        varchar unit
        decimal cost_price
        decimal total_storage_cnt "总库存"
        decimal total_avg_sales_cnt "总月均销量"
        decimal group_current_ratio "商家组合库销比"
        int total_suggest_cnt "总建议数量"
        decimal total_suggest_amount "总建议金额"
        int shop_count "涉及门店数"
        int need_replenishment_shop_count "需补货门店数"
        text part_decision_reason "配件级理由"
        int priority "1高/2中/3低"
        float llm_confidence
    }

    AI_TASK_EXECUTION_LOG {
        bigint id PK
        varchar task_no FK
        bigint group_id
        bigint brand_grouping_id
        varchar brand_grouping_name
        bigint dealer_grouping_id
        varchar dealer_grouping_name
        varchar step_name "步骤名称"
        int step_order "步骤顺序"
        tinyint status "0进行/1成功/2失败/3跳过"
        text input_data "输入JSON"
        text output_data "输出JSON"
        text error_message
        int retry_count
        text sql_query
        text llm_prompt
        text llm_response
        int llm_tokens "Token消耗"
        int execution_time_ms "耗时"
    }

    AI_ANALYSIS_REPORT {
        bigint id PK
        varchar task_no FK
        bigint group_id
        bigint dealer_grouping_id
        varchar dealer_grouping_name
        bigint brand_grouping_id
        varchar report_type "默认replenishment"
        json inventory_overview "库存概览"
        json sales_analysis "销量分析"
        json inventory_health "健康度"
        json replenishment_summary "补货建议"
        varchar llm_provider
        varchar llm_model
        int llm_tokens
        int execution_time_ms
    }

    PART_RATIO {
        bigint id PK
        bigint shop_id
        varchar part_code
        decimal in_stock_unlocked_cnt "在库未锁定"
        decimal on_the_way_cnt "在途"
        decimal has_plan_cnt "已有计划"
        decimal out_stock_cnt "出库数"
        decimal storage_locked_cnt "库存锁定"
        decimal out_stock_ongoing_cnt "出库在途"
        decimal buy_cnt "采购数"
        decimal cost_price "成本价"
        int out_times "出库次数"
        int out_duration "平均出库间隔"
    }

5.2 核心表结构

ai_replenishment_task(任务主表)

字段 类型 说明
task_no VARCHAR(32) 任务编号,AI-开头,唯一
group_id BIGINT 集团ID
dealer_grouping_id BIGINT 商家组合ID
dealer_grouping_name VARCHAR(128) 商家组合名称
brand_grouping_id BIGINT 品牌组合ID
plan_amount DECIMAL(14,2) 计划采购金额(预算)
actual_amount DECIMAL(14,2) 实际分配金额
part_count INT 配件数量
base_ratio DECIMAL(10,4) 基准库销比
status TINYINT 状态: 0运行中/1成功/2失败
llm_provider VARCHAR(32) LLM提供商
llm_model VARCHAR(64) LLM模型名称
statistics_date VARCHAR(16) 统计日期
start_time / end_time DATETIME 任务执行起止时间

ai_replenishment_part_summary(配件汇总表)

字段 类型 说明
task_no VARCHAR(32) 任务编号
group_id BIGINT 集团ID
dealer_grouping_id BIGINT 商家组合ID
part_code VARCHAR(64) 配件编码
part_name VARCHAR(256) 配件名称
cost_price DECIMAL(14,2) 成本价
total_storage_cnt DECIMAL(14,2) 商家组合内总库存
total_avg_sales_cnt DECIMAL(14,2) 总月均销量
group_current_ratio DECIMAL(10,4) 商家组合级库销比
total_suggest_cnt INT 总建议数量
total_suggest_amount DECIMAL(14,2) 总建议金额
shop_count INT 涉及门店数
need_replenishment_shop_count INT 需补货门店数
part_decision_reason TEXT 配件级补货理由
priority INT 优先级: 1高/2中/3低

ai_analysis_report(分析报告表)

字段 类型 说明
task_no VARCHAR(32) 任务编号
group_id BIGINT 集团ID
dealer_grouping_id BIGINT 商家组合ID
report_type VARCHAR(32) 报告类型(默认 replenishment)
inventory_overview JSON 库存总体概览(stats + llm_analysis)
sales_analysis JSON 销量分析(stats + llm_analysis)
inventory_health JSON 库存健康度(stats + chart_data + llm_analysis)
replenishment_summary JSON 补货建议(stats + llm_analysis)
llm_provider VARCHAR(32) LLM提供商
llm_model VARCHAR(64) LLM模型名称
llm_tokens INT LLM Token总消耗
execution_time_ms INT 执行耗时(毫秒)

6. API 接口设计

6.1 接口总览

flowchart LR
    subgraph Tasks["任务管理"]
        T1["GET /api/tasks"]
        T2["GET /api/tasks/:task_no"]
    end

    subgraph Details["明细查询"]
        D1["GET /api/tasks/:task_no/details"]
        D2["GET /api/tasks/:task_no/part-summaries"]
        D3["GET /api/tasks/:task_no/parts/:part_code/shops"]
    end

    subgraph Reports["报告模块"]
        R1["GET /api/tasks/:task_no/analysis-report"]
        R2["GET /api/tasks/:task_no/logs"]
    end

    subgraph Health["健康检查"]
        H1["GET /health"]
    end

6.2 核心接口定义

1. 获取任务列表

GET /api/tasks?page=1&page_size=20&status=1&dealer_grouping_id=100&statistics_date=20260212

响应示例

{
  "items": [
    {
      "id": 1,
      "task_no": "AI-ABC12345",
      "group_id": 2,
      "dealer_grouping_id": 100,
      "dealer_grouping_name": "华东区商家组合",
      "brand_grouping_id": 50,
      "plan_amount": 100000.00,
      "actual_amount": 89520.50,
      "part_count": 156,
      "base_ratio": 1.5000,
      "status": 1,
      "status_text": "成功",
      "llm_provider": "openai_compat",
      "llm_model": "glm-4-7-251222",
      "llm_total_tokens": 8500,
      "statistics_date": "20260212",
      "start_time": "2026-02-12 02:00:00",
      "end_time": "2026-02-12 02:05:30",
      "duration_seconds": 330,
      "create_time": "2026-02-12 02:00:00"
    }
  ],
  "total": 100,
  "page": 1,
  "page_size": 20
}

2. 获取配件汇总(商家组合维度)

GET /api/tasks/{task_no}/part-summaries?sort_by=total_suggest_amount&sort_order=desc&priority=1

响应示例

{
  "items": [
    {
      "id": 1,
      "task_no": "AI-ABC12345",
      "part_code": "C211F280503",
      "part_name": "机油滤芯",
      "unit": "个",
      "cost_price": 140.00,
      "total_storage_cnt": 25,
      "total_avg_sales_cnt": 18.5,
      "group_current_ratio": 1.35,
      "group_post_plan_ratio": 2.0,
      "total_suggest_cnt": 12,
      "total_suggest_amount": 1680.00,
      "shop_count": 5,
      "need_replenishment_shop_count": 3,
      "part_decision_reason": "【配件决策】该配件在商家组合内总库存25件...",
      "priority": 1,
      "llm_confidence": 0.85
    }
  ],
  "total": 50,
  "page": 1,
  "page_size": 50
}

3. 获取门店级明细

GET /api/tasks/{task_no}/parts/{part_code}/shops

响应示例

{
  "total": 3,
  "items": [
    {
      "id": 101,
      "task_no": "AI-ABC12345",
      "shop_id": 1001,
      "shop_name": "杭州西湖店",
      "part_code": "C211F280503",
      "part_name": "机油滤芯",
      "cost_price": 140.00,
      "valid_storage_cnt": 5,
      "avg_sales_cnt": 6.2,
      "current_ratio": 0.81,
      "post_plan_ratio": 1.61,
      "suggest_cnt": 5,
      "suggest_amount": 700.00,
      "suggestion_reason": "「建议补货」当前库存5件,月均销量6.2件...",
      "priority": 1
    }
  ]
}

4. 获取配件建议明细

GET /api/tasks/{task_no}/details?page=1&page_size=50&sort_by=suggest_amount&sort_order=desc&part_code=C211

5. 获取分析报告

GET /api/tasks/{task_no}/analysis-report

响应示例

{
  "id": 1,
  "task_no": "AI-ABC12345",
  "group_id": 2,
  "dealer_grouping_id": 100,
  "report_type": "replenishment",
  "inventory_overview": {
    "stats": {
      "total_valid_storage_cnt": 2500,
      "total_valid_storage_amount": 350000.0,
      "total_capital_occupation": 280000.0,
      "overall_ratio": 1.35,
      "part_count": 156
    },
    "llm_analysis": { "..." : "LLM生成的分析结论" }
  },
  "sales_analysis": {
    "stats": { "total_avg_sales_cnt": 1850, "..." : "..." },
    "llm_analysis": { "..." : "..." }
  },
  "inventory_health": {
    "stats": { "shortage": { "count": 12, "amount": 5000 }, "..." : "..." },
    "chart_data": { "labels": ["缺货件","呆滞件","低频件","正常件"], "..." : "..." },
    "llm_analysis": { "..." : "..." }
  },
  "replenishment_summary": {
    "stats": { "urgent": { "count": 15, "amount": 25000 }, "..." : "..." },
    "llm_analysis": { "..." : "..." }
  },
  "llm_tokens": 3200,
  "execution_time_ms": 12000
}

6. 获取执行日志

GET /api/tasks/{task_no}/logs

7. 前端交互设计

7.1 页面结构

flowchart TB
    subgraph Dashboard["仪表盘"]
        S1[统计卡片]
        S2[最近任务列表]
    end

    subgraph TaskList["任务列表页"]
        L1[筛选条件]
        L2[任务表格]
        L3[分页控件]
    end

    subgraph TaskDetail["任务详情页"]
        D1[任务头部信息]
        D2[统计卡片]

        subgraph Tabs["标签页"]
            T1[配件明细]
            T2[分析报告]
            T3[执行日志]
            T4[任务信息]
        end
    end

    Dashboard --> TaskList --> TaskDetail

7.2 配件明细交互

sequenceDiagram
    participant U as 用户
    participant UI as 前端UI
    participant API as 后端API

    U->>UI: 点击任务详情
    UI->>API: GET /api/tasks/{task_no}/part-summaries
    API-->>UI: 返回配件汇总列表
    UI->>UI: 渲染配件表格(可排序/筛选/优先级)

    U->>UI: 点击展开某配件
    UI->>API: GET /api/tasks/{task_no}/parts/{part_code}/shops
    API-->>UI: 返回门店级明细
    UI->>UI: 展开子表格显示门店数据

    Note over UI: 门店数据包含:<br/>库存、销量、库销比<br/>建议数量、建议理由<br/>计划后库销比

7.3 关键UI组件

组件 功能 交互方式
配件汇总表格 展示商家组合维度的配件建议 支持排序、筛选、分页、优先级筛选
可展开行 展示配件下的门店明细 点击行展开/收起
配件决策卡片 显示LLM生成的配件级理由 展开配件时显示
库销比指示器 直观显示库销比健康度 颜色渐变(红/黄/绿)
分析报告面板 四大板块数据驱动展示 统计数据 + LLM 分析 + 图表

8. 分析报告设计

8.1 报告模块结构

分析报告由 统计计算 + 4路并发 LLM 分析 的 LangGraph 子图生成。每个板块包含 stats(统计数据)和 llm_analysis(LLM 分析结论)。

flowchart TB
    subgraph Report["分析报告四大板块"]
        M1["板块1: 库存总体概览<br/>inventory_overview"]
        M2["板块2: 销量分析<br/>sales_analysis"]
        M3["板块3: 库存构成健康度<br/>inventory_health"]
        M4["板块4: 补货建议生成情况<br/>replenishment_summary"]
    end

    M1 --> S1[有效库存/资金占用]
    M1 --> S2[在库/在途/已有计划]
    M1 --> S3[整体库销比]

    M2 --> R1[月均销量/销售金额]
    M2 --> R2[有销量/无销量配件数]
    M2 --> R3[出库/锁定/采购统计]

    M3 --> P1[缺货件统计]
    M3 --> P2[呆滞件统计]
    M3 --> P3[低频件统计]
    M3 --> P4[正常件统计]
    M3 --> P5[chart_data图表数据]

    M4 --> E1[急需补货统计]
    M4 --> E2[建议补货统计]
    M4 --> E3[可选补货统计]

8.2 各板块统计计算与LLM分析

板块 统计计算 LLM 分析 提示词文件
库存概览 有效库存、资金占用、配件总数、整体库销比 库存状况综合评价 report_inventory_overview.md
销量分析 月均销量、出库频次、有/无销量配件数 销售趋势洞察 report_sales_analysis.md
库存健康度 缺货/呆滞/低频/正常分类统计(数量/金额/占比) 健康度风险提示 report_inventory_health.md
补货建议汇总 按优先级(急需/建议/可选)分类统计 补货策略建议 report_replenishment_summary.md

四个 LLM 分析节点使用 LangGraph 子图 并发执行(fan-out / fan-in),单板块失败不影响其他板块。

8.3 并发子图实现

flowchart LR
    START --> A[库存概览LLM] --> END2[END]
    START --> B[销量分析LLM] --> END2
    START --> C[健康度LLM] --> END2
    START --> D[补货建议LLM] --> END2

子图采用 ReportLLMState TypedDict 定义状态,使用 Annotated reducer 合并并发结果:

  • 分析结果:_merge_dict(保留非 None)
  • Token 用量:_sum_int(累加)

9. 技术选型

组件 技术 选型理由
编程语言 Python 3.11+ 丰富的AI/ML生态
Agent框架 LangChain + LangGraph 成熟的LLM编排框架,支持并发子图
API框架 FastAPI 高性能、自动文档
数据库 MySQL 与主系统保持一致
LLM 智谱GLM / 豆包 / OpenAI兼容 / Anthropic兼容 多模型支持,优先级自动选择
前端 原生HTML+CSS+JS 轻量级,无构建依赖

LLM 客户端优先级

优先级 客户端 触发条件
1 OpenAICompatClient OPENAI_COMPAT_API_KEY 已配置
2 AnthropicCompatClient ANTHROPIC_API_KEY 已配置
3 GLMClient GLM_API_KEY 已配置
4 DoubaoClient DOUBAO_API_KEY 已配置

10. 部署与运维

10.1 部署架构

flowchart LR
    subgraph Client["客户端"]
        Browser[浏览器]
    end

    subgraph Server["服务器"]
        Nginx[Nginx<br/>静态资源/反向代理]
        API[FastAPI<br/>API服务]
        Scheduler[APScheduler<br/>定时任务]
    end

    subgraph External["外部服务"]
        LLM[LLM API]
        DB[(MySQL)]
    end

    Browser --> Nginx
    Nginx --> API
    API --> LLM
    API --> DB
    Scheduler --> API

10.2 关键监控指标

指标 阈值 告警方式
任务成功率 < 95% 邮件
LLM响应时间 > 30s 日志
Token消耗 > 10000/任务 日志
API响应时间 > 2s 监控

附录

A. 术语表

术语 定义
商家组合 多个经销商/门店的逻辑分组
库销比 库存数量 / 月均销量,衡量库存健康度
呆滞件 有库存但90天无出库数的配件
低频件 月均销量<1 或 出库次数<3 或 出库间隔≥30天的配件
有效库存 在库未锁定 + 在途 + 已有计划
资金占用 (在库未锁定 + 在途) × 成本价

B. 参考文档

C. 版本变更记录

版本 日期 变更说明
1.0.0 2026-02-09 初始版本
2.0.0 2026-02-12 根据实际实现更新:分析报告重构为四大数据驱动板块、ER图更新、API路径和字段对齐、新增LLM客户端等