-
Notifications
You must be signed in to change notification settings - Fork 218
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
feat: 110268 111686 get questionnaire order periodically #7153
feat: 110268 111686 get questionnaire order periodically #7153
Conversation
@@ -138,6 +138,7 @@ | |||
"next-superjson": "^0.0.4", | |||
"next-themes": "^0.2.0", | |||
"nocache": "^3.0.1", | |||
"node-cron": "^3.0.2", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
node 内の cron job 実行のために追加しました。
LICENSE 的に使って大丈夫だと思っています。
THIRD-PARTY-NOTICES はほぼ武井さんしかいじっていなかったので一旦いじりませんでした。
const getRandomInt = (min: number, max: number): number => { | ||
const minInt = Math.ceil(min); | ||
const maxInt = Math.floor(max); | ||
return Math.floor(Math.random() * (maxInt - minInt) + minInt); | ||
}; | ||
|
||
const sleep = msec => new Promise(resolve => setTimeout(resolve, msec)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
どっかの /utils あたりにファイル作って移動したいです
@@ -646,6 +646,24 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = { | |||
type: ValueType.STRING, | |||
default: null, | |||
}, | |||
GROWI_QUESTIONNAIRE_URI: { | |||
ns: 'crowi', | |||
key: 'app:growiQuestionnaireUri', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GROWI_QUESTIONNAIRE_SERVER_ORIGIN
の方が直接的でいいかなと思います
constructor(crowi) { | ||
this.growiQuestionnaireUri = crowi.configManager?.getConfig('crowi', 'app:growiQuestionnaireUri'); | ||
this.cronSchedule = crowi.configManager?.getConfig('crowi', 'app:questionnaireCronSchedule'); | ||
this.maxHoursUntilRequest = crowi.configManager?.getConfig('crowi', 'app:questionnaireCronMaxHoursUntilRequest'); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
今回の場合は環境変数でしか設定値を変更しないので大丈夫なのですが、コンストラクタで設定値を初期化してしまうと、設定値を UI 上で変更可能にした場合などに対応できなくなってしまうので、使う時に取得するのがいいかと思います
await sleep(secToSleep * 1000); | ||
|
||
try { | ||
const response = await axios.get(`${this.growiQuestionnaireUri}/questionnaire-order/index`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
axios-retry
を使うと簡単にリトライできるので、もし余裕あれば変更お願いします。既に GROWI で使われてます
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
softonic/axios-retry#159
custom axios instance を使おうとするとエラーが起こるみたいで、growi で現在使われている場所と同じく、default の axios を使うようにしました。
const client = require('axios').default; |
review task: https://redmine.weseek.co.jp/issues/112130
実装内容
備考
一旦方針確認をしたいので、テストはその後に書きます。
weseek/growi にブランチ作成をすることができなかったので、collaborator ヘの追加、もしくは topic branch (feat/questionnaire など) の作成をお願いしてもよろしいでしょうか。一旦自分の fork から、master への draft PR で出しています。