From a381b4da91585a5a17cd90b1b95a28c7a1f905f1 Mon Sep 17 00:00:00 2001 From: handefeng <1030428966@qq.com> Date: Mon, 9 Dec 2024 14:26:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=EF=BC=9A=E5=BC=80=E5=8F=91=E8=A7=84?= =?UTF-8?q?=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resource/Document/开发规范.md | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/Resource/Document/开发规范.md b/Resource/Document/开发规范.md index 671318d..d2f9909 100644 --- a/Resource/Document/开发规范.md +++ b/Resource/Document/开发规范.md @@ -206,9 +206,8 @@ catch (Exception ex) ``` 此机制能捕获未在局部处理的异常,防止程序崩溃,提升稳定性与用户体验,同时利于通过日志排查问题根源。 ### (三)国际化调用传参变量方案 -当前国际化借助 “MultilingualHelper.getKey” 方法实现文本资源获取,为增强灵活性,可扩展其传参机制。例如,对于动态文本元素(如依用户选择显示不同语言的提示信息), -除现有键值参数外,新增参数用于传递动态数据占位符及对应替换值。像 “MultilingualHelper.getKey ("dynamicMessage", new {name = "John", action = "login"});”, -其中 “dynamicMessage” 为资源键,键对应文本含 “{name} 执行了 {action} 操作” 格式占位符,传入对象实现精准文本替换与国际化展示,提升多语言场景下文本呈现的精准度与动态适应性。 +在资源文件中,与键dynamicTextKey对应的文本模板可设计为占位符形式,如"{var1} 完成了 {var2} 操作"。MultilingualHelper.getString方法内部实现逻辑将解析键值对参数,替换文本模板中的占位符,从而精准生成符合当前语言环境及动态数据的国际化文本。 +通过这种方式,无论在视图层绑定文本属性还是业务逻辑中生成提示信息等场景,只需传入相应键值对参数,即可轻松实现多语言文本动态化,提升国际化功能的适应性与易用性,确保不同语言用户获取准确、个性化信息,优化整体用户体验。 ### (四)日志处理 在项目中统一日志处理方式,如参考 MainWindow 中的用法,创建日志记录工具类 “Logger”。在关键业务逻辑点(如数据读写、外部服务调用、重要操作执行前后)记录日志,依操作类型与重要性分级别(DEBUG、INFO、WARN、ERROR)。 例如: @@ -251,4 +250,25 @@ using (SQLiteConnection connection = new SQLiteConnection(connectionString)) ### (七)页面自适应 为实现页面在不同设备与分辨率下的自适应,布局设计遵循响应式原则。在布局容器运用上,除前文提及的 “StackPanel” 与 “Grid”,对于 “Grid” 布局,除设置列宽为 “”(按比例分配空间)、“Auto”(自动适应内容)组合外,还可搭配 “MinWidth” 和 “MaxWidth” 属性,精准限定列宽范围,确保内容合理展示且布局稳定。如重要信息列可设 “MinWidth” 保障可读性,弹性列用 “” 分配剩余空间,防止极端尺寸下布局错乱。 针对文本类控件,“TextBlock” 的 “TextWrapping” 设为 “Wrap” 实现自动换行,“MaxWidth” 依父容器或屏幕宽度动态调整,确保长文本不溢出、排版美观。图像类控件 “Image” 的 “Stretch” 属性依场景设为 “Uniform”(等比缩放填满)、“Fill”(拉伸填满)或 “None”(保持原始尺寸),配合 “MaxWidth”“MaxHeight” 于不同分辨率下维持图像质量与布局平衡。 -运用尺寸自适应触发器,依屏幕宽度阈值切换布局样式或隐藏 / 显示控件。如窗口宽度小于 600px 时,将两列 “Grid” 布局切换为单列 “StackPanel”,重新排列控件顺序、调整间距与字体大小,提升移动设备或小屏幕浏览体验,实现全场景优质交互与视觉呈现。 \ No newline at end of file +运用尺寸自适应触发器,依屏幕宽度阈值切换布局样式或隐藏 / 显示控件。如窗口宽度小于 600px 时,将两列 “Grid” 布局切换为单列 “StackPanel”,重新排列控件顺序、调整间距与字体大小,提升移动设备或小屏幕浏览体验,实现全场景优质交互与视觉呈现。 +### (八)错误码常量类 +创建统一的错误码常量类ErrorCodes,用于集中管理应用程序中的错误码。该类应位于项目的合适位置,例如Helpers文件夹下,以提高可维护性和复用性。 +在ErrorCodes类中,使用public const关键字定义错误码常量,常量名应具有清晰的语义,能够直观反映错误类型。 +例如: +```csharp +public static class ErrorCodes +{ + // 数据库连接错误 + public const int DB_CONNECTION_ERROR = 1001; + // 数据验证失败错误 + public const int DATA_VALIDATION_FAILED = 1002; + // 文件读取错误 + public const int FILE_READ_ERROR = 1003; + // 用户认证失败错误 + public const int USER_AUTHENTICATION_FAILED = 1004; + // 网络请求超时错误 + public const int NETWORK_REQUEST_TIMEOUT = 1005; +} +``` +在整个项目中,当发生相应错误时,统一使用这些错误码常量进行标识和传递。例如,在数据库访问层捕获到连接错误时,返回ErrorCodes.DB_CONNECTION_ERROR;在数据验证模块验证失败时,返回ErrorCodes.DATA_VALIDATION_FAILED。 +在处理错误的地方(如视图模型中的错误处理逻辑、全局异常捕获处),依据接收到的错误码常量执行特定的错误处理策略,如显示友好错误提示信息给用户、记录详细错误日志以供排查、进行错误恢复尝试或引导用户采取正确操作等,提升错误处理的规范性与可维护性,增强应用程序的健壮性与用户体验。 \ No newline at end of file From 7eda7178b7b5d33efe1e5d38119a05f007433b31 Mon Sep 17 00:00:00 2001 From: handefeng <1030428966@qq.com> Date: Tue, 10 Dec 2024 11:38:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?add=EF=BC=9AAlgorithmResultEntity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/ApiEntity/AlgorithmResultEntity.cs | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Model/Entity/ApiEntity/AlgorithmResultEntity.cs diff --git a/Model/Entity/ApiEntity/AlgorithmResultEntity.cs b/Model/Entity/ApiEntity/AlgorithmResultEntity.cs new file mode 100644 index 0000000..2c521cf --- /dev/null +++ b/Model/Entity/ApiEntity/AlgorithmResultEntity.cs @@ -0,0 +1,81 @@ +using System.Collections.Generic; + +namespace SparkClient.Model.Entity.ApiEntity +{ + public class FacetCoord + { + public double x { get; set; } + public double y { get; set; } + public double z { get; set; } + } + + public class Facet + { + public List coords { get; set; } + public string facet_id { get; set; } + public int facet_type { get; set; } + } + + public class Measurements + { + public double DIAMETER { get; set; } + public double DIAMETER_DEV { get; set; } + public double M1 { get; set; } + public double M2 { get; set; } + public double M3 { get; set; } + public double TABLE { get; set; } + public double TABLE_MIN { get; set; } + public double TABLE_MAX { get; set; } + public double CROWN_HEIGHT { get; set; } + public double CROWN_H_DEV { get; set; } + public double CROWN_H_MIN { get; set; } + public double CROWN_H_MAX { get; set; } + public double CROWN_ANGLE { get; set; } + public double CROWN_ANGLE_DEV { get; set; } + public double CROWN_ANGLE_MIN { get; set; } + public double CROWN_ANGLE_MAX { get; set; } + public double PAV_DEPTH { get; set; } + public double PAV_DEPTH_DEV { get; set; } + public double PAV_DEPTH_MIN { get; set; } + public double PAV_DEPTH_MAX { get; set; } + public double PAV_ANGLE { get; set; } + public double PAV_ANGLE_DEV { get; set; } + public double PAV_ANGLE_MIN { get; set; } + public double PAV_ANGLE_MAX { get; set; } + public double GIRDLE_BEZEL { get; set; } + public double GIRDLE_BEZEL_DEV { get; set; } + public double GIRDLE_BEZEL_MIN { get; set; } + public double GIRDLE_BEZEL_MAX { get; set; } + public double GIRDLE_BONE { get; set; } + public double GIRDLE_BONE_MIN { get; set; } + public double GIRDLE_BONE_MAX { get; set; } + public double GIRDLE { get; set; } + public double GIRDLE_DEV { get; set; } + public double GIRDLE_MIN { get; set; } + public double GIRDLE_MAX { get; set; } + public double TOTAL_DEPTH { get; set; } + public double CULET { get; set; } + public double LW_RATIO { get; set; } + public double TOC { get; set; } + public double COC { get; set; } + public double TA { get; set; } + public double LGF { get; set; } + public double STAR { get; set; } + public double STAR_MIN { get; set; } + public double STAR_MAX { get; set; } + public double LOWER_HALVES_RATIO { get; set; } + public double LOWER_HALVES_RATIO_MIN { get; set; } + public double LOWER_HALVES_RATIO_MAX { get; set; } + public double TWIST { get; set; } + public double TWIST_DEV { get; set; } + public double TWIST_MIN { get; set; } + public double TWIST_MAX { get; set; } + public double CULET_TO_TABLE { get; set; } + } + + public class AlgorithmResultEntity + { + public List facets { get; set; } + public Measurements measurements { get; set; } + } +}