ox-tender-abstract 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec_status +3 -2
- data/lib/oxtenderabstract/version.rb +1 -1
- data/lib/oxtenderabstract/xml_parser.rb +47 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dfb0556afbbe98cebec1fbb413fbe4408d5258e6fbd79d090c99df94dc718d6
|
4
|
+
data.tar.gz: 7d3308d579e05d7c651848f2cd2d1459562ab85d9f3991c2ef4784637803df99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa20e0eeebbdebebc3cba7c36112db12a8bbc63bffffe9d6ce79f762520a9f28be0afc587fb47f22e9358facf118e6e80093fbe1b9a9387c356fecc43efcaacf
|
7
|
+
data.tar.gz: 3437061cb5eaa5c84de842c4d57056ef3fa5d080a0f972708db210c48081a807faa866aeb4b9296d759c4855b4c95c4b541f22ba4be924def0ce64a8afea1348
|
data/.rspec_status
CHANGED
@@ -54,8 +54,9 @@ example_id | status | run_time
|
|
54
54
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:3:1] | failed | 0.00122 seconds |
|
55
55
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:3:2] | passed | 0.00162 seconds |
|
56
56
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:3:3] | failed | 0.00097 seconds |
|
57
|
-
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:4:1] | passed | 0.
|
58
|
-
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:4:2] | passed | 0.
|
57
|
+
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:4:1] | passed | 0.00336 seconds |
|
58
|
+
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:4:2] | passed | 0.00176 seconds |
|
59
|
+
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:4:3] | passed | 0.0009 seconds |
|
59
60
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:5:1] | passed | 0.00012 seconds |
|
60
61
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:6:1] | passed | 0.00008 seconds |
|
61
62
|
./spec/oxtenderabstract/xml_parser_spec.rb[1:1:7:1] | passed | 0.00008 seconds |
|
@@ -593,9 +593,56 @@ module OxTenderAbstract
|
|
593
593
|
}
|
594
594
|
end
|
595
595
|
|
596
|
+
# Determine the actual product name from available sources
|
597
|
+
# Priority: KTRU name > OKPD2 name > name field
|
598
|
+
product_name = nil
|
599
|
+
product_name = if object_data[:ktru] && object_data[:ktru][:name] && !object_data[:ktru][:name].empty?
|
600
|
+
object_data[:ktru][:name]
|
601
|
+
elsif object_data[:okpd2] && object_data[:okpd2][:name] && !object_data[:okpd2][:name].empty?
|
602
|
+
object_data[:okpd2][:name]
|
603
|
+
else
|
604
|
+
object_data[:name]
|
605
|
+
end
|
606
|
+
|
607
|
+
object_data[:product_name] = product_name
|
608
|
+
|
609
|
+
# Add field description indicating what the 'name' field actually contains
|
610
|
+
object_data[:name_type] = determine_name_type(object_data[:name])
|
611
|
+
|
596
612
|
object_data.compact
|
597
613
|
end
|
598
614
|
|
615
|
+
private
|
616
|
+
|
617
|
+
def determine_name_type(name)
|
618
|
+
return nil unless name
|
619
|
+
|
620
|
+
# Common patterns that indicate this is a characteristic, not a product name
|
621
|
+
characteristic_patterns = [
|
622
|
+
/соответствие\s+требованиям/i,
|
623
|
+
/минимальный\s+.*срок/i,
|
624
|
+
/количество\s+/i,
|
625
|
+
/размер\s+/i,
|
626
|
+
/объем\s+/i,
|
627
|
+
/вес\s+/i,
|
628
|
+
/цвет\s+/i,
|
629
|
+
/материал\s+/i,
|
630
|
+
/тип\s+/i,
|
631
|
+
/класс\s+/i,
|
632
|
+
/группа\s+/i,
|
633
|
+
/категория\s+/i,
|
634
|
+
/способ\s+/i,
|
635
|
+
/метод\s+/i,
|
636
|
+
/технология\s+/i
|
637
|
+
]
|
638
|
+
|
639
|
+
if characteristic_patterns.any? { |pattern| name.match?(pattern) }
|
640
|
+
'characteristic'
|
641
|
+
else
|
642
|
+
'product_name'
|
643
|
+
end
|
644
|
+
end
|
645
|
+
|
599
646
|
def extract_guarantee_info(doc, namespaces)
|
600
647
|
{
|
601
648
|
contract_guarantee_part: find_text_with_namespaces(doc, [
|