-
Notifications
You must be signed in to change notification settings - Fork 26
feat: API записи объектов метаданных (Subsystem, Catalog, Configuration) в формате конфигуратора (JAXB) #597
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
johnnyshut
wants to merge
1
commit into
1c-syntax:develop
Choose a base branch
from
johnnyshut:feature/meta-writer
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 83 additions & 0 deletions
83
...ava/com/github/_1c_syntax/bsl/mdclasses/jaxb/write/AccountingRegisterToJaxbConverter.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| /* | ||
| * This file is a part of MDClasses. | ||
| * | ||
| * Copyright (c) 2019 - 2026 | ||
| * Tymko Oleg <olegtymko@yandex.ru>, Maximov Valery <maximovvalery@gmail.com> and contributors | ||
| * | ||
| * SPDX-License-Identifier: LGPL-3.0-or-later | ||
| */ | ||
| package com.github._1c_syntax.bsl.mdclasses.jaxb.write; | ||
|
|
||
| import com.github._1c_syntax.bsl.mdo.AccountingRegister; | ||
| import com.github._1c_syntax.bsl.mdo.children.ObjectForm; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccountingRegisterChildObjects; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccountingRegisterProperties; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.MetaDataObject; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.ObjectFactory; | ||
|
|
||
| import java.math.BigDecimal; | ||
|
|
||
| /** | ||
| * Преобразует регистр бухгалтерии mdclasses в JAXB-DTO для записи Designer XML. | ||
| */ | ||
| public final class AccountingRegisterToJaxbConverter { | ||
|
|
||
| private static final ObjectFactory FACTORY = new ObjectFactory(); | ||
|
|
||
| private AccountingRegisterToJaxbConverter() { | ||
| } | ||
|
|
||
| /** | ||
| * Собирает JAXB MetaDataObject из регистра бухгалтерии. | ||
| * | ||
| * @param ar регистр бухгалтерии из модели mdclasses | ||
| * @return корневой элемент для маршаллинга в Designer XML | ||
| */ | ||
| public static MetaDataObject toMetaDataObject(AccountingRegister ar) { | ||
| MetaDataObject root = FACTORY.createMetaDataObject(); | ||
| root.setVersion(JaxbWriteDefaults.DEFAULT_FORMAT_VERSION); | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccountingRegister inner = FACTORY.createAccountingRegister(); | ||
| inner.setUuid(ar.getUuid() != null ? ar.getUuid() : ""); | ||
| inner.setProperties(buildProperties(ar)); | ||
| inner.setChildObjects(buildChildObjects(ar)); | ||
| root.setAccountingRegister(inner); | ||
| return root; | ||
| } | ||
|
|
||
| private static AccountingRegisterProperties buildProperties(AccountingRegister ar) { | ||
| AccountingRegisterProperties p = FACTORY.createAccountingRegisterProperties(); | ||
| p.setName(ar.getName()); | ||
| p.setSynonym(JaxbWriteDefaults.localStringType(JaxbWriteUtils.contentForLocalString(ar.getSynonym()))); | ||
| p.setComment(ar.getComment() != null ? ar.getComment() : ""); | ||
| p.setObjectBelonging(JaxbWriteDefaults.objectBelongingNative()); | ||
| p.setUseStandardCommands(false); | ||
| p.setIncludeHelpInContents(false); | ||
| p.setHelp(""); | ||
| p.setChartOfAccounts(""); | ||
| p.setCorrespondence(false); | ||
| p.setPeriodAdjustmentLength(BigDecimal.ZERO); | ||
| p.setDefaultListForm(""); | ||
| p.setAuxiliaryListForm(""); | ||
| p.setRecordSetModule(""); | ||
| p.setManagerModule(""); | ||
| p.setStandardAttributes(JaxbWriteDefaults.emptyStandardAttributeDescriptions()); | ||
| p.setDataLockControlMode(JaxbWriteDefaults.defaultDataLockControlModeAutomatic()); | ||
| p.setEnableTotalsSplitting(false); | ||
| p.setFullTextSearch(JaxbWriteDefaults.fullTextSearchDontUse()); | ||
| p.setListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExtendedListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExplanation(JaxbWriteDefaults.localStringType("")); | ||
| p.setAdditionalIndexes(""); | ||
| return p; | ||
| } | ||
|
|
||
| private static AccountingRegisterChildObjects buildChildObjects(AccountingRegister ar) { | ||
| AccountingRegisterChildObjects co = FACTORY.createAccountingRegisterChildObjects(); | ||
| if (ar.getForms() != null) { | ||
| for (ObjectForm form : ar.getForms()) { | ||
| co.getForm().add(form.getName() != null ? form.getName() : ""); | ||
| } | ||
| } | ||
| return co; | ||
| } | ||
| } |
80 changes: 80 additions & 0 deletions
80
...a/com/github/_1c_syntax/bsl/mdclasses/jaxb/write/AccumulationRegisterToJaxbConverter.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| /* | ||
| * This file is a part of MDClasses. | ||
| * | ||
| * Copyright (c) 2019 - 2026 | ||
| * Tymko Oleg <olegtymko@yandex.ru>, Maximov Valery <maximovvalery@gmail.com> and contributors | ||
| * | ||
| * SPDX-License-Identifier: LGPL-3.0-or-later | ||
| */ | ||
| package com.github._1c_syntax.bsl.mdclasses.jaxb.write; | ||
|
|
||
| import com.github._1c_syntax.bsl.mdo.AccumulationRegister; | ||
| import com.github._1c_syntax.bsl.mdo.children.ObjectForm; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccumulationRegisterChildObjects; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccumulationRegisterProperties; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.MetaDataObject; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.ObjectFactory; | ||
|
|
||
| /** | ||
| * Преобразует регистр накопления mdclasses в JAXB-DTO для записи Designer XML. | ||
| */ | ||
| public final class AccumulationRegisterToJaxbConverter { | ||
|
|
||
| private static final ObjectFactory FACTORY = new ObjectFactory(); | ||
|
|
||
| private AccumulationRegisterToJaxbConverter() { | ||
| } | ||
|
|
||
| /** | ||
| * Собирает JAXB MetaDataObject из регистра накопления. | ||
| * | ||
| * @param ar регистр накопления из модели mdclasses | ||
| * @return корневой элемент для маршаллинга в Designer XML | ||
| */ | ||
| public static MetaDataObject toMetaDataObject(AccumulationRegister ar) { | ||
| MetaDataObject root = FACTORY.createMetaDataObject(); | ||
| root.setVersion(JaxbWriteDefaults.DEFAULT_FORMAT_VERSION); | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.AccumulationRegister inner = FACTORY.createAccumulationRegister(); | ||
| inner.setUuid(ar.getUuid() != null ? ar.getUuid() : ""); | ||
| inner.setProperties(buildProperties(ar)); | ||
| inner.setChildObjects(buildChildObjects(ar)); | ||
| root.setAccumulationRegister(inner); | ||
| return root; | ||
| } | ||
|
|
||
| private static AccumulationRegisterProperties buildProperties(AccumulationRegister ar) { | ||
| AccumulationRegisterProperties p = FACTORY.createAccumulationRegisterProperties(); | ||
| p.setName(ar.getName()); | ||
| p.setSynonym(JaxbWriteDefaults.localStringType(JaxbWriteUtils.contentForLocalString(ar.getSynonym()))); | ||
| p.setComment(ar.getComment() != null ? ar.getComment() : ""); | ||
| p.setObjectBelonging(JaxbWriteDefaults.objectBelongingNative()); | ||
| p.setUseStandardCommands(false); | ||
| p.setDefaultListForm(""); | ||
| p.setAuxiliaryListForm(""); | ||
| p.setRegisterType(JaxbWriteDefaults.accumulationRegisterTypeBalance()); | ||
| p.setIncludeHelpInContents(false); | ||
| p.setHelp(""); | ||
| p.setRecordSetModule(""); | ||
| p.setManagerModule(""); | ||
| p.setStandardAttributes(JaxbWriteDefaults.emptyStandardAttributeDescriptions()); | ||
| p.setDataLockControlMode(JaxbWriteDefaults.defaultDataLockControlModeAutomatic()); | ||
| p.setFullTextSearch(JaxbWriteDefaults.fullTextSearchDontUse()); | ||
| p.setEnableTotalsSplitting(false); | ||
| p.setAggregates(""); | ||
| p.setListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExtendedListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExplanation(JaxbWriteDefaults.localStringType("")); | ||
| p.setAdditionalIndexes(""); | ||
| return p; | ||
| } | ||
|
|
||
| private static AccumulationRegisterChildObjects buildChildObjects(AccumulationRegister ar) { | ||
| AccumulationRegisterChildObjects co = FACTORY.createAccumulationRegisterChildObjects(); | ||
| if (ar.getForms() != null) { | ||
| for (ObjectForm form : ar.getForms()) { | ||
| co.getForm().add(form.getName() != null ? form.getName() : ""); | ||
| } | ||
| } | ||
| return co; | ||
| } | ||
| } | ||
62 changes: 62 additions & 0 deletions
62
...n/java/com/github/_1c_syntax/bsl/mdclasses/jaxb/write/BusinessProcessToJaxbConverter.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| /* | ||
| * This file is a part of MDClasses. | ||
| * | ||
| * Copyright (c) 2019 - 2026 | ||
| * Tymko Oleg <olegtymko@yandex.ru>, Maximov Valery <maximovvalery@gmail.com> and contributors | ||
| * | ||
| * SPDX-License-Identifier: LGPL-3.0-or-later | ||
| */ | ||
| package com.github._1c_syntax.bsl.mdclasses.jaxb.write; | ||
|
|
||
| import com.github._1c_syntax.bsl.mdo.BusinessProcess; | ||
| import com.github._1c_syntax.bsl.mdo.children.ObjectForm; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.MetaDataObject; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.ObjectFactory; | ||
|
|
||
| /** | ||
| * Преобразует бизнес-процесс mdclasses в JAXB-DTO для записи Designer XML. | ||
| */ | ||
| public final class BusinessProcessToJaxbConverter { | ||
|
|
||
| private static final ObjectFactory FACTORY = new ObjectFactory(); | ||
|
|
||
| private BusinessProcessToJaxbConverter() { | ||
| } | ||
|
|
||
| /** | ||
| * Собирает JAXB MetaDataObject из бизнес-процесса. | ||
| * | ||
| * @param bp бизнес-процесс из модели mdclasses | ||
| * @return корневой элемент для маршаллинга в Designer XML | ||
| */ | ||
| public static MetaDataObject toMetaDataObject(BusinessProcess bp) { | ||
| MetaDataObject root = FACTORY.createMetaDataObject(); | ||
| root.setVersion(JaxbWriteDefaults.DEFAULT_FORMAT_VERSION); | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.BusinessProcess inner = FACTORY.createBusinessProcess(); | ||
| inner.setUuid(bp.getUuid() != null ? bp.getUuid() : ""); | ||
| inner.setProperties(buildProperties(bp)); | ||
| inner.setChildObjects(buildChildObjects(bp)); | ||
| root.setBusinessProcess(inner); | ||
| return root; | ||
| } | ||
|
|
||
| private static com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.BusinessProcessProperties buildProperties(BusinessProcess bp) { | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.BusinessProcessProperties p = | ||
| FACTORY.createBusinessProcessProperties(); | ||
| p.setName(bp.getName()); | ||
| p.setSynonym(JaxbWriteDefaults.localStringType(JaxbWriteUtils.contentForLocalString(bp.getSynonym()))); | ||
| p.setComment(bp.getComment() != null ? bp.getComment() : ""); | ||
| return p; | ||
| } | ||
|
|
||
| private static com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.BusinessProcessChildObjects buildChildObjects(BusinessProcess bp) { | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.BusinessProcessChildObjects childObjects = | ||
| FACTORY.createBusinessProcessChildObjects(); | ||
| if (bp.getForms() != null) { | ||
| for (ObjectForm form : bp.getForms()) { | ||
| childObjects.getForm().add(form.getName() != null ? form.getName() : ""); | ||
| } | ||
| } | ||
| return childObjects; | ||
| } | ||
| } |
84 changes: 84 additions & 0 deletions
84
...va/com/github/_1c_syntax/bsl/mdclasses/jaxb/write/CalculationRegisterToJaxbConverter.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,84 @@ | ||
| /* | ||
| * This file is a part of MDClasses. | ||
| * | ||
| * Copyright (c) 2019 - 2026 | ||
| * Tymko Oleg <olegtymko@yandex.ru>, Maximov Valery <maximovvalery@gmail.com> and contributors | ||
| * | ||
| * SPDX-License-Identifier: LGPL-3.0-or-later | ||
| */ | ||
| package com.github._1c_syntax.bsl.mdclasses.jaxb.write; | ||
|
|
||
| import com.github._1c_syntax.bsl.mdo.CalculationRegister; | ||
| import com.github._1c_syntax.bsl.mdo.children.ObjectForm; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.CalculationRegisterChildObjects; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.CalculationRegisterProperties; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.MetaDataObject; | ||
| import com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.ObjectFactory; | ||
|
|
||
| /** | ||
| * Преобразует регистр расчёта mdclasses в JAXB-DTO для записи Designer XML. | ||
| */ | ||
| public final class CalculationRegisterToJaxbConverter { | ||
|
|
||
| private static final ObjectFactory FACTORY = new ObjectFactory(); | ||
|
|
||
| private CalculationRegisterToJaxbConverter() { | ||
| } | ||
|
|
||
| /** | ||
| * Собирает JAXB MetaDataObject из регистра расчёта. | ||
| * | ||
| * @param cr регистр расчёта из модели mdclasses | ||
| * @return корневой элемент для маршаллинга в Designer XML | ||
| */ | ||
| public static MetaDataObject toMetaDataObject(CalculationRegister cr) { | ||
| MetaDataObject root = FACTORY.createMetaDataObject(); | ||
| root.setVersion(JaxbWriteDefaults.DEFAULT_FORMAT_VERSION); | ||
| com.github._1c_syntax.bsl.mdclasses.jaxb.mdclasses.CalculationRegister inner = FACTORY.createCalculationRegister(); | ||
| inner.setUuid(cr.getUuid() != null ? cr.getUuid() : ""); | ||
| inner.setProperties(buildProperties(cr)); | ||
| inner.setChildObjects(buildChildObjects(cr)); | ||
| root.setCalculationRegister(inner); | ||
| return root; | ||
| } | ||
|
|
||
| private static CalculationRegisterProperties buildProperties(CalculationRegister cr) { | ||
| CalculationRegisterProperties p = FACTORY.createCalculationRegisterProperties(); | ||
| p.setName(cr.getName()); | ||
| p.setSynonym(JaxbWriteDefaults.localStringType(JaxbWriteUtils.contentForLocalString(cr.getSynonym()))); | ||
| p.setComment(cr.getComment() != null ? cr.getComment() : ""); | ||
| p.setObjectBelonging(JaxbWriteDefaults.objectBelongingNative()); | ||
| p.setUseStandardCommands(false); | ||
| p.setDefaultListForm(""); | ||
| p.setAuxiliaryListForm(""); | ||
| p.setPeriodicity(JaxbWriteDefaults.calculationRegisterPeriodicityYear()); | ||
| p.setActionPeriod(false); | ||
| p.setBasePeriod(false); | ||
| p.setSchedule(""); | ||
| p.setScheduleValue(""); | ||
| p.setScheduleDate(""); | ||
| p.setChartOfCalculationTypes(""); | ||
| p.setRecordSetModule(""); | ||
| p.setManagerModule(""); | ||
| p.setIncludeHelpInContents(false); | ||
| p.setHelp(""); | ||
| p.setStandardAttributes(JaxbWriteDefaults.emptyStandardAttributeDescriptions()); | ||
| p.setDataLockControlMode(JaxbWriteDefaults.defaultDataLockControlModeAutomatic()); | ||
| p.setFullTextSearch(JaxbWriteDefaults.fullTextSearchDontUse()); | ||
| p.setListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExtendedListPresentation(JaxbWriteDefaults.localStringType("")); | ||
| p.setExplanation(JaxbWriteDefaults.localStringType("")); | ||
| p.setAdditionalIndexes(""); | ||
| return p; | ||
| } | ||
|
|
||
| private static CalculationRegisterChildObjects buildChildObjects(CalculationRegister cr) { | ||
| CalculationRegisterChildObjects co = FACTORY.createCalculationRegisterChildObjects(); | ||
| if (cr.getForms() != null) { | ||
| for (ObjectForm form : cr.getForms()) { | ||
| co.getForm().add(form.getName() != null ? form.getName() : ""); | ||
| } | ||
| } | ||
| return co; | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 134
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 392
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 4014
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 3865
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 745
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 1830
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 847
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 2292
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 3464
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 1794
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 534
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 160
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 474
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 2968
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 922
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 469
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 4776
🏁 Script executed:
Repository: 1c-syntax/mdclasses
Length of output: 45
RegisterType hardcoding causes data loss during round-trip conversion.
The Designer XML format supports two accumulation register types: "Balance" (остатки) and "Turnovers" (обороты). The converter hardcodes
accumulationRegisterTypeBalance()at line 54, ignoring the actual registerType value from source metadata. Test fixtures confirm both types exist (РегистрНакопления1.xml has "Balance", РегистрНакопления2.xml has "Turnovers"), but the AccumulationRegister model lacks a registerType field to preserve this information, making round-trip conversion lossy.Add registerType field to AccumulationRegister and update the converter to use the actual value.
🤖 Prompt for AI Agents