站长信息
jeffery.xu
jeffery.xu

软件工程师

欢迎访问我的个人笔记网站!我是一名热爱技术的开发者,专注于Web开发和技术分享。

811495111@qq.com
18521510875
筛选

个人笔记

经销商基准价功能修改
工作笔记

一:DMS根据BPCS推送的价格数据做经销商基准价的增补,
  1)根据BPCS推送的经销商+产品+价格数据,如果经销商在基准价功能存在,产品在基准价功能不存在的,需要把此价格数据新增到经销商基准价功能(时间都是当前年份的1月1号到12月31号)。
  2)第一步新增好数据后,把新增数据的经销商+产品+价格数据拿出来,在循环增加数据,从2024年开始截止到当前时间的上一年,每年一条记录。
二:货号升级功能调整
  1)系统需要选择新货号、老货号、年份(年份从2024年开始,到当前年),同时要根据老货号,老货号有的年份才有年份,数据选择完成点击数据同步按钮,系统判断,如果新货号+年份在经销商基准价功能无数据,系统自动按照老货号+年份查询出所有记录复制一份给到新货号。
  2)如果选择的新货号+年份在经销商基准价中已存在数据,系统则按照老货号+经销商+年份更新新货号的价格。
三:功能List列表显示、查询、导出功能增加【创建时间】、【年份】字段、年份取值如下:a. 手工上传:取上传字段。b. BPCS 推送:取生效日的“年份”
四:手工上传数据逻辑调整。保证相同经销商,相同货号,相同年份只有一条记录。如果本次上传的数据经销商+产品+年份在当前功能已存在相同数据,系统直接做价格更新。

DDI功能修改等
工作笔记

1.APOC DMS系统的那个DDI匹配后数据报告功能,需要调整一下。在关联产品匹配表的时候,需要用产品代码、名称、规格、单位、经销商相等做条件

首页需要添加版本号
工作笔记

ADD 改成2.1

APOC 新加 1.0

根据日期撤销TFS签出
工作笔记

param(
    [datetime] $TargetDate = ([datetime]"2025-09-15"),
    [switch] $DoIt = $false,
    [string] $TfExePath = "tf",
    [string] $Root = ".",
    [string[]] $ExcludeExtensions = @(".csproj")  # 可传入多个,例如: -ExcludeExtensions ".csproj",".vbproj"
)

$target = $TargetDate.Date
Write-Host "Root: $Root"
Write-Host "TargetDate: $target"
Write-Host "Dry-run: $(-not $DoIt)"
Write-Host "TfExePath: $TfExePath"
Write-Host "Exclude extensions: $($ExcludeExtensions -join ', ')"
Write-Host ""

try {
    $items = Get-ChildItem -Path $Root -Recurse -File -ErrorAction Stop
} catch {
    Write-Error "Scan failed: $_"
    exit 1
}

# 过滤:按 LastWriteTime 且排除指定扩展(不区分大小写)
$excludeSet = $ExcludeExtensions | ForEach-Object { $_.ToLowerInvariant() }
$matched = $items |
    Where-Object {
        ($_.LastWriteTime.Date -eq $target) -and
        (-not ($excludeSet -contains ($_.Extension.ToLowerInvariant())))
    } |
    Select-Object -ExpandProperty FullName

if (-not $matched -or $matched.Count -eq 0) {
    Write-Host "No files found with LastWriteTime = $target (after excluding extensions)." -ForegroundColor Yellow
    exit 0
}

Write-Host "Found $($matched.Count) files. Sample:" -ForegroundColor Green
$matched | Select-Object -First 20 | ForEach-Object { Write-Host $_ }

if (-not $DoIt) {
    Write-Host ""
    Write-Host "Dry-run mode. To execute undo, re-run with -DoIt." -ForegroundColor Yellow
    Write-Host "Example (dry-run):"
    Write-Host "  powershell -ExecutionPolicy Bypass -File .\scripts\undo-by-lastwritetime.ps1 -TargetDate 2025-09-15 -Root .."
    Write-Host "Example (execute):"
    Write-Host "  powershell -ExecutionPolicy Bypass -File .\scripts\undo-by-lastwritetime.ps1 -TargetDate 2025-09-15 -Root .. -DoIt"
    Write-Host "如果要排除更多扩展: -ExcludeExtensions \".csproj\",\".vbproj\""
    exit 0
}

# 验证 tf.exe 可用
try {
    Get-Command $TfExePath -ErrorAction Stop | Out-Null
} catch {
    Write-Error "tf.exe not found. Run in Developer Command Prompt for VS or provide -TfExePath."
    exit 1
}

$counts = @{Undone = 0; NoPending = 0; Failed = 0}

foreach ($f in $matched) {
    Write-Host "Undoing: $f" -NoNewline
    try {
        $out = & $TfExePath undo "$f" /noprompt 2>&1
        if ($LASTEXITCODE -eq 0 -and ($out -match "Undo" -or $out -match "undo successful" -or $out -match "Undoed")) {
            Write-Host " -> Undone" -ForegroundColor Green
            $counts.Undone++
        } elseif ($out -match "No pending changes" -or $out -match "no pending changes" -or $out -match "No changes found") {
            Write-Host " -> No pending changes" -ForegroundColor Yellow
            $counts.NoPending++
        } else {
            Write-Host " -> Result: $out" -ForegroundColor Cyan
            $counts.Failed++
        }
    } catch {
        Write-Host " -> Failed: $_" -ForegroundColor Red
        $counts.Failed++
    }
}

Write-Host ""
Write-Host ("Summary: Undone: {0}`nNoPending: {1}`nFailed: {2}" -f $counts.Undone, $counts.NoPending, $counts.Failed)

SOI客户经销商关联提示调整
工作笔记

需调整经销商报错提示

平台商核算单价导入导入sql
工作笔记

USE [SOI_ADD]
GO
/****** Object:  StoredProcedure [dbo].[SP_BI_WSDealerPriceImport]    Script Date: 2025/12/18 11:14:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[SP_BI_WSDealerPriceImport]
(
    @userid int,
    @TempTable NVARCHAR(100)
)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @rows INT, @temp NVARCHAR(4000), @rows1 INT;
    DECLARE @t TABLE (x INT PRIMARY KEY, y NVARCHAR(1000) COLLATE Chinese_PRC_CI_AS);
    DECLARE @totalnum INT;
    DECLARE @count INT;

    CREATE TABLE #DataTemp
    (
        [PKID] int IDENTITY(1,1) NOT NULL,
        [省份] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [产品编码] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [产品名称] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [单价]  nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [生效日期]  nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [截止日期] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
        [FK_Province] int,
        [FK_Product] int
    );

    DECLARE @sql nvarchar(4000);
    SET @sql = 'insert #DataTemp select ltrim(rtrim([省份])),ltrim(rtrim([产品编码])),ltrim(rtrim([产品名称])),[单价],[生效日期],[截止日期],0,0 from ' + @TempTable;
    EXEC(@sql);

    SET @temp = '';

    -- 基本校验
    SELECT @rows = COUNT(*) FROM #DataTemp;
    IF (@rows = 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'临时表中没有数据,请确认Excel文档格式正确!');
        SELECT x,y FROM @t;
        RETURN;
    END

    SELECT @rows = COUNT(*) FROM #DataTemp WHERE [省份] IS NULL OR [省份] = '';
    IF (@rows > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'省份不能为空');
        SELECT x,y FROM @t;
        RETURN;
    END

    SELECT @rows = COUNT(*) FROM #DataTemp WHERE [产品编码] IS NULL OR [产品编码] = '';
    IF (@rows > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'产品编码不能为空');
        SELECT x,y FROM @t;
        RETURN;
    END

    SELECT @rows = COUNT(*) FROM #DataTemp WHERE [单价] IS NULL OR [单价] = '';
    IF (@rows > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'单价不能为空');
        SELECT x,y FROM @t;
        RETURN;
    END

    SELECT @rows = COUNT(*) FROM #DataTemp WHERE [生效日期] IS NULL OR [生效日期] = '';
    IF (@rows > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'生效日期不能为空');
        SELECT x,y FROM @t;
        RETURN;
    END

    SELECT @rows = COUNT(*) FROM #DataTemp WHERE [截止日期] IS NULL OR [截止日期] = '';
    IF (@rows > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'截止日期不能为空');
        SELECT x,y FROM @t;
        RETURN;
    END

    -- 产品映射
    UPDATE #DataTemp SET FK_Product = (
        SELECT TOP 1 PKID FROM UT_Product WHERE JDECode = #DataTemp.[产品编码] AND IsValid = 1 AND FK_Origin = 3
    );

    DECLARE @problemProductNum INT;
    SELECT @problemProductNum = COUNT(*) FROM #DataTemp WHERE FK_Product IS NULL OR FK_Product = 0;
    IF (@problemProductNum > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'产品在系统中不存在');
        SELECT x,y FROM @t;
        RETURN;
    END

    -- 单价 numeric 校验(保留原有 ISNUMERIC 校验)
    DECLARE @problemPriceNum INT;
    SELECT @problemPriceNum = COUNT(*) FROM #DataTemp WHERE ISNUMERIC([单价]) = 0;
    IF (@problemPriceNum > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'单价必须为数字');
        SELECT x,y FROM @t;
        RETURN;
    END

    -- 日期格式校验 (使用 IsDate)
    DECLARE @problemStartNum INT;
    SELECT @problemStartNum = COUNT(*) FROM #DataTemp WHERE IsDate([生效日期]) = 0;
    IF (@problemStartNum > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'生效日期不正确');
        SELECT x,y FROM @t;
        RETURN;
    END

    DECLARE @problemEndNum INT;
    SELECT @problemEndNum = COUNT(*) FROM #DataTemp WHERE IsDate([截止日期]) = 0;
    IF (@problemEndNum > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'截止日期不正确');
        SELECT x,y FROM @t;
        RETURN;
    END

    DECLARE @problemEffectNum INT;
    SELECT @problemEffectNum = COUNT(*) FROM #DataTemp WHERE CAST([截止日期] AS date) <= CAST([生效日期] AS date);
    IF (@problemEffectNum > 0)
    BEGIN
        INSERT INTO @t VALUES (1, N'生效日期必须小于截止日期');
        SELECT x,y FROM @t;
        RETURN;
    END

    -- 省份映射
    UPDATE #DataTemp SET FK_Province = (
        SELECT TOP(1) PKID FROM SOI_SmallRegion WHERE SmallRegionName = #DataTemp.[省份] AND IsValid = 1
    );

    -- 返回具体省份名
DECLARE @problemDealerNum INT;
SELECT @problemDealerNum = COUNT(*) FROM #DataTemp WHERE (FK_Province IS NULL OR FK_Province = 0);

IF (@problemDealerNum > 0)
BEGIN
    DECLARE @badProvinces NVARCHAR(MAX);

    SELECT @badProvinces = STUFF(
        (
            SELECT DISTINCT ',' + ISNULL([省份], N'(空)')
            FROM #DataTemp
            WHERE FK_Province IS NULL OR FK_Province = 0
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)')
    ,1,1,'');

    INSERT INTO @t VALUES (1, N'以下省份在系统中不存在:' + @badProvinces);
    SELECT x,y FROM @t;
    RETURN;
END

    -- 关键校验:若存在任意一条导入记录,其时间区间完全包含了系统中某条历史记录,则拒绝整个导入
    IF EXISTS (
        SELECT 1
        FROM #DataTemp dt
        JOIN BI_WSDealerPrice b ON b.IsValid = 1 AND b.[ProvinceName] = dt.省份 AND b.FK_Product = dt.FK_Product
        WHERE b.StartTime >= CAST(dt.[生效日期] AS date)
          AND b.EndTime <= CAST(dt.[截止日期] AS date)
          AND NOT (b.StartTime = CAST(dt.[生效日期] AS date) AND b.EndTime = CAST(dt.[截止日期] AS date))
    )
    BEGIN
        INSERT INTO @t VALUES (1, N'导入失败:存在历史记录完全包含在某条导入记录的时间区间内,系统不允许导入。请检查导入数据或历史数据。');
        SELECT x,y FROM @t;
        RETURN;
    END

    -- 开始事务并调整交叉的历史记录,然后 MERGE 导入
    BEGIN TRY
        BEGIN TRANSACTION;

        -- 左侧相交:历史 b.Start < S.Start and b.End between S.Start and S.End => b.End = S.Start -1
        UPDATE b
        SET b.EndTime = DATEADD(day, -1, CAST(dt.[生效日期] AS date))
        FROM BI_WSDealerPrice b
        JOIN #DataTemp dt ON b.[ProvinceName] = dt.省份 AND b.FK_Product = dt.FK_Product
        WHERE b.IsValid = 1
          AND b.StartTime < CAST(dt.[生效日期] AS date)
          AND b.EndTime >= CAST(dt.[生效日期] AS date)
          AND b.EndTime <= CAST(dt.[截止日期] AS date);

        -- 右侧相交:b.Start between S.Start and S.End and b.End > S.End => b.Start = S.End + 1
        UPDATE b
        SET b.StartTime = DATEADD(day, 1, CAST(dt.[截止日期] AS date))
        FROM BI_WSDealerPrice b
        JOIN #DataTemp dt ON b.[ProvinceName] = dt.省份 AND b.FK_Product = dt.FK_Product
        WHERE b.IsValid = 1
          AND b.StartTime >= CAST(dt.[生效日期] AS date)
          AND b.StartTime <= CAST(dt.[截止日期] AS date)
          AND b.EndTime > CAST(dt.[截止日期] AS date);

        -- 跨越导入区间(拆分右段)
        INSERT INTO BI_WSDealerPrice (
            [WS_DealerType],[WS_DealerCode],[WS_DealerName],[FK_BPCSDealer],
            [FK_SDDealer],[ProductCode],[ProductName],[FK_Product],
            [Price],[StartTime],[EndTime],[CreateTime],[FK_CreateUser],[ModifyTime],
            [FK_ModifyUser],[IsValid],[Memo],[ProvinceName]
        )
        SELECT
            b.WS_DealerType, b.WS_DealerCode, b.WS_DealerName, b.FK_BPCSDealer,
            b.FK_SDDealer, b.ProductCode, b.ProductName, b.FK_Product,
            b.Price, DATEADD(day, 1, CAST(dt.[截止日期] AS date)) AS StartTime, b.EndTime,
            GETDATE(), b.FK_CreateUser, GETDATE(), @userid, 1, b.Memo,b.[ProvinceName]
        FROM BI_WSDealerPrice b
        JOIN #DataTemp dt ON b.[ProvinceName] = dt.省份 AND b.FK_Product = dt.FK_Product
        WHERE b.IsValid = 1
          AND b.StartTime < CAST(dt.[生效日期] AS date)
          AND b.EndTime > CAST(dt.[截止日期] AS date);

        -- 左段更新 EndTime = S.Start -1
        UPDATE b
        SET b.EndTime = DATEADD(day, -1, CAST(dt.[生效日期] AS date))
        FROM BI_WSDealerPrice b
        JOIN #DataTemp dt ON b.[ProvinceName] = dt.省份 AND b.FK_Product = dt.FK_Product
        WHERE b.IsValid = 1
          AND b.StartTime < CAST(dt.[生效日期] AS date)
          AND b.EndTime > CAST(dt.[截止日期] AS date);

        -- MERGE 导入(明确列出 SOURCE 字段并使用 CAST 进行转换)
        MERGE INTO BI_WSDealerPrice AS TARGET
        USING (
            SELECT
                省份,
                FK_Product,
                [产品编码] AS ProductCode,
                [产品名称] AS ProductName,
                CAST([单价] AS decimal(18,4)) AS Price,
                CAST([生效日期] AS date) AS StartTime,
                CAST([截止日期] AS date) AS EndTime
            FROM #DataTemp
        ) AS SOURCE
        ON (TARGET.ProvinceName = SOURCE.省份
            AND TARGET.FK_Product = SOURCE.FK_Product
            AND TARGET.StartTime = SOURCE.StartTime
            AND TARGET.EndTime = SOURCE.EndTime)
        WHEN MATCHED THEN
            UPDATE SET
                TARGET.Price = SOURCE.Price,
                TARGET.CreateTime = GETDATE(),
                TARGET.FK_CreateUser = @userid,
                TARGET.ModifyTime = GETDATE(),
                TARGET.FK_ModifyUser = @userid,
                TARGET.IsValid = 1,
                TARGET.Memo = '导入'
        WHEN NOT MATCHED BY TARGET THEN
        INSERT (
            [WS_DealerType],[WS_DealerCode],[WS_DealerName],[FK_BPCSDealer],
            [FK_SDDealer],[ProductCode],[ProductName],[FK_Product],
            [Price],[StartTime],[EndTime],[CreateTime],[FK_CreateUser],[ModifyTime],
            [FK_ModifyUser],[IsValid],[Memo],[ProvinceName]
        )
        VALUES (
            NULL, NULL, NULL, NULL,
            NULL, SOURCE.ProductCode, SOURCE.ProductName, SOURCE.FK_Product,
            SOURCE.Price, SOURCE.StartTime, SOURCE.EndTime, GETDATE(), @userid, GETDATE(), @userid, 1, '导入', SOURCE.省份
        );

        COMMIT TRANSACTION;

        INSERT INTO @t VALUES (0, N'导入成功!');
        SELECT x,y FROM @t;
        RETURN;
    END TRY
    BEGIN CATCH
        DECLARE @ErrNum INT = ERROR_NUMBER();
        DECLARE @ErrSeverity INT = ERROR_SEVERITY();
        DECLARE @ErrState INT = ERROR_STATE();
        DECLARE @ErrProc NVARCHAR(128) = ISNULL(ERROR_PROCEDURE(), N'(NULL)');
        DECLARE @ErrLine INT = ERROR_LINE();
        DECLARE @ErrMsg NVARCHAR(4000) = ERROR_MESSAGE();
        DECLARE @FullMsg NVARCHAR(1000) = N'导入失败,发生异常: 错误号=' + CAST(@ErrNum AS NVARCHAR(20))
            + N', 严重性=' + CAST(@ErrSeverity AS NVARCHAR(10))
            + N', 状态=' + CAST(@ErrState AS NVARCHAR(10))
            + N', 存储过程=' + @ErrProc
            + N', 行=' + CAST(@ErrLine AS NVARCHAR(10))
            + N', 消息=' + LEFT(@ErrMsg, 900); -- 截断以适应 NVARCHAR(1000)

        IF XACT_STATE() <> 0
        BEGIN
            ROLLBACK TRANSACTION;
        END

        INSERT INTO @t VALUES (1, @FullMsg);
        SELECT x,y FROM @t;
        RETURN;
    END CATCH
END

python环境安装 jupyter notebook
人工智能学习

https://www.python.org/downloads/windows/ 下载python 安装

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

 

雅培CRDx财务部Q3CR
工作笔记

医院编号管理功能调整

  1. 新增医院总院字段,在新增及修改操作时,业务人员可借助放大镜工具从 DMS 系统医院主数据中选择相关数据,同时支持数据的查询与导出。
  1. 将医院级别字段修改为放大镜形式,并设定为必填项,其数据来源变更为医院等级主数据,且支持查询导出功能。
  1. 增设医院英文名字段,支持手工维护,同时具备查询导出功能。
  1. 修改数据同步功能。点击“数据同步”时,需将当前医院信息同步至SOI系统 “终端信息管理→医院信息维护→医院信息维护” 中。在同步过程中,要增加判断逻辑,仅当 DMS 系统中不存在医院编号时才执行同步操作,若已存在则给出相应提示。此外,同步还需将新增英文名、级别、总院等字段同步至“终端信息管理→医院信息维护→医院信息维护”。
  1. 在“终端信息管理→医院信息维护→医院信息维护”功能中,添加英文名、级别、总院以展示相关数据。
  1. 数据同步时,若在医院编号管理功能里数据未填写总院信息,则默认该医院的总院为其自身,保存时,其外键为SOI_CustomerInfo 表的主键。

经销商与医院关系管理功能调整

  1. 当系统手动停用关联关系时,将停用时间默认值从当前时间 +60 天调整为当前时间。
  1. 调整系统自动停用关联关系的逻辑,把停用时间默认值从当前时间 +60 天改为当前时间。同时,需对仪器签约导入、开票信息导入等功能及相关存储过程进行检查,去除自动创建经销商客户关系的额外代码逻辑,仅保留依据当前导入数据创建经销商与医院关系的相关代码。另外,对于停用关系的代码,将停用时间统一设定为当前时间,不再额外增加 60 天。

去除 DMS 系统自动创建经销商医院客户关系功能

  1. 经销商信息管理模块中的新增修改一、二级经销商关系功能。
  1. 经销商客户关系管理模块中的新增修改经销商医院关系功能。
  1. 机器信息管理模块中的上传仪器签约指标功能。
  1. 年中经销商签约导入功能。

退款审批逻辑调整

退款审批通过后,系统依据已开票退款生成退款预提信息,依据待开票情况生成负数开票明细信息。
新增逻辑:
生成的预提数据或开票数据需与当前退款申请单及退款单中的退款原因及退款备注建立 Mapping 关系,并进行系统存储,同时需新增相应的关系表。

报表功能调整

SOI 相关报表(退款明细报表、开票明细报表、预提明细报表、预提汇总报表)

  1. 在上述三个报表功能的列表页面,新增退款原因字段,支持查询及导出操作。
  1. 在导出数据时,新增退款备注字段的导出功能。
  1. 修复预提导入的数据在预提汇总功能中点击查看按钮时出现的报错问题,确保操作正常无报错。
  1. 创建数据导入功能,具体包括仪开票明细,预提明细增加 VAT 发票信息导入。根据BPCS订单号导入VAT发票号。

DMS 相关报表(开票明细报表、预提明细报表)

  1. 在两个报表功能的列表页面,新增退款原因字段,支持查询及导出。
  1. 在导出数据时,新增退款备注字段的导出功能。
  1. 修改开票明细报表,将原来的预提时间改为BPCS返回时间,修改查询条件和导出。

新增医院 VS 仪器关系报表

新增医院仪器关系报表功能
报表字段: Region、经销商 BPCS 代码、经销商 DMS 代码、经销商名称、BPCS Account、一级经销商代码、一级经销商名称、医院编码、医院名称、仪器编码、仪器名称、近三个月是否有销售、当前年是否有开票、经销商客户关系状态、经销商客户关系停用时间等,同时支持数据的查询与导出。
 
3.1.2
人工智能学习

Python代码:

 

根据数据统计,用户在一天内不同时段的亮度与色温偏好如下:

• 上午(6–12点): 平均亮度 51.7,色温 3689K

• 下午(12–18点): 平均亮度 49.9,色温 3732K

• 晚上(18–24点): 平均亮度 48.1,色温 3661K

二、功能使用频率分析(3

• 使用最频繁场景: Relax Mode273次)

• 使用适中场景: Reading Mode264次),WorkMode237次)

• 使用较少场景: Sleep Mode226次)

三、响应时间分析(3

• 平均响应时间为1.06

延迟瓶颈: 网络瓶颈,系统处理能力是可能的延迟原因

3.2.1-5问题回答
人工智能学习
  1. 用户界面设计:提供一个简洁直观的用户界面,方便用户上传图片和查看识别结果。
  2. 模型加载:系统启动时预加载模型和标签,减少用户等待时间。
  3. 图像上传与预处理:允许用户上传图片,并自动进行必要的预处理。
  4. 图像识别:后台使用 “resnet.onnx” 模型处理预处理后的图片。
  5. 结果展示:清晰展示识别结果,包括最可能的类别和概率。
  6. 交互反馈:提供用户反馈选项,以改进模型性能。
  7. 帮助与支持:内置帮助文档和客服支持,提升用户体验。
  8. 性能优化:优化系统响应速度和模型处理能力。
  9. 安全性考虑:确保用户数据安全和隐私保护。
  10. 多语言支持:界面支持多语言,满足全球用户需求。

可访问性:确保 UI 无障碍,方便所有用户操作