Spec - Extension
extensionのメニューについて
extensionは以下の3つのメニューを提供する。
- 調整計画のシート作成
- 調整計画の管理機能表示
- シートの使い方
sheetの種類について
扱うsheetの種類は以下の3つとする。
plan sheet- ユーザーが日々計画を更新・提出するシート
- シート名は
計画: ${サイト名} ${期間開始のYYYY-MM-DD} ${期間終了のYYYY-MM-DD}とする。 - サイトと期間は変更不可とする。サイトと期間ごとに100シートまで複数作成することができる。サイトと期間の組み合わせでユニークでない場合の動作は保証しない。
plan error sheet- ユーザーが計画提出時のエラーの詳細を確認するシート
- シート名は
計画提出エラー: ${サイト名} ${期間開始のYYYY-MM-DD} ${期間終了のYYYY-MM-DD}とする。 plan sheetからの提出処理でエラーがあった場合に、このシートが作成される。各plan sheet毎に0から1つ作成される。plan error sheetは必ず対応するplan sheetの右に配置する。
template sheet- システムが内部で
plan sheetの作成に使用するシート - シート名は
テンプレートとする。 - 新しい
plan sheetを作成するためのテンプレートで、protected状態でかならず後ろに配置し、ユーザーに変更されるリスクを減らす。
- システムが内部で
シートの順序は以下とする。どんな順序でもバグなく動作することを目指すが以下の順序が望ましい。
| 順序 | 種類 |
|---|---|
| middle | plan sheet or plan error sheet |
| last | template sheet |
今後以下の種類が追加される可能性がある。
dashboard sheet- サイトもしくはplan sheetをまたいだ集計値やグラフを表示するシート。
- いくら儲かるか、順調に運用できているかどうかを確認するために使用する。
調整計画のシート作成のフローについて
plan sheetの作成はextensionの新規作成画面から行う。plan sheetを作成するときに設定画面で設定する項目は以下とする。
- サイト
- 選択可能なサイトは、ログインユーザーがアクセス権限があるサイトのみとする。
- 検索可能なセレクトボックスを使用してサイトを選択する。
- 開始日
- date pickerを使用して指定する。
- 終了日
- date pickerを使用して指定する。
(終了日 - 開始日) <= 3ヶ月とする。
plan sheetの作成フローは以下とする。
- ユーザーがサイトと開始日と終了日を選択し、「作成」ボタンを押す。
templateからコピーして現在のシートの右に新しいシートを作成する。- このとき新しいシートがactiveにならない。
- 該当のサイトと期間でサーバーからデータを取得する。
- 当日の該当ブロックの行をactiveにする。
- 新しいシートのシート名を変更する。
- すべての初期化が終わったあとに新しいシートがactiveになる。
既存のplan sheetをspreadsheetのcopy機能を使ってcopyした場合は、サイトと期間は変更できない。
調整計画の提出について
提出はExtensionから行う。
提出時にエラーがあった場合の挙動は以下とする。
- エラーがあった最初の行にjumpする。
- エラーがあった行の状態を
要修正にする。 - 提出ボタンの上に以下を配置する。
- エラー用の
plan error sheetへのリンク - 次のエラー行へのリンク
- エラー用の
以下の使い方を想定している。
- 使い方に慣れている場合
- エラー用の
plan error sheetを見ずに、次のエラー行へのリンクを押しながら最速で修正する
- エラー用の
- 使い方に慣れていない場合
- エラー用の
plan error sheetを見て、1つずつエラー内容を吟味して修正する。
- エラー用の
調整計画の取り込みについて
ゲートクローズが30分おきに起こるので、シートの内容が30分おきに古くなる可能性がある。そのため、毎朝仕事を始めるときに手動で取り込みしたい。このユースケースで使用する。
調整計画のカラムの仕様について
カラム一覧は以下:
| 名前 | 識別子 | 列 | タイプ | 権限 |
|---|---|---|---|---|
| 実需給日 | block_date |
A | Date | 書き込み |
| ブロック番号 | block_code |
B | Text | 書き込み |
| 状態 | status |
C | Dropdown | 読み取り専用 |
| 状態 - 入札 | market_action_status |
D | Dropdown | 読み取り専用 |
| アクション - 入札 | market_action |
E | Dropdown | 書き込み |
| アクション - サイト制御 | site_action |
F | Dropdown | 書き込み |
| 入札(kW or kWh) | market_order_quantity |
G | Number | 書き込み |
| 入札の単価の下限(円/kWh) | market_order_min_price |
H | Number | 書き込み |
| 入札の単価の上限(円/kWh) | market_order_max_price |
I | Number | 書き込み |
| 入札の単価のデルタ(円/kWh) | market_order_delta_price |
J | Number | 書き込み |
| サイト制御のSoCの計画(%) | site_control_soc_plan |
K | Number | 書き込み |
| 入札の約定量 | market_exec_quantity |
L | Number | 読み取り専用 |
| 入札の約定金額 | market_exec_price |
M | Number | 読み取り専用 |
| サイト制御の結果 | site_action_status |
N | Text | 読み取り専用 |
| サイト制御のSoCの実績(%) | site_control_soc_actual |
O | Number | 読み取り専用 |
各カラムごとの仕様は以下:
実需給日 (A列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
Is valid date
- Backend:
- ISO 8601形式(YYYY-MM-DD)のチェック
- 過去日付/未来日付の制限
ブロック番号 (B列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
=REGEXMATCH(B2, "^(0[1-9]|[1-3][0-9]|4[0-8]) - ([0-1][0-9]|2[0-3]):[0-5][0-9]$")- 形式:
ブロック番号 - 開始時刻(例:01 - 00:00,07 - 03:00,48 - 23:30)
- Backend:
- 01-48の範囲チェック
状態 (C列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
項目の詳細は以下:
| 名前 | 識別子 | 色 |
|---|---|---|
| 確定 | FIXED |
close to light green 5 |
| 変更あり | NOT_SUBMITTED |
close to light cornflower blue 3 |
| 要修正 | NEEDS_FIX |
close to light red 3 |
| 提出済み | SUBMITTED |
close to light purple 3 |
状態 - 入札 (D列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
項目の詳細は以下:
| 名前 | 識別子 | 色 |
|---|---|---|
| 入札前 | PRE_BID |
close to light green 5 |
| 入札中 | BIDDING |
close to light cornflower blue 3 |
| 約定 - 失敗 | EXEC_FAILED |
close to light red 3 |
| 約定 - 一部約定 | EXEC_PARTIAL |
close to light yellow 2 |
| 約定 - 全約定 | EXEC_FULL |
close to light purple 3 |
アクション - 入札 (E列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- 許可された選択肢のみ入力可能
- Backend:
- ENUM値との照合
項目の詳細は以下:
| 名前 | 識別子 | 色 |
|---|---|---|
| アクションなし | NO_ACTION |
close to light green 5 |
| JEPXスポット買注文 | JEPX_BUY_ORDER_ON_SPOT |
close to light red 3 |
| JEPXスポット売注文 | JEPX_SELL_ORDER_ON_SPOT |
close to light orange 14 |
| JEPX時間前買注文 | JEPX_BUY_ORDER_ON_INTRADAY |
close to light yellow 2 |
| JEPX時間前売注文 | JEPX_SELL_ORDER_ON_INTRADAY |
close to light green 3 |
| EPRX三次調整力②注文 | EPRX_ORDER_ON_TERTIARY_2 |
close to light cornflower blue 3 |
| EPRX一次調整力注文 | EPRX_ORDER_ON_PRIMARY |
close to light cyan 3 |
| EPRX一次+二次2注文 | EPRX_ORDER_ON_COMPOUND__P_AND_S2 |
close to light purple 3 |
| EPRX一次+三次1注文 | EPRX_ORDER_ON_COMPOUND__P_AND_T1 |
close to light purple 3 |
| EPRX一次+二次2+三次1注文 | EPRX_ORDER_ON_COMPOUND__P_AND_S2_AND_T1 |
close to light purple 3 |
| EPRX二次2+三次1注文 | EPRX_ORDER_ON_COMPOUND__S2_AND_T1 |
close to light purple 3 |
アクション - サイト制御 (F列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- 許可された選択肢のみ入力可能
- Backend:
- ENUM値との照合
項目の詳細は以下:
| 名前 | 識別子 | 色 |
|---|---|---|
| アクションなし | NO_ACTION |
close to light green 5 |
| SOC制御 | SOC_CONTROL |
close to light red 3 |
| 正方向流量制御 | FORWARD_FLOW_QUANT_CONTROL |
close to light orange 14 |
| 逆方向流量制御 | REVERSE_FLOW_QUANT_CONTROL |
close to light yellow 2 |
| 入札量による正方向流量制御 | FORWARD_FLOW_QUANT_CONTROL_BY_ORDER_QUANTITY |
close to light orange 14 |
| 入札量による逆方向流量制御 | REVERSE_FLOW_QUANT_CONTROL_BY_ORDER_QUANTITY |
close to light yellow 2 |
| 系統指令による流量制御 | FORWARD_OR_REVERSE_FLOW_CONTROL_BY_TSO_ORDER |
close to light green 3 |
| 周波数変化による流量制御 | FORWARD_OR_REVERSE_FLOW_CONTROL_BY_FREQUENCY |
close to light cornflower blue 3 |
| ESS再起動 | ESS_REBOOT |
(TBD) |
| PCS起動 | PCS_START |
(TBD) |
| PCS停止 | PCS_STOP |
(TBD) |
入札(kW or kWh) (G列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- 範囲制限:
>=0
- Backend:
- 数値型のパース可能性チェック
- 非負数チェック
- 上限値との整合性チェック
入札の単価の下限(円/kWh) (H列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- Backend:
- 数値型のパース可能性チェック
- 上限値との整合性チェック
入札の単価の上限(円/kWh) (I列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- Backend:
- 数値型のパース可能性チェック
- 下限値との整合性チェック(上限 >= 下限)
入札の単価のデルタ(円/kWh) (J列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- 範囲制限:
>=0
- Backend:
- 数値型のパース可能性チェック
- 非負数チェック
- 上限値との整合性チェック
サイト制御のSoCの計画(%) (K列)
validationは以下:
- Frontend (Spreadsheet):
- 書き込み可能
- 範囲制限:
0<=value<=100
- Backend:
- 数値型のパース可能性チェック
- 0-100の範囲チェック
- サイト制御可能性の確認
入札の約定量 (L列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
入札の約定金額 (M列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
サイト制御の結果 (N列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
サイト制御のSoCの実績(%) (O列)
validationは以下:
- Frontend (Spreadsheet):
- 読み取り専用
- Backend:
- ユーザー入力を無視
google spreadsheetの色の対応について
google spreadsheetのpresetの色のコードと名前の対応は以下となっている。
| コード | 名前 |
|---|---|
#e6e6e6 |
close to light green 5 |
#ffcfc9 |
close to light red 3 |
#ffc8aa |
close to light orange 14 |
#ffe5a0 |
close to light yellow 2 |
#d4edbc |
close to light green 3 |
#bfe1f6 |
close to light cornflower blue 3 |
#c6dbe1 |
close to light cyan 3 |
#e6cff2 |
close to light purple 3 |