カード名称が重複する[ルミナススター]北条加蓮に対応しました

10月9日に追加された[ルミナススター]北条加蓮への対応を行いました。(issue #23)

ここ数日にわたり、システムの部分停止や不正な表示などにかかわる複数のご指摘をしてくださり、誠にありがとうございました。残念ながらまだ不良は残っていると思いますので、もしお気づきの点がありましたらTwitterにてリプライで教えていただけますと幸甚です。

変更点

  1. 2020年10月に追加された[ルミナススター]北条加蓮および[ルミナススター]北条加蓮+は、カード名称をそれぞれ[ルミナススター]北条加蓮(2020)、[ルミナススター]北条加蓮(2020)+としました。これはMobage上の資料室の名称とは異なりますが、フリートレードページなど、一部の機能での表記に準拠しています。
    • つまりシステムとしては、引き続きカード名称の重複を許容していません。この前提を変更すると、テーブル定義の変更では足らず、「カード名称は絶対一意でない」という前提で作られている箇所があり、アプリ内でもC#でいうIDictionary、JavaでいうHashMapのキーに要所要所で使われてるため、影響範囲があまりにも甚大なので無理でした。
  2. カードに「別名」をもたせました。前項の2020年版の[ルミナススター]の特訓前後は、別名を[ルミナススター]北条加蓮(+)としています。
    1. カード明細ページで、別名が存在するカードは名称と別名を併記するようにしました。
    2. カード詳細検索で、別名の表示および別名での検索をできるようにしました。
    3. APIのカード /api/v2/cards/[cardHash?] において、別名を取得できるようにしました。
  3. 【内部仕様】カード名称からのアイドル情報パースにあたり、[]で囲まれたプレフィクス後のアイドル名を、完全一致から、アイドル名の集合に対する前方一致マッチングに変更しました。
    これまでの仕様では、「[ルミナススター]北条加蓮(2020)+」のようなカード名の場合、
     プレフィクス:ルミナススター
     アイドル名:北条加蓮(2020) ※そんなアイドルはいないのでパースに失敗する
     特訓前後:特訓後
    と判定してしまっていました。
  4. 【内部仕様】カード名称でカードを照合する処理において、これまでのカード名称での単純照合から、「優先:カード名称に設定されているカード」「優先条件で一致しない場合の劣後:カード別名に設定されているカード」の二段階照合に変更しました。