da12a9ec1c
- bj_exchange и «кран» Fancy убраны: данные модуля ЛК в PostgreSQL (схема lk) - трансферные таблицы FTV_M2M: создание при установке, события, справочник участников - сверка с DEPO: счёт, ФИО, дата рождения, ИИС по договору, квал-инвестор из опции DEPO - боевой ЛК ЕСИА Финанс при тестовом ИШ: журнал, отказ через DEPO, статусы в ЛК - онлайн-лицензирование в bj, план тестирования M2M для контрагента (интерактивный HTML) - модули QUIK МНП, экспорт QUIK, НПР/УДС; документы и тестовые материалы Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
internal/nsdxml — сериализация и парсинг XML по правилам НРД
Что реализовано
Marshal(v) ([]byte, error)/Unmarshal(data, v) error— сериализация и разбор XML с прологом<?xml version="1.0" encoding="windows-1251"?>.Unmarshalпонимает как windows-1251, так и UTF-8 на входе черезCharsetReader.- Кодек windows-1251 (собственный, без внешних зависимостей):
EncodeWindows1251,DecodeWindows1251. Таблица соответствия CP1251 ↔ Unicode для байтов 0x80..0xFF. Руны, не выразимые в CP1251, приводят к ошибкеErrUnmappable. CharsetReader(charset, input)— пригодно к использованию вxml.Decoder.CharsetReader. Поддерживаетwindows-1251,cp1251,utf-8, отсутствие charset; на другие — ошибка.NSDDateTime— отметка времени НРД форматаYYYY-MM-DDThh:mm:ss(МСК[+-N]), regex из XSD:[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\(МСК([+-][0-9]{1,2})?\). РеализованыMarshalXML,UnmarshalXML,MarshalText,UnmarshalText,String,Now. Сохраняет различие между «(МСК)» без сдвига и «(МСК+0)» черезOffsetSpecified.
Кодек windows-1251
Реализован через штатный golang.org/x/text/encoding/charmap.Windows1251.
Изначально (PR-1) была собственная таблица CP1251 — обход блокировки
zetit-прокси на proxy.golang.org; после открытия доступа (через
NO_PROXY=*.golang.org и пр.) заменено на штатную реализацию.
Тесты
- Round-trip на ASCII и кириллице, включая cp1251-пунктуацию
(
№,©,«»,„"). - Негативный кейс — недостижимая руна (эмодзи) даёт
ErrUnmappable. NSDDateTimeна всех вариантах смещения:(МСК),(МСК+2),(МСК-1),(МСК+12).- Покрытие — 92.5%.