diff --git a/dokogen/importer.py b/dokogen/importer.py index 04f4104..89482a9 100644 --- a/dokogen/importer.py +++ b/dokogen/importer.py @@ -308,9 +308,24 @@ def _import_187_is_list(wb, data, settings, log_fn): 'гарантирован': 'Доверенная загрузка', } + HINT_MARKERS = [ + 'формулировка должна', 'например', 'пример:', 'формат:', 'выберите из', + 'если не используются', 'при необходимости можно', 'указать', 'вписать', + 'если адресов несколько', 'по логике', 'произвольное описание', + ] + + def _is_hint(text): + """True, если значение похоже на подсказку/образец из примечания.""" + low = (text or '').lower() + for m in HINT_MARKERS: + if m in low: + return True + return False + def _set(field_lower, key, val): - """Записать значение, если ключевое слово найдено в вопросе.""" - if val and 'выбрать' not in field_lower: + """Записать значение, если ключевое слово найдено в вопросе + и значение не является подсказкой из примечания.""" + if val and 'выбрать' not in field_lower and not _is_hint(val): is_obj[key] = val return True return False diff --git a/dokogen/ui.py b/dokogen/ui.py index 1bfd7d4..02bc420 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -795,7 +795,7 @@ class DokoGenApp: # Сфера деятельности — словарик + выпадающий список ttk.Label(main_frame, text="Сфера деятельности:").grid(row=1, column=0, sticky=tk.W, pady=2) - self.is_sphere_combo = ttk.Combobox(main_frame, width=68) + self.is_sphere_combo = ttk.Combobox(main_frame, width=68, state='readonly') self.is_sphere_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1) try: import json as _json @@ -807,7 +807,7 @@ class DokoGenApp: # Тип объекта — словарик + выпадающий список ttk.Label(main_frame, text="Тип объекта:").grid(row=2, column=0, sticky=tk.W, pady=2) - self.is_object_type_combo = ttk.Combobox(main_frame, width=68) + self.is_object_type_combo = ttk.Combobox(main_frame, width=68, state='readonly') self.is_object_type_combo.grid(row=2, column=1, padx=8, sticky=tk.EW, pady=1) try: _ot = os.path.join(os.path.dirname(__file__), 'dictionaries', 'object_types.json') @@ -818,7 +818,7 @@ class DokoGenApp: # Архитектура объекта — словарик + выпадающий список ttk.Label(main_frame, text="Архитектура объекта:").grid(row=3, column=0, sticky=tk.W, pady=2) - self.is_architecture_combo = ttk.Combobox(main_frame, width=68) + self.is_architecture_combo = ttk.Combobox(main_frame, width=68, state='readonly') self.is_architecture_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1) try: _ar = os.path.join(os.path.dirname(__file__), 'dictionaries', 'architectures.json') @@ -829,7 +829,7 @@ class DokoGenApp: # Типовой отраслевой объект КИИ — словарик + выпадающий список ttk.Label(main_frame, text="Типовой отраслевой объект КИИ:").grid(row=4, column=0, sticky=tk.W, pady=2) - self.is_typical_object_combo = ttk.Combobox(main_frame, width=68) + self.is_typical_object_combo = ttk.Combobox(main_frame, width=68, state='readonly') self.is_typical_object_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1) try: _to = os.path.join(os.path.dirname(__file__), 'dictionaries', 'typical_objects.json') @@ -875,7 +875,7 @@ class DokoGenApp: # Категория сети — словарик ttk.Label(net_frame, text="Категория сети электросвязи:").grid(row=1, column=0, sticky=tk.W, pady=2) - self.is_net_category_combo = ttk.Combobox(net_frame, width=68) + self.is_net_category_combo = ttk.Combobox(net_frame, width=68, state='readonly') self.is_net_category_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1) try: import json as _json @@ -892,7 +892,7 @@ class DokoGenApp: # Цель взаимодействия — словарик ttk.Label(net_frame, text="Цель взаимодействия с сетью электросвязи:").grid(row=3, column=0, sticky=tk.W, pady=2) - self.is_net_purpose_combo = ttk.Combobox(net_frame, width=68) + self.is_net_purpose_combo = ttk.Combobox(net_frame, width=68, state='readonly') self.is_net_purpose_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1) try: _np = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_purposes.json') @@ -903,7 +903,7 @@ class DokoGenApp: # Способ взаимодействия — словарик ttk.Label(net_frame, text="Способ взаимодействия (тип доступа):").grid(row=4, column=0, sticky=tk.W, pady=2) - self.is_net_method_combo = ttk.Combobox(net_frame, width=68) + self.is_net_method_combo = ttk.Combobox(net_frame, width=68, state='readonly') self.is_net_method_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1) try: _nm = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_methods.json')