// word_passport_model.dart // ЕДИНООБРАЗНЫЙ ПАСПОРТ ЗНАКА «ОРАКУЛА 999» // 78 атомарных полей по 6 разделам канона import '../services/passport_schema_dart.dart'; class WordPassport { final int id; final String word; final String pos; final String category; final String emoji; final Map fields; final int filledCount; final bool isComplete; final String updatedAt; final List> illustrations; const WordPassport({ required this.id, required this.word, this.pos = '', this.category = '', this.emoji = '', this.fields = const {}, this.filledCount = 0, this.isComplete = false, this.updatedAt = '', this.illustrations = const [], }); String get idPad => id.toString().padLeft(3, '0'); String getField(String key) => fields[key] ?? ''; /// [1/78] Раздел I • Индекс и имя String get indexAndName => getField('index_and_name'); /// [2/78] Раздел I • Грамматический класс String get grammaticalClass => getField('grammatical_class'); /// [3/78] Раздел I • Функциональная категория String get functionalCategory => getField('functional_category'); /// [4/78] Раздел I • Сетевой статус String get networkStatus => getField('network_status'); /// [5/78] Раздел II • Старший Футарк (Руны) String get manticRunes => getField('mantic_runes'); /// [6/78] Раздел II • Кельтский Огам String get manticOgham => getField('mantic_ogham'); /// [7/78] Раздел II • Старшие Арканы Таро String get manticTarot => getField('mantic_tarot'); /// [8/78] Раздел II • Малая колода Ленорман String get manticLenormand => getField('mantic_lenormand'); /// [9/78] Раздел II • Каббала / Древо Жизни String get manticKabbalah => getField('mantic_kabbalah'); /// [10/78] Раздел II • Арабская Геомантия String get manticGeomancy => getField('mantic_geomancy'); /// [11/78] Раздел II • И Цзин (Книга Перемен) String get manticIching => getField('mantic_iching'); /// [12/78] Раздел II • Алхимия (Magnum Opus) String get manticAlchemy => getField('mantic_alchemy'); /// [13/78] Раздел II • Классический Зодиак String get manticZodiacWest => getField('mantic_zodiac_west'); /// [14/78] Раздел II • Китайский Зодиак String get manticZodiacChinese => getField('mantic_zodiac_chinese'); /// [15/78] Раздел II • Септенер String get manticSeptener => getField('mantic_septener'); /// [16/78] Раздел II • Додекада Месяцев String get manticDodecade => getField('mantic_dodecade'); /// [17/78] Раздел II • Нумерология String get manticNumerology => getField('mantic_numerology'); /// [18/78] Раздел II • Космология Трёх Миров String get manticCosmology => getField('mantic_cosmology'); /// [19/78] Раздел II • 20 Навалей Цолькин (Майя) String get manticTzolkin => getField('mantic_tzolkin'); /// [20/78] Раздел II • 27 Накшатр Джйотиш (Индия) String get manticNakshatras => getField('mantic_nakshatras'); /// [21/78] Раздел II • Действующие законы станций (выжимка) String get manticStationLaws => getField('mantic_station_laws'); /// [22/78] Раздел III • Этимология и праформы String get etymologyRoots => getField('etymology_roots'); /// [23/78] Раздел III • Шумер / Аккад String get scriptSumerAkkad => getField('script_sumer_akkad'); /// [24/78] Раздел III • Древний Египет String get scriptEgypt => getField('script_egypt'); /// [25/78] Раздел III • Иудейская традиция String get scriptHebrew => getField('script_hebrew'); /// [26/78] Раздел III • Античность String get scriptAntiquity => getField('script_antiquity'); /// [27/78] Раздел III • Кельты String get scriptCeltic => getField('script_celtic'); /// [28/78] Раздел III • Скандинавы / Германцы String get scriptRunicGermanic => getField('script_runic_germanic'); /// [29/78] Раздел III • Славяне String get scriptSlavic => getField('script_slavic'); /// [30/78] Раздел III • Ведическая Индия String get scriptIndiaSanskrit => getField('script_india_sanskrit'); /// [31/78] Раздел III • Персия String get scriptPersia => getField('script_persia'); /// [32/78] Раздел III • Китай String get scriptChina => getField('script_china'); /// [33/78] Раздел III • Япония String get scriptJapan => getField('script_japan'); /// [34/78] Раздел III • Исламский мир String get scriptIslamic => getField('script_islamic'); /// [35/78] Раздел III • Западная Европа String get scriptWesternEurope => getField('script_western_europe'); /// [36/78] Раздел III • Мезоамерика String get scriptMesoamerica => getField('script_mesoamerica'); /// [37/78] Раздел III • Коренные народы Сев. Америки String get scriptNativeAmerican => getField('script_native_american'); /// [38/78] Раздел III • Полинезия String get scriptPolynesia => getField('script_polynesia'); /// [39/78] Раздел IV • 0 Нейтральный статус (База / Бытие / Среда / Субстанция) String get stateNeutral => getField('state_neutral'); /// [40/78] Раздел IV • [+1] Созидательный вектор (Свет / Ресурс / Эволюция) String get stateCreative => getField('state_creative'); /// [41/78] Раздел IV • [-1] Деструктивный вектор (Тень / Вызов / Искажение) String get stateDestructive => getField('state_destructive'); /// [42/78] Раздел V • Шумер и Месопотамия: [+] Свет String get cultureSumerLight => getField('culture_sumer_light'); /// [43/78] Раздел V • Шумер и Месопотамия: [-] Тень String get cultureSumerShadow => getField('culture_sumer_shadow'); /// [44/78] Раздел V • Древний Египет: [+] Свет String get cultureEgyptLight => getField('culture_egypt_light'); /// [45/78] Раздел V • Древний Египет: [-] Тень String get cultureEgyptShadow => getField('culture_egypt_shadow'); /// [46/78] Раздел V • Иудейская традиция и Каббала: [+] Свет String get cultureKabbalahLight => getField('culture_kabbalah_light'); /// [47/78] Раздел V • Иудейская традиция и Каббала: [-] Тень String get cultureKabbalahShadow => getField('culture_kabbalah_shadow'); /// [48/78] Раздел V • Античность (Греция / Рим): [+] Свет String get cultureAntiquityLight => getField('culture_antiquity_light'); /// [49/78] Раздел V • Античность (Греция / Рим): [-] Тень String get cultureAntiquityShadow => getField('culture_antiquity_shadow'); /// [50/78] Раздел V • Кельтская традиция: [+] Свет String get cultureCelticLight => getField('culture_celtic_light'); /// [51/78] Раздел V • Кельтская традиция: [-] Тень String get cultureCelticShadow => getField('culture_celtic_shadow'); /// [52/78] Раздел V • Скандинавско-германская традиция: [+] Свет String get cultureNordicLight => getField('culture_nordic_light'); /// [53/78] Раздел V • Скандинавско-германская традиция: [-] Тень String get cultureNordicShadow => getField('culture_nordic_shadow'); /// [54/78] Раздел V • Славянская традиция: [+] Свет String get cultureSlavicLight => getField('culture_slavic_light'); /// [55/78] Раздел V • Славянская традиция: [-] Тень String get cultureSlavicShadow => getField('culture_slavic_shadow'); /// [56/78] Раздел V • Ведическая Индия и Тантра: [+] Свет String get cultureIndiaLight => getField('culture_india_light'); /// [57/78] Раздел V • Ведическая Индия и Тантра: [-] Тень String get cultureIndiaShadow => getField('culture_india_shadow'); /// [58/78] Раздел V • Персия и Зороастризм: [+] Свет String get culturePersiaLight => getField('culture_persia_light'); /// [59/78] Раздел V • Персия и Зороастризм: [-] Тень String get culturePersiaShadow => getField('culture_persia_shadow'); /// [60/78] Раздел V • Китай (Даосизм, И-цзин, У-син): [+] Свет String get cultureChinaLight => getField('culture_china_light'); /// [61/78] Раздел V • Китай (Даосизм, И-цзин, У-син): [-] Тень String get cultureChinaShadow => getField('culture_china_shadow'); /// [62/78] Раздел V • Япония (Синтоизм, Сингон): [+] Свет String get cultureJapanLight => getField('culture_japan_light'); /// [63/78] Раздел V • Япония (Синтоизм, Сингон): [-] Тень String get cultureJapanShadow => getField('culture_japan_shadow'); /// [64/78] Раздел V • Исламская традиция и суфизм: [+] Свет String get cultureIslamLight => getField('culture_islam_light'); /// [65/78] Раздел V • Исламская традиция и суфизм: [-] Тень String get cultureIslamShadow => getField('culture_islam_shadow'); /// [66/78] Раздел V • Западноевропейская традиция (Алхимия / Герметизм): [+] Свет String get cultureHermeticLight => getField('culture_hermetic_light'); /// [67/78] Раздел V • Западноевропейская традиция (Алхимия / Герметизм): [-] Тень String get cultureHermeticShadow => getField('culture_hermetic_shadow'); /// [68/78] Раздел V • Мезоамерика и Анды (Майя, Ацтеки, Инки): [+] Свет String get cultureMesoamericaLight => getField('culture_mesoamerica_light'); /// [69/78] Раздел V • Мезоамерика и Анды (Майя, Ацтеки, Инки): [-] Тень String get cultureMesoamericaShadow => getField('culture_mesoamerica_shadow'); /// [70/78] Раздел V • Традиции коренных народов Северной Америки: [+] Свет String get cultureNativeAmericanLight => getField('culture_native_american_light'); /// [71/78] Раздел V • Традиции коренных народов Северной Америки: [-] Тень String get cultureNativeAmericanShadow => getField('culture_native_american_shadow'); /// [72/78] Раздел V • Полинезия и Океания: [+] Свет String get culturePolynesiaLight => getField('culture_polynesia_light'); /// [73/78] Раздел V • Полинезия и Океания: [-] Тень String get culturePolynesiaShadow => getField('culture_polynesia_shadow'); /// [74/78] Раздел V • 17-й Интегральный мета-синтез (Универсальный культурологический код) String get metaSynthesis => getField('meta_synthesis'); /// [75/78] Раздел VI • Смысловое ядро String get semanticCore => getField('semantic_core'); /// [76/78] Раздел VI • Интерпретация по грамматическому типу String get grammarInterpretation => getField('grammar_interpretation'); /// [77/78] Раздел VI • Вектор Воли (К чему призывает) String get willVector => getField('will_vector'); /// [78/78] Раздел VI • Предостережение / Тень (О чем предупреждает) String get shadowWarning => getField('shadow_warning'); factory WordPassport.fromMap(Map map) { final rawFields = map['fields'] as Map? ?? {}; final fieldsMap = rawFields.map((k, v) => MapEntry(k, v?.toString() ?? '')); // Count filled fields var filled = 0; for (final f in kPassportFields78) { if ((fieldsMap[f.key] ?? '').trim().isNotEmpty) { filled++; } } return WordPassport( id: (map['id'] as num?)?.toInt() ?? 0, word: map['word'] as String? ?? '', pos: map['pos'] as String? ?? '', category: map['category'] as String? ?? '', emoji: map['emoji'] as String? ?? '', fields: fieldsMap, filledCount: (map['filled_count'] as num?)?.toInt() ?? filled, isComplete: (map['is_complete'] as bool?) ?? (filled >= 78), updatedAt: map['updated_at'] as String? ?? '', illustrations: (map['illustrations'] as List?)?.map((e) => Map.from(e as Map)).toList() ?? const [], ); } Map toMap() => { 'id': id, 'word': word, 'pos': pos, 'category': category, 'emoji': emoji, 'fields': fields, 'filled_count': filledCount, 'is_complete': isComplete, 'updated_at': updatedAt, 'illustrations': illustrations, }; WordPassport copyWith({ int? id, String? word, String? pos, String? category, String? emoji, Map? fields, int? filledCount, bool? isComplete, String? updatedAt, List>? illustrations, }) { final newFields = fields ?? this.fields; var filled = 0; for (final f in kPassportFields78) { if ((newFields[f.key] ?? '').trim().isNotEmpty) { filled++; } } return WordPassport( id: id ?? this.id, word: word ?? this.word, pos: pos ?? this.pos, category: category ?? this.category, emoji: emoji ?? this.emoji, fields: newFields, filledCount: filledCount ?? filled, isComplete: isComplete ?? (filled >= 78), updatedAt: updatedAt ?? this.updatedAt, illustrations: illustrations ?? this.illustrations, ); } String toMarkdown() { final sb = StringBuffer(); sb.writeln('═══════════════════════════════════════════════════════════════════'); sb.writeln('ЕДИНООБРАЗНЫЙ ПАСПОРТ ЗНАКА «ОРАКУЛА 999»: #$idPad «${word.toUpperCase()}»'); sb.writeln('═══════════════════════════════════════════════════════════════════'); sb.writeln('I. Заголовочный паспорт (Метаданные реестра)'); sb.writeln('Индекс и имя: ${getField("index_and_name").isEmpty ? "$idPad | ${word.toUpperCase()} | $emoji" : getField("index_and_name")}'); sb.writeln('Грамматический класс: ${getField("grammatical_class")}'); sb.writeln('Функциональная категория: ${getField("functional_category")}'); sb.writeln('Сетевой статус: ${getField("network_status")}'); sb.writeln('---'); sb.writeln('II. Кросс-мантическая сеть и станции (16 классических систем)'); sb.writeln('Привязанные узловые станции:'); sb.writeln('Старший Футарк (Руны): ${getField("mantic_runes")}'); sb.writeln('Кельтский Огам: ${getField("mantic_ogham")}'); sb.writeln('Старшие Арканы Таро: ${getField("mantic_tarot")}'); sb.writeln('Малая колода Ленорман: ${getField("mantic_lenormand")}'); sb.writeln('Каббала / Древо Жизни: ${getField("mantic_kabbalah")}'); sb.writeln("Арабская Геомантия ('Илм ар-Рамл): ${getField('mantic_geomancy')}"); sb.writeln('И Цзин (Книга Перемен): ${getField("mantic_iching")}'); sb.writeln('Алхимия (Magnum Opus): ${getField("mantic_alchemy")}'); sb.writeln('Классический Зодиак: ${getField("mantic_zodiac_west")}'); sb.writeln('Китайский Зодиак: ${getField("mantic_zodiac_chinese")}'); sb.writeln('Септенер: ${getField("mantic_septener")}'); sb.writeln('Додекада Месяцев: ${getField("mantic_dodecade")}'); sb.writeln('Нумерология: ${getField("mantic_numerology")}'); sb.writeln('Космология Трёх Миров: ${getField("mantic_cosmology")}'); sb.writeln('20 Навалей Цолькин (Майя): ${getField("mantic_tzolkin")}'); sb.writeln('27 Накшатр Джйотиш (Индия): ${getField("mantic_nakshatras")}'); sb.writeln('Действующие законы станций (выжимка):'); sb.writeln(getField("mantic_station_laws")); sb.writeln('---'); sb.writeln('III. Мультилингвальный и графический паспорт (Язык, Звук, Глиф)'); sb.writeln('Этимология и праформы: ${getField("etymology_roots")}'); sb.writeln('Сравнительный срез графики и фоносемантики (16 систем записи):'); sb.writeln('Шумер / Аккад: ${getField("script_sumer_akkad")}'); sb.writeln('Древний Египет: ${getField("script_egypt")}'); sb.writeln('Иудейская традиция: ${getField("script_hebrew")}'); sb.writeln('Античность: ${getField("script_antiquity")}'); sb.writeln('Кельты: ${getField("script_celtic")}'); sb.writeln('Скандинавы / Германцы: ${getField("script_runic_germanic")}'); sb.writeln('Славяне: ${getField("script_slavic")}'); sb.writeln('Ведическая Индия: ${getField("script_india_sanskrit")}'); sb.writeln('Персия: ${getField("script_persia")}'); sb.writeln('Китай: ${getField("script_china")}'); sb.writeln('Япония: ${getField("script_japan")}'); sb.writeln('Исламский мир: ${getField("script_islamic")}'); sb.writeln('Западная Европа: ${getField("script_western_europe")}'); sb.writeln('Мезоамерика: ${getField("script_mesoamerica")}'); sb.writeln('Коренные народы Сев. Америки: ${getField("script_native_american")}'); sb.writeln('Полинезия: ${getField("script_polynesia")}'); sb.writeln('---'); sb.writeln('IV. Трехполярная матрица состояний (0 / +1 / -1)'); sb.writeln('0 Нейтральный статус (База / Бытие / Среда / Субстанция): ${getField("state_neutral")}'); sb.writeln('[+1] Созидательный вектор (Свет / Ресурс / Эволюция): ${getField("state_creative")}'); sb.writeln('[-1] Деструктивный вектор (Тень / Вызов / Искажение): ${getField("state_destructive")}'); sb.writeln('---'); sb.writeln('V. Культурологическая матрица и 17-й Интегральный мета-синтез'); sb.writeln('А. 16 Мировых Традиций (Срез «Свет / Тень»):'); sb.writeln('Шумер и Месопотамия: [+] ${getField("culture_sumer_light")} / [-] ${getField("culture_sumer_shadow")}'); sb.writeln('Древний Египет: [+] ${getField("culture_egypt_light")} / [-] ${getField("culture_egypt_shadow")}'); sb.writeln('Иудейская традиция и Каббала: [+] ${getField("culture_kabbalah_light")} / [-] ${getField("culture_kabbalah_shadow")}'); sb.writeln('Античность (Греция / Рим): [+] ${getField("culture_antiquity_light")} / [-] ${getField("culture_antiquity_shadow")}'); sb.writeln('Кельтская традиция: [+] ${getField("culture_celtic_light")} / [-] ${getField("culture_celtic_shadow")}'); sb.writeln('Скандинавско-германская традиция: [+] ${getField("culture_nordic_light")} / [-] ${getField("culture_nordic_shadow")}'); sb.writeln('Славянская традиция: [+] ${getField("culture_slavic_light")} / [-] ${getField("culture_slavic_shadow")}'); sb.writeln('Ведическая Индия и Тантра: [+] ${getField("culture_india_light")} / [-] ${getField("culture_india_shadow")}'); sb.writeln('Персия и Зороастризм: [+] ${getField("culture_persia_light")} / [-] ${getField("culture_persia_shadow")}'); sb.writeln('Китай (Даосизм, И-цзин, У-син): [+] ${getField("culture_china_light")} / [-] ${getField("culture_china_shadow")}'); sb.writeln('Япония (Синтоизм, Сингон): [+] ${getField("culture_japan_light")} / [-] ${getField("culture_japan_shadow")}'); sb.writeln('Исламская традиция и суфизм: [+] ${getField("culture_islam_light")} / [-] ${getField("culture_islam_shadow")}'); sb.writeln('Западноевропейская традиция (Алхимия / Герметизм): [+] ${getField("culture_hermetic_light")} / [-] ${getField("culture_hermetic_shadow")}'); sb.writeln('Мезоамерика и Анды (Майя, Ацтеки, Инки): [+] ${getField("culture_mesoamerica_light")} / [-] ${getField("culture_mesoamerica_shadow")}'); sb.writeln('Традиции коренных народов Северной Америки: [+] ${getField("culture_native_american_light")} / [-] ${getField("culture_native_american_shadow")}'); sb.writeln('Полинезия и Океания: [+] ${getField("culture_polynesia_light")} / [-] ${getField("culture_polynesia_shadow")}'); sb.writeln('Б. 17-й Интегральный мета-синтез (Универсальный культурологический код):'); sb.writeln(getField("meta_synthesis")); sb.writeln('---'); sb.writeln('VI. Мантический & Обучающий синтез'); sb.writeln('Смысловое ядро: ${getField("semantic_core")}'); sb.writeln('Интерпретация по грамматическому типу: ${getField("grammar_interpretation")}'); sb.writeln('Вектор Воли (К чему призывает): ${getField("will_vector")}'); sb.writeln('Предостережение / Тень (О чем предупреждает): ${getField("shadow_warning")}'); sb.writeln('═══════════════════════════════════════════════════════════════════'); return sb.toString(); } }