公共交通機関向けの発券システム
フロントエンド(クライアント側)はReact JSを使用して開発され、バックエンド(サーバー側)はNode JSとExpress JSを使用して開発される、公共交通ネットワーク用の発券システムです。この Web アプリケーションは、クロスプラットフォームのドキュメント指向データベースである MongoDB をデータベースとして使用します。
ユーザーはシステムに登録できます。確認メールが乗客のメールアドレスに送信されます。システムにログインする前にそれを確認する必要があります。登録後、乗客は電子メールとパスワードを使用してシステムにログインでき、それ以外の場合はソーシャル ログインを使用できます。管理者は、メイン管理者から提供された電子メールとパスワードを入力することで、同じログインを使用してシステムにログインすることもできます。
メイン管理者が管理者を作成すると、作成された管理者には確認メールが送信され、乗客の場合も登録されると、アカウントをアクティブ化するための確認メールが送信されます。
プロフィールを使用して、予約履歴を表示できます。登録ユーザーと未登録ユーザーの両方が、予約の費用を表示できます。ただし、予約を確認できるのはログインしたユーザーのみです。予約が確認されると、予約の詳細とその予約の一意の QR コードが記載された電子メールがユーザーに送信されます。ユーザーは駅で QR コードをスキャンしてチケットを取得できます。電車に乗車するときに QR コードをスキャンする必要があり、旅行の終わりにもう一度 QR コードをスキャンして目的地駅と出発駅を確認する必要があります。 QR コードと実際の出発駅が一致しない場合、乗客は追加料金を支払う必要があります。
また、電車のルート、駅の詳細、電車の詳細、ユーザーを管理するための管理パネルも実装しました。鉄道管理者は、列車ごとにフィルタリングされた月次および年次の財務レポートを生成できます。
このアプリケーションは、Model-View-Controller (MVC) アーキテクチャに従っています。ビューは、複合ビュー パターンを使用する ReactJS を使用して実装されます。コントローラーとモデルは Node.js を使用して実装され、MongoDB NoSQL データベースがバックエンドに接続されます。フロントエンドとバックエンドは、REST API 呼び出しを通じて通信します。
仕様書の改善として、Google APIを利用したソーシャルサインアップ機能を追加しました。仕様文書に記載されているように、ユーザーはユーザー インターフェイスを使用してシステムに詳細を提供する必要があります。また、当社のシステムでは現在、乗客の電子メールアドレスに電子メールが送信されるよう、乗客の電子メールアドレスを検証中です。乗客はまずそれを確認する必要があります。それは乗客にとって余分な仕事だ。そこで、ソーシャル ログインを追加することで、その余分なタスクを削減しました。そのため、ユーザーは電子メール、姓名などを手動で入力する必要がありません。Google アカウントを通じて簡単にログインできます。
このアプリケーションでは、ユーザーは予約の詳細を入力し、現在の空席状況を確認して予約を行うことができます。私たちのアプリケーションは、以前に行われた予約を追跡し、ユーザーが予約しようとしている時点で実際に利用可能な座席を表示します。予約を行う際、ユーザーは出発地と目的地の場所、列車、クラス、時刻、チケットの枚数、予約日を追加する必要があります。データが入力されると、アプリケーションは同じ列車の日時の以前の予約を取得し、列車の座席数を差し引きます。
ユーザーがアプリケーション用に作成されたアカウントを持っていない場合でも、空席状況を表示できます。ユーザーが予約を行うには、アカウントが必要です。
ユーザーが予約を行うと、アプリケーションは予約を追跡するための QR コードを生成します。その後、予約の詳細と生成された QR コードが記載された電子メールがユーザーの電子メールに送信され、鉄道駅でチケットを印刷するために使用されます。また、システムはユーザーの登録された携帯電話番号に予約の詳細を記載したテキスト メッセージを送信します。
これは、アプリケーションに導入された新機能です。ユーザーが公務員の場合、特別割引を受けることができます。ユーザーが登録時に NIC を提供すると、政府の Web サービスを使用してその NIC が検証され、ユーザーが割引を受ける資格があることが確認されます。ユーザーが割引の対象となる場合、予約に割引が追加されます。
このアプリケーションの仕様上、直接支払い方法はありません。仕様によれば、ユーザーはアカウントにチャージしてから予約料金を支払う必要があります。これには追加のユーザー操作が含まれ、アプリケーションの使いやすさが低下します。
そこで、直接支払い方法と現金による支払いオプションを追加しました。ユーザーは予約時に任意のオプションを選択できます。ユーザーがカードを選択した場合、ユーザーは有効なカードの詳細を追加する必要があります。または、現金での支払いを選択して駅で支払うこともできます。
仕様の改善として、ユーザー管理セクションにはユーザーのリストがあり、管理者はそのリストから特定のユーザーを無効にすることができます。無効にすると、ユーザーは資格情報を使用してアカウントにアクセスできなくなります。エラーメッセージがユーザーに表示されます。この機能を追加したのは、乗客が何らかの不正行為をした場合に、そのユーザーをシステムから無効にする方法が必要だからです。仕様には、ユーザーを無効にする方法はありませんでした。
仕様のもう 1 つの改良点として、管理者は乗客アカウントを編集できるようになりました。彼らのメールなど。ユーザー ビューでは、ユーザーは自分の電子メール アドレスを変更できません。ただし、特別なリクエストが乗客からのものである場合、管理者は特定の乗客の電子メール アドレスやその他の詳細を更新できます。
元の設計では、マネージャーがシステムに別のマネージャーを追加またはシステムから削除する機能はありません。そのため、社内でマネージャーの数が増減した場合でも、新しいマネージャーを追加したり、システムから既存のマネージャーを削除したりすることはできません。
そのため、仕様の改善として、管理者がシステムに別の管理者を追加またはシステムから削除できる新しい機能が管理者パネルに追加されました。したがって、管理者がシステムに新たに追加されると、管理者は、管理者がシステムに管理者として追加され、ログインする必要があることを示す電子メールを、管理者の登録時に提供されたそれぞれの電子メールに受信します。 NC 番号を使用してシステムに接続します。登録後、管理者パネルのアカウント設定を使用してパスワードを変更できます。
当初の設計では、鉄道運輸管理者が時刻表を計画できるようにする必要があると述べられていたため、独自の路線名を使用してさまざまな路線を管理し、その路線に含まれる駅を関連フェアに割り当てるためのインターフェースを提供しました。鉄道輸送管理の路線管理で利用できる機能は次のとおりです。
元の設計では、鉄道輸送管理者がシステムを通じて列車を管理する必要があるとは言及されていませんでしたが、追加機能として、一意の列車名を使用して列車を管理し、その列車のさまざまなクラスの座席を割り当て、割り当てを行うためのインターフェイスも作成しました。列車が運行するルート。以下は、鉄道輸送管理のために Train Management で利用できる機能です。
図_9: トレインの作成当初の設計では、鉄道輸送管理者が予約の詳細を処理してレポートを生成できるようにする必要があると述べられていました。そこで、各列車が生み出す収益に関する月次および年次レポートを生成する機能を追加しました。その後、レポートのビューとして円グラフと棒グラフの 2 つのビューを実装しました。鉄道輸送管理のレポート管理で利用できる機能は次のとおりです。
以下のようなエラーが発生した場合、それはバックエンド サービスのせいではありません。この問題は、一部のウイルス ガード アプリケーションが「nodemailer」電子メール サービスをブロックするために発生します。
{ Error: self signed certificate in certificate chain
at TLSSocket . < anonymous > ( _tls_wrap . js : 1105 : 38 )
at emitNone ( events . js : 106 : 13 )
at TLSSocket . emit ( events . js : 208 : 7 )
at TLSSocket . _finishInit ( _tls_wrap . js : 639 : 8 )
at TLSWrap . ssl . onhandshakedone ( _tls_wrap . js : 469 : 38 ) code: 'ESOCKET' ,
command : 'CONN' }
これはアバスト アンチウイルスでよくある問題ですが、この問題は ESET と Kaspersky では発生しません。
https://stackoverflow.com でも問題を質問しました。また、バックエンド サービスを実行するときにウイルス ガードを無効にすることも推奨しています。
このようなエラーが発生した場合は、ウイルス ガードを無効にして、もう一度試してください。いずれにしても、エラーが発生しても予約プロセスは中止されません。
以下のようなエラーが発生する場合、Twilio の無料トライアルを使用しているために発生します。入力された携帯電話番号は、その番号にメッセージを送信する前に Twilio ダッシュボードで検証される必要があります。有料の Twilio アカウントをお持ちの場合は、バックエンドの「config.json」ファイルにアカウントの詳細を追加してください。
{ [Error: The number +94777123456 is unverified . Trial accounts cannot send messages to unverified numbers ; verify + 94777123456 at twilio . com / user / account / phonenumbers / verified , or purchase a Twilio number to send messages to unverified numbers .]
status : 400 ,
message : 'The number +94777123456 is unverified. Trial accounts cannot send messages to unverified numbers; verify +94777123456 at twilio.com/user/account/phonenumbers/verified, or purchase a Twilio number to send messages to unverified numbers.' ,
code : 21608 ,
moreInfo : 'https: //www.twilio.com/docs/errors/21608',
detail: undefined }
現時点ではこのソリューションを鉄道に導入していますが、このソリューションをバスでも使用できるように拡張する予定です。
私たちは、鉄道とバスにライブ追跡システムを導入して、乗客がバスと電車が駅に到着する正確な時間を知ることができ、乗客の時間を節約するというアイデアを持っています。
現時点では、仕様書に記載されている現金補充ソリューションを実装するのは現実的ではありません。
(C)2019 てぬしゃグルゲ
tenusha.wordpress.com