yamori

有給休暇計算を主目的とした簡易勤怠管理システム

Commits at 39a109647360a96d375a3f88163eb6d0747f3afe

  1. 5693f6f0 backend: JWT の生成・検査ヘルパ 今後ほぼすべての RPC で必要となるため事前に整理した。 Shota FUJI authored at Shota FUJI comitted at
  2. 663ceacd backend: ログイン時に JWT を SameOrigin Cookie に焼き付ける Shota FUJI authored at Shota FUJI comitted at
  3. 36d31f78 backend: ログイン処理を別ファイルに移す ファットになりすぎて見づらかったので。 Shota FUJI authored at Shota FUJI comitted at
  4. 0fce04ca proto: ユーザ作成リクエストをシンプル化 移行したのでフィールドを詰めた。デプロイとかしてないし。 oneof から別個のフィールドにしたのは使いやすさのため。 正直種々のコードジェネレーターの吐く oneof 実装がクソ過ぎて 使いたくない。将来的にも別個のほうが、例えば管理者から特定の 権限を外す場合などにも対応できる。まぁ oneof 外すのは簡単なん だけどね。 Shota FUJI authored at Shota FUJI comitted at
  5. 8842bc99 backend: 初期管理者ユーザ作成 RPC へ移行 Shota FUJI authored at Shota FUJI comitted at
  6. 9231b3a0 proto: 管理者ユーザ作成メソッド ユーザ作成暗黙の RPC に oneof みたいなフィールドが多く使い勝手が 悪いと感じたため。 backend のコードに触れているのは Connect Go のサービスが全てのメソッドを 実装していないとコンパイルエラーになるという欠陥設計によるもの。 Shota FUJI authored at Shota FUJI comitted at
  7. ed45ac44 backend: 管理者作成のテスト Shota FUJI authored at Shota FUJI comitted at
  8. c0522153 backend: -h がヘルプになるのを修正 kong は無条件で -h を設定するため、デフォルトのヘルプを無効化する 必要がある。 Shota FUJI authored at Shota FUJI comitted at
  9. 4a363d11 backend: HTTP サーバのホストとポートを CLI 系で変更可能にした ぶっちゃけログのほうがメインだったり。実際に何度も立ち上げて わかりづらかったので。 Shota FUJI authored at Shota FUJI comitted at
  10. 7627d966 backend: まともに CLI 引数を渡せるようにする Go の flag パッケージは普通の `-a`/`--a-long` 形式をサポートせずに `-a-long` で全部ポインタのため。楽だが、成果物の UX が悪くなるという アンチパターン。 Go の標準ライブラリ割とだめじゃね...? Shota FUJI authored at Shota FUJI comitted at
  11. dafd1a3c backend: テキストログ出力をまともに見れるように修正 Shota FUJI authored at Shota FUJI comitted at
  12. 0b23f623 backend: テキストログと JSONL ログを選べるようにした JSONL は便利だがテスト時などは見にくい。 Shota FUJI authored at Shota FUJI comitted at
  13. e95f3a9c backend: デバッグログを見れるようにする 見れなきゃ出しても意味ないので。 Shota FUJI authored at Shota FUJI comitted at
  14. 4440b52c backend: 管理者作成パスワードの初期指定 自動テストが書けないので。 Shota FUJI authored at Shota FUJI comitted at
  15. 6b71ff4f proto: ユーザの権限モデル定義 Shota FUJI authored at Shota FUJI comitted at
  16. f1497f78 backend: ログイン RPC Shota FUJI authored at Shota FUJI comitted at
  17. 05bda859 backend: イベント生成のヘルパ関数 自動生成されるコードがあまりにも酷くノイズでしかないため。 Shota FUJI authored at Shota FUJI comitted at
  18. a20b0398 backend: 管理者ユーザ作成時に PW を設定する 単純な抜け。 Shota FUJI authored at Shota FUJI comitted at
  19. e3344e20 backend: 初期管理者作成フロー テストは一パターンしかないが、初期パスワードを明示的に指定する機能が ないとテストができないので (ログをキャプチャするとかは勘弁) とりあえず サンプル的に書いてあるだけ。ちゃんと書くならある程度ヘルパ関数に出して いく必要がありそう。 スナップショットやプロジェクションあたりは PoC をベースにシンプルで クリーンな感じを目指して書いたが、もう少し詰めてきれいにできそうな 気がする。 Go 特有のボイラープレートは全然問題ではなかったが、 Protobuf/Go の吐く コードがやばすぎてやばさがやばい。現状、 * WASM 出力ができる * 2023 edition の Protobuf に対応している * ランタイムオーバヘッドが大きくない 言語が Go しかなくスイッチはできないので、ヘルパなり何なりで早めに対策 をする必要がありそう。特に `oneof` のコード生成がオワコンすぎる。 Protobuf 2024 edition が出たら生成コードが Opaque になって Builder 系の ヘルパが生成されるのでそれまで待つのもあり? 2025 Q3 あたりでようやく 仕様が固まる見通しっぽいからあまりにも酷ければ移行を見越したヘルパなり Builder と似た機構を用意したほうがいいかも。 色々と中途半端なところや TODO コメントがあるが、これ以上完璧を目指すと diff を読むのが地獄なのでここで一区切り。 Shota FUJI authored at Shota FUJI comitted at
  20. 9aef8519 Zig 関連の設定を削除 利用しなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  21. dd213fe7 vendor/go-sqlite3-js: WASM で DB が開けないのを修正 そもそもこのコードが動いていたのか甚だ疑問。 Shota FUJI authored at Shota FUJI comitted at
  22. 516cab77 backend: SQLite3 の導入 WASM でも動かすために色々追加している。 ただ、これ以上環境依存のツールを導入しなければ後は共通の コードを書くだけになるはず。 Shota FUJI authored at Shota FUJI comitted at
  23. 115fc47f backend: すべて Go で書く WASM の出力がおかしいのはどうやら v1.24.1 限定のバグだった模様。 v1.23.8 と v1.24.2 では再現しなかった。リリースノートにはないので バレないようにしれっと直したのだろう。 pwa パッケージにサンプル的なコードが入っているが、これは動作確認用。 後で消す予定だが、どのみち pwa パッケージは使わなくなるのでそのまま になる可能性も。 Shota FUJI authored at Shota FUJI comitted at
  24. 82244747 backend: SQLite3 での Event Sourcing スキーマ SQL 文の正常性確認は実際に行いそうなクエリや INSERT を書いたものを `001_test.sql` と保存した上で、 ``` $ cat migrations/*.sql | sqlite3 -table ``` を実行した。 本来であればマイグレーションの実行までを一纏めにしたかったが、 ここに来て Zig の protobuf である Gremlin のコード生成が全然ダメ なことが発覚。特に `oneof` を普通のメッセージと同様に出力するため 利用側でどのフィールドが判別できない ("_" でプリフィクスされてる フィールドが `null` かどうかを見ればわかるが、非公開だしハック) ので実用に耐えないことが分かった。他の Protobuf コード生成ツールは Protobuf3 しか対応しておらず、 edition 向けのちゃんとしたツールを 書くしかない。しかし工数的に、というかペース的にそんな余裕がないので Go (WASM 出力できれば) か Rust (Go がウンコだったら) での書き換えを する予定。そうなると更に低レベルな内容のコミットとなるため、別の コミットにすることとした。 要約すると、大量の環境整備が入るけどこの SQL 捨てるの勿体ないから コミットしたよ。 Shota FUJI authored at Shota FUJI comitted at
  25. 7db4a3ee backend: server.zig を削除 サーバも WASM を使うことにしたため。 Shota FUJI authored at Shota FUJI comitted at
  26. f6062794 proto: ユーザ作成 RPC Shota FUJI authored at Shota FUJI comitted at
  27. 35f896e8 proto: 単一ワークスペース前提の workspace/v2 モジュール SingletonWorkspaceService を作ったが、既存のモデル定義を拡張していくと どうしてもノイズが多くなったり注釈が増えたりしてくる。 根本的なアーキテクチャ変更なのでバージョン変更は妥当と判断し、最小限の モジュールを作成した。 根本的な変更の理由はユーザ管理・ログインを実際に実装しようとして既存の サービス設計では実現が難しい、できてもハック盛りだくさんになってしまう ため。労働者管理とユーザ管理を分離しようとして設計した v1 だったが、 結果的にそれのせいでユーザ管理が追加できない事態となってしまった。 Shota FUJI authored at Shota FUJI comitted at
  28. 8edcdcf5 proto: ユーザモデルをワークスペース配下に移動 シングルトンワークスペースがメインになる以上、ユーザはワークスペースに 属するデータとなる。 Shota FUJI authored at Shota FUJI comitted at
  29. eb9ece9c proto: 内容がおかしいコメントの修正 多分コピペ。 Shota FUJI authored at Shota FUJI comitted at
  30. 3abc4595 proto: カスタムフィールド 社員 ID などを設定して CSV などでエクスポート、外部システムで 紐づけなどのユースケースがあるため必須要件となる。 Shota FUJI authored at Shota FUJI comitted at