@startuml
title Flower ERP 模块功能对象图

skinparam shadowing false
skinparam defaultFontName Noto Sans CJK SC
skinparam backgroundColor #FFFFFF
skinparam ArrowColor #6B7280
skinparam ArrowThickness 1
skinparam object {
  FontName Noto Sans CJK SC
  BackgroundColor #FFFFFF
  BorderColor #4B5563
}
skinparam package {
  FontName Noto Sans CJK SC
  BorderColor #64748B
  BackgroundColor #F8FAFC
}
skinparam note {
  FontName Noto Sans CJK SC
  BackgroundColor #FFF7E6
  BorderColor #B7791F
}

left to right direction

package "访问入口层" as EntryLayer #F5F7FA {
  object "API / Admin\n访问入口" as ApiEntry {
    api/backend: 基础资料后台接口
    api/v1: 核心业务接口
    api/v2: 新版业务接口
    admin: 管理后台
    auth: 登录与员工身份校验
  }

  object "SSE\n实时通道" as SSE {
    事件推送
    连接状态
    测试推送
  }
}

package "基础资料层" as MasterLayer #F6F8FB {
  object "basic_info\n基础资料" as BasicInfo {
    商户 / 多租户
    客户 / 供应商
    产品 / 品类
    仓库 / 仓库模式
    员工 / 员工类型 / 用户档案
    前端页面权限
    车辆 / 车次 / 银行账户
    快捷输入 / 商户设置
  }

  object "api_man\n后台资料接口" as ApiMan {
    产品维护
    仓库维护
    客户维护
    供应商维护
    员工维护
    车辆与账户维护
  }
}

package "经营单据层" as BusinessLayer #F2F8FF {
  object "business\n业务单据" as Business {
    采购单 / 采购退货单
    销售单 / 销售退货单
    预销售单 / 预采购单
    收款单 / 付款单
    客户应收 / 供应商应付
    余额变动流水
    客户对账单
    红冲 / 作废 / 审批
  }

  object "stock\n库存管理" as Stock {
    出入库记录
    出入库明细
    库存现存量
    库存快照
    库存冻结
    调拨单
    红冲 / 冲抵
    严谨 / 宽进宽出 / 严进严出
  }

  object "cost\n成本费用" as Cost {
    支出类目
    支出明细
    凭证图片
    按类目汇总
    成本采集端口
  }
}

package "生产履约层" as ProductionLayer #FFF8EF {
  object "printing\n开版与印花" as Printing {
    开版订单
    开版图 / 样品 / 客户反馈
    印花订单
    印花款式明细
    工序批量推进
    工艺参数补充
    外部订单快照同步
    生产完成通知
  }

  object "stateflow\n流程引擎" as Stateflow {
    状态参数
    状态节点
    流程模板
    流程节点
    业务对象
    流转记录
    节点参数记录
  }

  object "mes\nMES 生产指派" as MES {
    设备分类
    设备管理
    峰值产能
    生产指派
    指派状态流转
    指派对象关联
  }
}

package "物流交付层" as DeliveryLayer #F7FBF4 {
  object "shipment\n发货交付" as Shipment {
    销售品
    销售品变更记录
    销售品重建记录
    出货单
    送货单
    送达照片
    外部成品表
    出货状态流转
  }
}

package "协同运营层" as OperationLayer #F8F5FF {
  object "mission\n任务协同" as Mission {
    任务分类
    任务
    任务参与者
    任务回复
    任务完成 / 重开 / 取消
    回复驳回
    关联任意业务对象
  }

  object "notifier\n通知中心" as Notifier {
    通知器
    通知路由
    事件匹配
    模板渲染
    企业微信 webhook
    message_api 渠道
    未回复任务提醒
  }

  object "settlement\n日结统计" as Settlement {
    日结配置
    统计模块选择
    通知渠道配置
    商户日结任务
    开版 / 印花日结口径
  }
}

package "集成与支撑层" as SupportLayer #F5F7FA {
  object "api_v1.tasks\n异步与同步任务" as Tasks {
    数据库备份
    明道云产品同步
    明道云客户同步
    明道云开版暂存同步
    外部印花订单同步
    外部图片回填
    腾讯云 TIIA 上传
    API 审计日志写入
  }

  object "business.tasks\n经营异步任务" as BusinessTasks {
    采购审批后入库
    销售审批后出库
    退货审批后出入库
    好布业财务定时同步
  }

  object "外部服务" as ExternalSystems {
    明道云
    好布业财务系统
    腾讯云 TIIA
    七牛云存储
    企业微信 / message_api
  }
}

ApiEntry ..> BasicInfo
ApiEntry ..> Business
ApiEntry ..> Printing
ApiEntry ..> Shipment
ApiEntry ..> Mission
ApiEntry ..> MES
ApiEntry ..> Cost

ApiMan ..> BasicInfo
Business ..> Stock
Business ..> BusinessTasks
Printing ..> Stateflow
Printing ..> Shipment
MES ..> Printing
Shipment ..> Notifier
Mission ..> Notifier
Settlement ..> Notifier
Tasks ..> ExternalSystems
BusinessTasks ..> ExternalSystems
Tasks ..> BasicInfo
Tasks ..> Printing

note bottom
  读图方式：每个对象代表一个业务模块，内部列出主要功能。
  虚线只保留关键依赖，避免把图变成技术调用链。
end note

@enduml
