伊予銀行の問合せ対応画面の開発プロセス
これは2024/12/26のHelpfeel Tech LoungeでのLTの発表資料ですshokai.icon
shokai.icon shokaiです
Cosenseを開発しています
登場人物
sawachin.icon、mune
事業開発
KCSとCOPCを完全に理解した
shokai.icon
エンジニア
KCSとは
コールセンターのナレッジマネジメントフレームワーク
電話オペレーターがすごく知的な作業をする
問題解決した後、それをドキュメントにする
作業内容の正しさや速度が評価項目になっている
サポートセンターのペーパーレス化にCosenseを採用!全員参加型のナレッジ作成が1カ月で軌道に - Cosense NEWS
最終的にこうなった
問合せログとナレッジ記事の2種類のページを管理して、問合せ対応していく
多対1の関係
「どうやって解決したか」を他のオペレーターが再利用可能な形で残していく
https://gyazo.com/2907b24e84f2a16fcdc170ed3dc8bdac
問合せログ作成→メモ書く→ナレッジ記事生成→状態が待機中に戻る
記事生成にはInfoboxを挟む
結構複雑な状態遷移をする
ナレッジ記事と問合せログは1対1ではなく、1対多で対応する
動画のものとは別のワークフローもある
ナレッジ記事を探して問合せログに紐づける
生成せず手で書く
SVがナレッジ記事をレビューしていく
おおまかな開発プロセス
sawachin.iconが調査
KCSやCOPC
実際のコールセンターの業務
sawachin.iconが必要そうな機能をshokai.iconと話し合う
オペレーターとページの両方に状態がある
hashtagで状態宣言しよう
UIからページ本文を書き換える機能が必要
複数の画面を行ったり来たりする
shokai.iconが機能に必要そうなUserScript APIを追加
UserScript Page Edit API
sawachin.icon、muneが実装
動くものができた
JavaScriptに詳しいわけではないが、サンプルコードを継ぎ接ぎしたり、LLMを使ったりして「使えるもの」ができた
shokai.iconが高速化
cosense.Page.show(title)を追加し、画面遷移を全てpushStateにした
UserScript Page Edit API
cosense.Page.insertLine(text, index)
cosense.Page.updateLine(text, index)
行番号とテキストを指定してinsertやupdateする
例
ページ末尾に日時を挿入するUserScript
これが最も簡単な例shokai.icon
問合せ対応中のトグルボタンUserScript
オペレーターが編集したら自動的にレビュー待ちタグを付けるUserScript
ctrl(cmd) - zでundoできる
async cosense.Page.waitForSave()
手元の変更がサーバーに保存されるまで待機する
awaitを付けて呼び出す
insertLineやupdateLineしたchangeがサーバーに間違いなく保存されるまで待ってからユーザーに「保存されました」等のメッセージを表示するのに使う
例
レビューしましたボタンUserScript
この時点で工夫した所shokai.icon
await waitForSyncで保存完了を待てるのが便利
変更データそれぞれに、自分がUI操作して行った変更か、UserScript由来の変更なのか、サーバーからか、他ユーザーからか、等の情報を入れるようにした
特定のユーザーがページ編集した時だけUserScriptでさらに追記するのに必要
cosense.Page.show(title)
例 await cosense.Page.show('shokai')
shokaiに移動しつつ
async-awaitでページが読み込まれるまで待機する
UserScript Page Edit APIと併用する事を想定
別のページに書き込んでしまったらかなわんので
UserScriptがPage.showで移動を命令した瞬間に、ユーザーがリンクをクリックして別ページに移動する事もありうる
注意:未pushのデータがまだある状況でcosense.Page.show(title)を呼び出さない
変更がコンフリクトした場合にコンフリクト解消できない
cosense.Page.waitForSave()で待ってからshowするとよいshokai.icon
実装してみての感想、面白かったところ
顧客に接している人がプログラミングすると、ちゃんと役に立つものができる
この時点では高速に動かなくて良い
将来的に高速化できるように実装されていればよい
shokai.iconは勘でAPIとサンプルコードを渡した
詳細はわからんけどこういうパーツでできるだろう
このパーツ使えばおかしな設計にならないだろう
足りないかもしれないパーツは、後で辻褄合わせながら高速化できそうな物ばかり
今は作らない
必要になったら作る
かなり複雑な動作が実装されている
ボタンを押したら、今表示しているページの本文を書き換えつつ
別ページに移動して、元いたページの内容を元に新規ページ本文を作って
元いたページに紐づける
けっこうすごいshokai.icon
エンドユーザープログラミング?
社内の複数の部署に、プログラマじゃないけどプログラムちょっと書いたり、SaaSつなぎ合わせてツール作ったりする人が存在する
みんなプライベートや業務で色々なUIを触ってるせいか、おかしな画面設計になったりしなくなってきてるのかも
常識的に考えてこうだろ、というリテラシーがまあまあ育っている