[feat]发布中心要支持单个应用在指定服务器上部署多个版本。应用场景需求,希望应用App1能够在节点Node1上部署多个版本,如:App1A/App1B/App1C。
智能大石头 authored at 2024-09-22 23:02:22
31.65 KiB
Stardust
<style>
    table {
        border-collapse: collapse;
        border: 1px solid;
        border-color: rgb(211, 202, 221);
    }

    table thead,
    table tr {
        border-top-width: 1px;
        border-top-style: solid;
        border-top-color: rgb(211, 202, 221);
    }

    table {
        border-bottom-width: 1px;
        border-bottom-style: solid;
        border-bottom-color: rgb(211, 202, 221);
    }

    table td,
    table th {
        padding: 5px 10px;
        font-size: 14px;
        font-family: Verdana;
        color: rgb(95, 74, 121);
    }

    table tr:nth-child(even) {
        background: rgb(223, 216, 232)
    }

    table tr:nth-child(odd) {
        background: #FFF
    }
</style>
<h3>应用部署(AppDeploy)</h3>
<table>
    <thead>
        <tr>
            <th>名称</th>
            <th>显示名</th>
            <th>类型</th>
            <th>长度</th>
            <th>精度</th>
            <th>主键</th>
            <th>允许空</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Id</td>
            <td>编号</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td title="自增">AI</td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>ProjectId</td>
            <td>项目</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>资源归属的团队</td>
        </tr>

        <tr>
            <td>AppId</td>
            <td>应用</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>对应StarApp</td>
        </tr>

        <tr>
            <td>Category</td>
            <td>类别</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Name</td>
            <td>名称</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td title="唯一索引">UQ</td>
            <td></td>
            <td>应用名</td>
        </tr>

        <tr>
            <td>Enable</td>
            <td>启用</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Nodes</td>
            <td>节点</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>该应用部署集所拥有的节点数</td>
        </tr>

        <tr>
            <td>Version</td>
            <td>版本</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>应用正在使用的版本号</td>
        </tr>

        <tr>
            <td>MultiVersion</td>
            <td>多版本</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>支持多运行时版本,此时只认可部署版本中符合运行时要求的最新可用版本</td>
        </tr>

        <tr>
            <td>AutoPublish</td>
            <td>自动发布</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>应用版本后自动发布到启用节点,加快发布速度</td>
        </tr>

        <tr>
            <td>PackageName</td>
            <td>包名</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>用于判断上传包名是否正确,避免错误上传其它应用包,支持*模糊匹配</td>
        </tr>

        <tr>
            <td>Repository</td>
            <td>代码库</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>下载代码的位置</td>
        </tr>

        <tr>
            <td>Branch</td>
            <td>分支</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>默认master</td>
        </tr>

        <tr>
            <td>ProjectPath</td>
            <td>项目路径</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>需要编译的项目路径</td>
        </tr>

        <tr>
            <td>ProjectKind</td>
            <td>项目类型</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>默认dotnet</td>
        </tr>

        <tr>
            <td>PackageFilters</td>
            <td>打包过滤器</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>需要打包哪些文件,支持通配符,多项分号隔开</td>
        </tr>

        <tr>
            <td>FileName</td>
            <td>文件</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>应用启动文件,可直接使用zip包</td>
        </tr>

        <tr>
            <td>Arguments</td>
            <td>参数</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>启动应用的参数</td>
        </tr>

        <tr>
            <td>WorkingDirectory</td>
            <td>工作目录</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>应用根目录</td>
        </tr>

        <tr>
            <td>UserName</td>
            <td>用户名</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>以该用户执行应用</td>
        </tr>

        <tr>
            <td>Environments</td>
            <td>环境变量</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>启动应用前设置的环境变量</td>
        </tr>

        <tr>
            <td>MaxMemory</td>
            <td>最大内存</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>单位M,超过上限时自动重启应用,默认0不限制</td>
        </tr>

        <tr>
            <td>Mode</td>
            <td>工作模式</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip</td>
        </tr>

        <tr>
            <td>AutoStop</td>
            <td>自动停止</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>随着宿主的退出,同时停止该应用进程</td>
        </tr>

        <tr>
            <td>ReloadOnChange</td>
            <td>检测变动</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>当文件发生改变时,自动重启应用</td>
        </tr>

        <tr>
            <td>CreateUserId</td>
            <td>创建者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>CreateTime</td>
            <td>创建时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateIP</td>
            <td>创建地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateUserId</td>
            <td>更新者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateTime</td>
            <td>更新时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateIP</td>
            <td>更新地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Remark</td>
            <td>备注</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
<br></br>
<h3>应用节点(AppDeployNode)</h3>
<table>
    <thead>
        <tr>
            <th>名称</th>
            <th>显示名</th>
            <th>类型</th>
            <th>长度</th>
            <th>精度</th>
            <th>主键</th>
            <th>允许空</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Id</td>
            <td>编号</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td title="自增">AI</td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>DeployName</td>
            <td>发布名</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>默认为空,使用部署集上名字。可用于单节点多发布场景</td>
        </tr>

        <tr>
            <td>AppId</td>
            <td>应用部署集</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>对应AppDeploy</td>
        </tr>

        <tr>
            <td>NodeId</td>
            <td>节点</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>节点服务器</td>
        </tr>

        <tr>
            <td>IP</td>
            <td>IP地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>节点所在内网IP地址</td>
        </tr>

        <tr>
            <td>Enable</td>
            <td>启用</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>FileName</td>
            <td>文件</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>应用启动文件,可直接使用zip包,支持差异定制,为空时使用应用集配置</td>
        </tr>

        <tr>
            <td>Arguments</td>
            <td>参数</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>启动应用的参数,为空时使用应用集配置</td>
        </tr>

        <tr>
            <td>WorkingDirectory</td>
            <td>工作目录</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>应用根目录,为空时使用应用集配置</td>
        </tr>

        <tr>
            <td>Environments</td>
            <td>环境变量</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>启动应用前设置的环境变量</td>
        </tr>

        <tr>
            <td>Mode</td>
            <td>工作模式</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip。为空时使用应用集配置</td>
        </tr>

        <tr>
            <td>Delay</td>
            <td>延迟</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>批量发布时,需要延迟执行的时间,用于滚动发布,单位秒</td>
        </tr>

        <tr>
            <td>ProcessId</td>
            <td>进程</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UserName</td>
            <td>用户名</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>启动该进程的用户名</td>
        </tr>

        <tr>
            <td>ProcessName</td>
            <td>进程名称</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>StartTime</td>
            <td>进程时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Version</td>
            <td>版本</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>客户端</td>
        </tr>

        <tr>
            <td>Compile</td>
            <td>编译时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td>客户端</td>
        </tr>

        <tr>
            <td>Listens</td>
            <td>监听端口</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>网络端口监听信息</td>
        </tr>

        <tr>
            <td>LastActive</td>
            <td>最后活跃</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td>最后一次上报心跳的时间</td>
        </tr>

        <tr>
            <td>LastUpload</td>
            <td>最后上传</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td>最后一次上传客户端配置的时间</td>
        </tr>

        <tr>
            <td>TraceId</td>
            <td>追踪</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>最新一次查看采样,可用于关联多个片段,建立依赖关系,随线程上下文、Http、Rpc传递</td>
        </tr>

        <tr>
            <td>CreateUserId</td>
            <td>创建人</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>CreateTime</td>
            <td>创建时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateIP</td>
            <td>创建地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateUserId</td>
            <td>更新者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateTime</td>
            <td>更新时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateIP</td>
            <td>更新地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Remark</td>
            <td>备注</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
<br></br>
<h3>部署版本(AppDeployVersion)</h3>
<table>
    <thead>
        <tr>
            <th>名称</th>
            <th>显示名</th>
            <th>类型</th>
            <th>长度</th>
            <th>精度</th>
            <th>主键</th>
            <th>允许空</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Id</td>
            <td>编号</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td title="自增">AI</td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>AppId</td>
            <td>应用部署集</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>对应AppDeploy</td>
        </tr>

        <tr>
            <td>Version</td>
            <td>版本</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>如2.3.2022.0911,字符串比较大小</td>
        </tr>

        <tr>
            <td>Enable</td>
            <td>启用</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Url</td>
            <td>资源地址</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>一般打包为Zip包,StarAgent下载后解压缩覆盖</td>
        </tr>

        <tr>
            <td>Overwrite</td>
            <td>覆盖文件</td>
            <td>String</td>
            <td>100</td>
            <td></td>
            <td></td>
            <td></td>
            <td>需要拷贝覆盖已存在的文件或子目录,支持*模糊匹配,多文件分号隔开。如果目标文件不存在,配置文件等自动拷贝</td>
        </tr>

        <tr>
            <td>Mode</td>
            <td>发布模式</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>1部分包,仅覆盖;2标准包,清空可执行文件再覆盖;3完整包,清空所有文件</td>
        </tr>

        <tr>
            <td>Size</td>
            <td>文件大小</td>
            <td>Int64</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Hash</td>
            <td>文件哈希</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>MD5散列,避免下载的文件有缺失</td>
        </tr>

        <tr>
            <td>Runtime</td>
            <td>运行时</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>RID是运行时标识符,用于标识应用程序运行所在的目标平台。如win-x64/linux-arm</td>
        </tr>

        <tr>
            <td>Progress</td>
            <td>进度</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>发布进度</td>
        </tr>

        <tr>
            <td>CommitId</td>
            <td>提交标识</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CommitLog</td>
            <td>提交记录</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CommitTime</td>
            <td>提交时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>TraceId</td>
            <td>追踪</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>最新一次查看采样,可用于关联多个片段,建立依赖关系,随线程上下文、Http、Rpc传递</td>
        </tr>

        <tr>
            <td>CreateUserId</td>
            <td>创建者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>CreateTime</td>
            <td>创建时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateIP</td>
            <td>创建地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateUserId</td>
            <td>更新者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateTime</td>
            <td>更新时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateIP</td>
            <td>更新地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Remark</td>
            <td>备注</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
<br></br>
<h3>部署历史(AppDeployHistory)</h3>
<table>
    <thead>
        <tr>
            <th>名称</th>
            <th>显示名</th>
            <th>类型</th>
            <th>长度</th>
            <th>精度</th>
            <th>主键</th>
            <th>允许空</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Id</td>
            <td>编号</td>
            <td>Int64</td>
            <td></td>
            <td></td>
            <td title="主键">PK</td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>AppId</td>
            <td>应用部署集</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>对应AppDeploy</td>
        </tr>

        <tr>
            <td>NodeId</td>
            <td>节点</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>节点服务器</td>
        </tr>

        <tr>
            <td>Action</td>
            <td>操作</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Success</td>
            <td>成功</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Remark</td>
            <td>内容</td>
            <td>String</td>
            <td>2000</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>TraceId</td>
            <td>追踪</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>最新一次查看采样,可用于关联多个片段,建立依赖关系,随线程上下文、Http、Rpc传递</td>
        </tr>

        <tr>
            <td>CreateUserId</td>
            <td>创建者</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>CreateTime</td>
            <td>创建时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateIP</td>
            <td>创建地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
<br></br>
<h3>附件(Attachment)</h3>
<table>
    <thead>
        <tr>
            <th>名称</th>
            <th>显示名</th>
            <th>类型</th>
            <th>长度</th>
            <th>精度</th>
            <th>主键</th>
            <th>允许空</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Id</td>
            <td>编号</td>
            <td>Int64</td>
            <td></td>
            <td></td>
            <td title="主键">PK</td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>Category</td>
            <td>业务分类</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Key</td>
            <td>业务主键</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Title</td>
            <td>标题</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>业务内容作为附件标题,便于查看管理</td>
        </tr>

        <tr>
            <td>FileName</td>
            <td>文件名</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td>N</td>
            <td>原始文件名</td>
        </tr>

        <tr>
            <td>Extension</td>
            <td>扩展名</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Size</td>
            <td>文件大小</td>
            <td>Int64</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>ContentType</td>
            <td>内容类型</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>用于Http响应</td>
        </tr>

        <tr>
            <td>FilePath</td>
            <td>路径</td>
            <td>String</td>
            <td>200</td>
            <td></td>
            <td></td>
            <td></td>
            <td>本地相对路径或OSS路径,本地相对路径加上附件目录的配置,方便整体转移附件</td>
        </tr>

        <tr>
            <td>Hash</td>
            <td>哈希</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>MD5</td>
        </tr>

        <tr>
            <td>Enable</td>
            <td>启用</td>
            <td>Boolean</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UploadTime</td>
            <td>上传时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td>附件上传时间,可用于构造文件存储路径</td>
        </tr>

        <tr>
            <td>Url</td>
            <td>网址</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>链接到附件所在信息页的地址</td>
        </tr>

        <tr>
            <td>Source</td>
            <td>来源</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td>用于远程抓取的附件来源地址,本地文件不存在时自动依次抓取</td>
        </tr>

        <tr>
            <td>TraceId</td>
            <td>追踪</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td>链路追踪,用于APM性能追踪定位,还原该事件的调用链</td>
        </tr>

        <tr>
            <td>CreateUser</td>
            <td>创建者</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateUserID</td>
            <td>创建用户</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>CreateIP</td>
            <td>创建地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>CreateTime</td>
            <td>创建时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateUser</td>
            <td>更新者</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateUserID</td>
            <td>更新用户</td>
            <td>Int32</td>
            <td></td>
            <td></td>
            <td></td>
            <td>N</td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateIP</td>
            <td>更新地址</td>
            <td>String</td>
            <td>50</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>UpdateTime</td>
            <td>更新时间</td>
            <td>DateTime</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td>Remark</td>
            <td>备注</td>
            <td>String</td>
            <td>500</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
<br></br>