添加 MX-PD-盘古 项目文件

将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
Shi.Ji
2026-05-18 11:43:09 +08:00
parent 03632a379d
commit e31d3560bb
739 changed files with 99783 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
---
applyTo: "MainShell/Common/**/*.cs,**/*ViewModel.cs,**/*Service.cs,**/*Process*.cs"
---
# Localization and Popup Instructions
## Scope
These rules apply to internal program message dialogs only.
Do not apply these rules to:
- database alarms
- PLC alarm chain
- device alarm chain
- AlarmAsync main alarm path
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**<2A><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>**<2A><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
- <20><><EFBFBD>ݿⱨ<DDBF><E2B1A8>
- PLC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
- <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
- `AlarmAsync()` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
## Required Popup Pattern
For internal prompts:
1. define MessageKey enum value in `MainShell/Common/MessageKey.cs`
2. add mapping in `LanguageResourceHelper.ResourceKeyMap`
3. add Chinese resource in `MainShell/Language/MXJM_CN.xaml`
4. add English resource in `MainShell/Language/MXJM_EN.xaml`
5. call `LocalizedMessageBox.Show()` or `LocalizedMessageBox.ShowFormat()`
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>
1. <20><> `MessageKey.cs` <20>ж<EFBFBD><D0B6><EFBFBD>ö<EFBFBD><C3B6>
2. <20><> `LanguageResourceHelper.ResourceKeyMap` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
3. <20><> `MXJM_CN.xaml` <20>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
4. <20><> `MXJM_EN.xaml` <20>в<EFBFBD>Ӣ<EFBFBD><D3A2><EFBFBD><EFBFBD>Դ
5. ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD> `LocalizedMessageBox.Show()` <20><> `ShowFormat()`
## Required Title Keys
Use:
- MessageKey.TitleInfo
- MessageKey.TitleWarning
- MessageKey.TitleError
- MessageKey.TitleConfirm
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһʹ<EFBFBD>ã<EFBFBD>
- `MessageKey.TitleInfo`
- `MessageKey.TitleWarning`
- `MessageKey.TitleError`
- `MessageKey.TitleConfirm`
## Formatting Rules
- For parameterized messages, use `ShowFormat()`
- Resource text should use placeholders such as `{0}`, `{1}`
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> `ShowFormat()`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ı<EFBFBD>ʹ<EFBFBD><EFBFBD> `{0}`<EFBFBD><EFBFBD>`{1}` ռλ<D5BC><CEBB><EFBFBD><EFBFBD>
## Forbidden Patterns
Do not generate:
- `MwMessageBox.Show("<22><><EFBFBD><EFBFBD>")`
- `MessageBox.Show("<22><><EFBFBD><EFBFBD>")`
- `LocalizedMessageBox.Show("resourceKeyString")`
- direct resource dictionary access for popup text
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- `MwMessageBox.Show("<22><><EFBFBD><EFBFBD>")`
- `MessageBox.Show("<22><><EFBFBD><EFBFBD>")`
- `LocalizedMessageBox.Show("<22><>Դkey<65>ַ<EFBFBD><D6B7><EFBFBD>")`
- ֱ<>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>
## Migration Rule
When modifying old internal prompt code, prefer migrating old MessageBox/MwMessageBox usage to LocalizedMessageBox and update:
- MessageKey enum
- ResourceKeyMap
- Chinese resource
- English resource
- business code call site
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
Ǩ<EFBFBD>ƾɴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>еij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD>Ϊ `LocalizedMessageBox` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>
- MessageKey ö<><C3B6>
- ResourceKeyMap ӳ<><D3B3>
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
- Ӣ<><D3A2><EFBFBD><EFBFBD>Դ
- ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
## Workflow / Process Error and Message Localization
Error messages, status messages, and user-facing messages generated in:
- Service layer (Service/*Service.cs)
- Activity layer (MainShell/Process/Activity/*.cs)
- ProcessService implementations
Must follow the same localization requirements as popup dialogs:
1. Define MessageKey enum values for all error/status messages
2. Register in LanguageResourceHelper.ResourceKeyMap
3. Add translations in MXJM_CN.xaml and MXJM_EN.xaml
4. Pass MessageKey enum (not raw strings) in WorkflowContext or result objects
5. Display messages using LocalizedMessageBox from ViewModel/View layer
Do not hardcode error messages or status strings in Service/Activity code.
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
- Service <20>㣨Service/*Service.cs<63><73>
- Activity <20>㣨MainShell/Process/Activity/*.cs<63><73>
- ProcessService ʵ<><CAB5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ı<EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><> MessageKey <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>/״̬<D7B4><CCAC>Ϣ<EFBFBD><CFA2>ö<EFBFBD><C3B6>ֵ
2. <20><> LanguageResourceHelper.ResourceKeyMap <20><>ע<EFBFBD><D7A2>
3. <20><> MXJM_CN.xaml <20><> MXJM_EN.xaml <20><><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
4. <20><> WorkflowContext <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD> MessageKey ö<><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
5. <20><> ViewModel/View <20><>ʹ<EFBFBD><CAB9> LocalizedMessageBox <20><>ʾ<EFBFBD><CABE>Ϣ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Service/Activity <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>״̬<D7B4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
## Example: Adding Workflow Error Message
For a new workflow error in a Service:
1. Define in `MessageKey.cs`:
```csharp
ProcessError_InvalidToolId,
ProcessError_HardwareTimeout,
```
2. Add to `LanguageResourceHelper.ResourceKeyMap`:
```csharp
{ MessageKey.ProcessError_InvalidToolId,
"MXJM:ProcessError_InvalidToolId" },
{ MessageKey.ProcessError_HardwareTimeout,
"MXJM:ProcessError_HardwareTimeout" },
```
3. In result object, return the message key:
```csharp
public MessageKey? ErrorMessageKey { get; set; }
```
4. In Activity's AfterExecute or ViewModel, check and display:
```csharp
if (result.ErrorMessageKey.HasValue)
{
LocalizedMessageBox.Show(result.ErrorMessageKey.Value,
MessageKey.TitleError);
}
```
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
<EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><> `MessageKey.cs` <20>ж<EFBFBD><D0B6>
ProcessError_InvalidToolId
ProcessError_HardwareTimeout
2. <20><> `LanguageResourceHelper.ResourceKeyMap` <20><>ע<EFBFBD><D7A2>
3. <20><> Service <20><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD> MessageKey
4. <20><> Activity AfterExecute <20><> ViewModel <20>м<EFBFBD><D0BC>ʹ<E9B2A2><CAB9> LocalizedMessageBox <20><>ʾ