Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ALIS-1138: 違反報告APIの拡張 #138

Open
wants to merge 20 commits into
base: develop
Choose a base branch
from

Conversation

ippei-fukamatsu
Copy link
Contributor

@ippei-fukamatsu ippei-fukamatsu commented Jul 25, 2018

概要

現状記事に対して違反しているというデータしか持っていないが、
申告者がより詳細に報告をできるよう、APIの受け口を広げました。
追加項目

  • 申告理由(必須)
  • 元記事URL(申告理由が著作権違反の場合必須)
  • 補足説明(申告理由が著作権違反の場合必須)
  • 不正内容(申告理由が不正なトークン取得の場合必須)

環境変数(SSMパラメータ)

なし

関連URL

影響範囲(ユーザ)

  • ユーザー

影響範囲(システム)

  • 影響を与えるシステムはどこか
  • サーバレス

技術的変更点概要

  • なにをどう変更したか
    当該APIのリクエストにJSONで受け取れるように受け皿を作り、データ登録時の項目を増やした

  • memo: 複合条件での入力チェックについて
    今回の場合、例えば申告理由が著作権違反の場合は、元記事URLと補足説明を必須にする必要があると考えた。
    その複合条件のチェックをjsonschemaでやろうと調べまくったが、結論本家のバージョンdraft-07から開始したらしい。。
    (Pythonライブラリのjsonschemaはdraft-6までをサポート)
    悲しいが今回は自作しました。
    →諦めきれずにもう少し調べたが、仕様に合う形でどうしてもできず、スピード優先で結局自作しました。。

参考URL
https://github.com/Julian/jsonschema
http://json-schema.org/draft-07/json-schema-release-notes.html
https://stackoverflow.com/questions/38717933/jsonschema-attribute-conditionally-required

使い方

  • 使い方の説明
  • バグの場合は再現条件

DBやDBへのクエリに対する変更

  • DBのスキーマに変更があるか
項目名 データ型 概要/用途
reason String 申告理由(Enum)
violence(公序良俗に反する)
spam(迷惑行為)
plagiarism(著作権違反)
slander(誹謗中傷)
illegal(トークン不正取得)
other(その他)
plagiarism_url String 盗作した元記事URL
plagiarism_description String 盗作に関する補足説明
illegal_content String 申告内容の詳細説明

ブロックチェーンへの影響

なし

個人情報の取り扱いに変更のあるリリースか

なし

ロギング

なし

ユニットテスト

あり

テスト結果とテスト項目

  • 違反申告APIに対してPOSTリクエストを行い、ArticleFraudUserテーブルに登録されることを確認する
https://ippei.alis-test.tk/api/me/articles/${article_id}/fraud

bodyパラメーター
{
	"reason": "plagiarism",
	"plagiarism_url": "http://test-pepepe.com"
}

保留した項目とTODOリスト

注意点・その他

  • この作業で特に注意する点があれば記載する
  • その他、補足事項があれば記載する

@ippei-fukamatsu ippei-fukamatsu mentioned this pull request Jul 25, 2018
2 tasks
'reason': {'enum': settings.FRAUD_REASONS}
}
}
],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(リファクタ)
今回の場合はチェック処理を手動(L78〜)で記載頂いているので anyOf で書く必要はありません。
また、reson の記載が L18 と L26 で複数定義になっており分かりにくいため、特に意図がなければ enum の設定も setting.py に直接記載するようお願いします。

まとめると、下記の3点について修正をお願いしますm(_ _)m
・anyOf の記載(L23〜29) を削除
・setting.py L92 に下記を追加

'enum': [
    'violence',
    'spam',
    'plagiarism',
    'slander',
    'illegal',
    'other'
]

・setting.py L172 を削除

}
}
}
return basic_params
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(テストケース追加)
現在各パラメータに対して none な場合についてはチェック頂いていますが、空文字列の観点が入っていない状態です。
jsonschema ではなく 独自に実装したチェック処理については(me_articles_fraud_create.py L78~) 各パラメータに対しても空文字チェックを追加で実施頂くようお願いします。

@ippei-fukamatsu ippei-fukamatsu force-pushed the ALIS-1138_extend-fraud-create branch from 01da406 to c3a40b5 Compare July 30, 2018 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants