Основная задача

Имеется рабочий прототип интернет-магазина автозапчастей, написанный на Python. Функциональность реализована частично, сайт требует доработок для корректной работы с данными и последующего выхода в публичный доступ. Ключевая цель - интегрировать данные из файлов формата .dbf в базу данных магазина и обеспечить их правильное отображение.

Технические этапы доработки

1. Загрузка производителей (брендов)

Требуется реализовать импорт списка производителей номенклатуры (брендов) из файла конфигурации (.dbf). Ожидается загрузка около 2 800 записей. Необходимо настроить уникальность для избежания дубликатов.

2. Загрузка основной номенклатуры (товаров)

Необходимо корректно загрузить основной каталог из того же формата. Размер каталога: до 200 000 товарных позиций.

Поля товара (пример): артикул, наименование, цена, остаток на складе, ставка НДС, и другие, характерные для запчастей.

3. Связь с производителями и аналогами

После загрузки товаров необходимо привязать их к брендам (поле Бренд / ArhancodeID) и настроить отображение аналогов. Товар должен искаться как по оригинальным, так и по аналогичным артикулам (OEM-номера).

Формат данных и структура

  • Производители: файл 'arhanc.db' (2 800 строк). Основные поля: ID бренда (код), краткое наименование, полное наименование.
  • Товары: размер файла ~200 000 строк. Связь с брендом через поле-идентификатор (кодовое имя). Содержит прайс-лист.
  • Аналоги: до 450 000 записей. Представляют собой связки типа: [ID Номенклатуры] -> [OEM-номер аналога] по конкретному товару. Необходимо предусмотреть вывод списка замен / кросс-номеров на карточке товара.

Дальнейшее развитие и специфика проекта

После внедрения базового функционала (импорта и отображения) планируется публичный запуск сайта.

Что нужно предусмотреть в разработке

  • SEO-оптимизация. Возможность редактировать заголовки () и мета-описания (description) для каждого товара. Наличие человеко-понятного URL (ЧПУ).</li><li><strong>Функционал фильтров.</strong> Поиск по артикулу, бренду, цене, аналогам.</li><li><strong>Производительность.</strong> Ввиду большого каталога быстрый поиск (возможно с использованием sphinx/fulltext или Elastic). Отказ от прямой вычитки всей базы при каждом запросе пользователя.</li><li><strong>Административная панель.</strong> Возможность главному администратору прописывать мета-теги, title, отключать неактуальное использование Django.</li></ul><div class='hint'></div><h2>Формат исполнения</h2><ul><li>Код (Github / ссылка) + Docker Compose (или выкладка тестового доступа) для тестирования функционала.</li><li>Файлы конфигураций с разъяснением запуска.</li><li>Возможная дальнейшая стыковка со службами доставки / рассылками не рассматривается, но дял масштабируемости.</li></ul> </div> <div class="random-offers"> <article class="card"> <div class="card-body"> <div class="meta"> <span><a href="/categories/razmeschenie-206">размещение</a></span> </div> <h3> <a href="/offers/razmeschenie-obyavleniya-na-avito-21864">Размещение объявления на Авито</a></h3> <p>Требуется специалист для публикации готового объявления на площадке Авито. Все материалы предоставлены. Оплата по факту выполнения работы.</p> </div> </article> <article class="card"> <div class="card-body"> <div class="meta"> <span><a href="/categories/dizayn-8">дизайн</a></span> </div> <h3> <a href="/offers/razrabotka-3d-modeley-aksessuarov-dlya-kukly-ob11-45743">Разработка 3D-моделей аксессуаров для куклы OB11</a></h3> <p>Требуется создать 3D-модели хвоста, рогов и ошейника для последующей 3D-печати. Модели должны быть адаптированы для крепления к кукле формата OB11. Заказчик предоставит эскизы и размеры.</p> </div> </article> <article class="card"> <div class="card-body"> <div class="meta"> <span><a href="/categories/prodvizhenie-saytov-9">продвижение сайтов</a></span> </div> <h3> <a href="/offers/vyvod-kartochki-kompanii-na-top-yandeks-kart-v-nishe-arendy-avto-98384">Вывод карточки компании на топ Яндекс Карт в нише аренды авто</a></h3> <p>Консультация по обходу модерации названия карточки в Яндекс Бизнесе и рекомендации по продвижению организации в топ результатов для рубрики «Аренда авто» в Таиланде.</p> </div> </article> </div> </div> </main> <!-- Footer --> <footer id="contacts"> <div class="container" style="display:grid; gap:14px"> <div style="display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap"> <div class="ft-row"> <div class="logo" style="margin-bottom:8px"> <div class="logo-badge">F</div> <span>flaks.pro</span> </div> </div> <div class="nav" style="display:flex; gap:14px; flex-wrap:wrap"> <a onclick="gogogo('/')" href="#">Главная</a> <a onclick="gogogo('/blogs')" href="#">Блог</a> <a onclick="gogogo('/auth')" href="#">Войти</a> </div> </div> <div class="ft-row right-float"> <small> <a onclick="gogogo('/agreements/soglasie-na-obrabotku-personalnyh-dannyh')" href="#">Согласие на обработку персональных данных</a></small> <small> <a onclick="gogogo('/agreements/polzovatelskoe-soglashenie')" href="#">Пользовательское соглашение</a></small> <small> <a onclick="gogogo('/agreements/politika-konfidentsialnosti')" href="#">Политика конфиденциальности</a></small> </div> <div class="ft-row"> <small>© <span id="year">2025</span> flaks. Все права защищены.</small> <small>Поддержка: <a href="mailto:support@flaks.pro">support@flaks.pro</a></small> </div> </div> </footer> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function(m,e,t,r,i,k,a){ m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a) })(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id=105693587', 'ym'); ym(105693587, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", accurateTrackBounce:true, trackLinks:true}); </script> <noscript><div><img src="https://mc.yandex.ru/watch/105693587" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </body> </html>