良い一日habrosociety!
過去数年間、主にオンラインストアの開発とサポートを行ってきました。 この間、私は多くの興味深いタスクを解決しました。
かつて、以前の顧客の1人のオフィスを訪れ、新しい商品アイテムの追加に携わっているマネージャーがどのように苦しめられているのかを見ました。 これをすべて見て、私はこのタスクをできるだけ簡単にしようと考えました。 そして、これはそれから来たものです。 この記事では、アイデアを実際に適用した結果とその結果について簡単に説明します。 ソースコードをアップロードしません。なぜなら、 これが顧客の主な要件です。 以下のすべてがphpおよびpostgresqlに実装されています。
1.最初に、製品をデータベースに追加する必要があります。 これは通常このように起こります。 利用可能なすべての商品アイテムを含むExcelファイルがサプライヤから提供され、管理者はそれらを細心の注意を払ってデータベースに入力し始めます。
この段階から始めることにしました。 なぜあなたの手を詰まらせますか、すでにデジタル化されているものは何ですか? サプライヤからこの同じファイルが供給されるスクリプトが数時間作成され、出力でデータベースに新しい製品が追加されます。 数時間のうちに、パターンを理解するためにこのスクリプトを教えました。 どの列からどの情報を取得するか。 その後、ファイルを処理するために、Excelプレートに加えて、テンプレートファイルも示されました。 ここで、最も難しいことは、どのカテゴリでどの製品をスローするかを理解するようにスクリプトを教えることでした。 この問題を解決するために、テンプレートを含むファイルで、データベースにある連絡先、サプライヤーのカテゴリーを含むプレートをカテゴリーに追加します。 そして、商品を含むほとんどすべてのExcelファイルがデータベースにすばやく追加されます。 将来的には、データベースに追加する前に、何を追加し、何を追加しないかをユーザーに尋ねるように、中間ページを追加することを考えています。 価格を解析し、データベースに何を入れ、何を入れないかをチェックマークを付ける(またはその逆を行う)ことができるフォームを表示します。 このフォームに製品名とカテゴリを編集する機能を追加することもできます。 一般的に、これは新しいものでもスマートなものでもありませんが、既成のソリューションを見たことはありません。 この機能を備えたほとんどのパーサーは、特定の入力データ形式に合わせて調整されており、簡単に構成することはできません。 この時点で、すべて。 さらに進めましょう!
2.次のステップは、新しく到着した商品の写真を見つけることです。 悲しいことでしょうが、自分の倉庫を持たないほとんどの店(または大多数)はインターネットから写真を取得します。 私がこれを見たとき、決定はすぐに来ました。 小さなスクリプトが作成され、データベースから新しい製品が取得され、そのモデルが選択され、画像検索サービスへのリクエストが融合されます。 次に、検索結果を含むhtmlページを解析します。検索エンジンが見つけた写真を見つけて、すべて表示します。 ユーザーは適切な画像を選択し、保存ボタンをクリックするだけです。 要するに、このソリューションは、各製品のマネージャーを約3〜5分節約します。 他の人の写真を撮るのはあまり良くないことを理解しています。 しかし、第一に、これは私の助けなしに起こりました。そして第二に、素材を横に置きたくないすべてのサイトは、単に透かしの形で保護を追加します。
3.製品があり、この製品の写真が見つかったら、この製品の説明のみを作成できます。 個人的にはテキストの説明を書くべきだと思いますが、ここには迅速で有用な解決策はありません。 しかし、テキストによる説明に加えて、技術的特性もあり、これらの技術的特性はすべて同じです。つまり、10店舗が同じ製品を販売している場合、この製品の技術的特性はすべて同じであるか、少なくとも互いに矛盾しない必要があります友人に。
ほとんどの場合、これらの仕様はパラメータとその値のセットです。 この問題に関して、オンラインストアのオフィスで私は何を見ましたか? 毎日、2人のマネージャーが座って、メーカーのWebサイトおよびYandexマーケットなどのカタログからこれらの特性を非常に慎重にコピーします。 これらのキットはさまざまな方法で保管されており、愚かなコピー&ペーストではここでできないという事実により、状況は複雑になっています。 たとえば、オーブンの寸法は、そのようなパラメーターとその値の形式で保存できます:サイズ:120x80x100、ただし、サイズを独自のパラメーターでペイントしたり、意味が同一のパラメーターを別の方法で呼び出すことができます。 したがって、非常に丁寧で訓練を受けたマネージャーでさえ、すべてのパラメーターを1日あたり30から40を超える製品にコピーすることはできません。 さらに、すべてのパラメーター値のセットをある製品から別の製品にコピーする、またはこのパラメーター値をこのカテゴリーのすべての製品に適用するなどの素晴らしいボタンは、この問題を根本的に解決しません。
本当に「車輪を再発明する」必要がありました。 最初に思いついたのは、ソースサイトからパラメーターのセットとその値を自動的にプルし、ソースサイトのパラメーターとデータベースのパラメーターの対応を選択するようマネージャーに提案するパーサーを記述することでしたが、そこで停止しないことにしました。 マネージャーが通信を選択した後、同じパラメーターにつまずいたときにそれを覚えていないのに、なぜこの通信を自動的に提案するのですか? ほとんどの製品は同じタイプであり、たとえば、3-4個のパラメーターだけが互いに異なる10個の製品が存在する可能性があるため、2つまたは3つの製品を貼り付けた後、残りについてはこれらの一致を視覚的に確認し、すぐに保存ボタンをクリックするだけです。 結果は、技術仕様の非常にかわいいパーサーでした。 これを使用して、1人のマネージャーが1日あたり100〜120個の商品を処理するようになりました。これは、初期指標の約3〜4倍です。
解析パラメータ
このパーサーを開発するとき、私はすぐにパーサーロジックとインターフェイスロジックを分離しました。新しいソースサイトを追加するには、新しいソースの場所と内容を記述するだけで十分です。 また、センチメートルをミリメートルに変換するなど、あらゆる種類の楽しい「パン」が追加されました(私がこれをすべて行ったサイトでは、すべてのサイズは通常ミリメートルで保存されます)。
上記のすべてのトリックの後、1つの製品を追加する合計時間が15〜20分から3〜5分に短縮されました。 実装と実装に約4日間を費やしました。 2000〜3000個の商品の追加について話しているという事実を考えると、その利点は明らかです。