1. 系统逐层分析

我们将采用自顶向下的方式,从系统的最顶层输入输出开始,逐步细化到各个模块、子模块,并使用 Mermaid 流程图和序列图来展示系统的运作流程和交互过程。

1.1 顶层输入输出

graph LR
    subgraph 透明慈善组织系统
        A[用户/捐赠者/慈善组织/监管机构] -- 输入: 捐款, 项目信息, 查询请求等 --> B(系统)
        B -- 输出: 捐款回执, 项目信息, 资金流向, 审计报告等 --> A
    end

顶层视角解释:

  • 输入: 系统的主要输入来自多个方面:
    • 用户: 注册、登录、个人信息修改等。
    • 捐赠者: 捐款、查询捐款记录、申请退款等。
    • 慈善组织: 发布项目、更新项目进展、披露信息、申请提款等。
    • 监管机构: 审核项目、查询信息、监管资金流向等。
  • 输出: 系统根据不同的输入,产生相应的输出:
    • 捐赠者: 捐款回执、捐款记录、资金流向图等。
    • 慈善组织: 项目审核结果、捐款统计、提款审批结果等。
    • 监管机构: 慈善组织信息、项目信息、捐款信息、资金流向报告、审计报告等。
    • 公众: 公开透明的慈善项目信息、捐款信息、资金使用情况等。

1.2 第一层分解:核心模块

graph LR
    subgraph 透明慈善组织系统
        A[用户] -- 用户管理请求 --> B(用户管理模块)
        A -- 项目管理请求 --> C(项目管理模块)
        A -- 捐款管理请求 --> D(捐款管理模块)
        A -- 信息披露请求 --> E(信息披露模块)
        A -- 资金流向追踪请求 --> F(资金流向追踪模块)
        A -- 系统管理请求 --> G(系统管理模块)
       
    end
         B -- 相关数据 --> H((数据库))
        C -- 相关数据 --> H
        D -- 相关数据/交易上链 --> I((区块链))
        E -- 相关数据 --> H
        F -- 相关数据/交易查询 --> I
        G -- 相关数据 --> H

模块分解说明:

  • 用户管理模块: 处理用户注册、登录、信息管理、权限管理等。
  • 项目管理模块: 处理慈善项目发布、审核、修改、删除、进展更新等。
  • 捐款管理模块: 处理在线捐款、捐款记录查询、退款处理等。
  • 信息披露模块: 负责项目信息、捐款信息、资金使用情况、审计报告等信息的公开展示。
  • 资金流向追踪模块: 基于区块链实现捐款资金流向的全程可追溯。
  • 系统管理模块: 提供用户管理、角色管理、权限管理、数据备份与恢复、日志管理等系统级功能。
  • 数据库: 存储用户数据,项目数据等
  • 区块链: 存储交易数据等

1.3 第二层分解:模块交互(以捐款流程为例)

sequenceDiagram
    participant User as 用户
    participant Frontend as 前端
    participant API as API层
    participant DonationModule as 捐款管理模块
    participant Blockchain as 区块链
    participant ProjectModule as 项目管理模块

    User->>Frontend: 选择项目并点击捐款
    Frontend->>API: 发送捐款请求
    API->>DonationModule: 处理捐款
    DonationModule->>ProjectModule: 验证项目有效性
    ProjectModule-->>DonationModule: 项目有效
    DonationModule->>Blockchain: 发起捐款交易
    Blockchain-->>DonationModule: 交易确认
    DonationModule->>API: 捐款成功
    API->>Frontend: 返回捐款结果
    Frontend->>User: 显示捐款成功,并提供捐款回执和交易ID

捐款流程说明:

  1. 用户在前端选择慈善项目并点击捐款按钮。
  2. 前端向 API 层发送捐款请求。
  3. API 层调用捐款管理模块处理捐款。
  4. 捐款管理模块首先调用项目管理模块验证项目的有效性。
  5. 项目管理模块返回项目有效的结果。
  6. 捐款管理模块向区块链发起捐款交易。
  7. 区块链确认交易并返回结果。
  8. 捐款管理模块向 API 层返回捐款成功的结果。
  9. API 层向前端返回捐款结果。
  10. 前端向用户显示捐款成功信息,并提供捐款回执和区块链交易 ID。

1.4 第三层分解:智能合约交互 (资金流向追踪为例)

sequenceDiagram
    participant User as 用户/监管机构
    participant Frontend as 前端
    participant API as API层
    participant FundsTrackingModule as 资金流向追踪模块
    participant Blockchain as 区块链
    participant SmartContract as 智能合约

    User->>Frontend: 输入捐款交易ID或项目ID
    Frontend->>API: 发送资金流向查询请求
    API->>FundsTrackingModule: 处理查询请求
    FundsTrackingModule->>Blockchain: 查询交易信息
    Blockchain->>SmartContract: 调用智能合约查询相关数据
    SmartContract-->>Blockchain: 返回查询结果
    Blockchain-->>FundsTrackingModule: 交易信息
    FundsTrackingModule->>API: 返回资金流向数据
    API->>Frontend: 返回资金流向图和交易详情
    Frontend->>User: 显示资金流向图和交易详情

资金流向追踪说明:

  1. 用户(捐赠者或监管机构)在前端输入捐款交易 ID 或项目 ID。
  2. 前端向 API 层发送资金流向查询请求。
  3. API 层调用资金流向追踪模块处理查询请求。
  4. 资金流向追踪模块向区块链发送查询交易信息的请求。
  5. 区块链调用智能合约查询相关数据。
  6. 智能合约返回查询结果给区块链。
  7. 区块链将交易信息返回给资金流向追踪模块。
  8. 资金流向追踪模块处理数据后,向 API 层返回资金流向数据。
  9. API 层向前端返回资金流向图和交易详情。
  10. 前端向用户显示资金流向图和交易详情。