diff --git a/README.ja.md b/README.ja.md index 080ea4c..ad588ba 100644 --- a/README.ja.md +++ b/README.ja.md @@ -29,6 +29,10 @@
+## 主な機能 + +**→ [操作マニュアル](docs/guide/index.ja.md)** — 画面ごとの使い方を手順で説明しています。 + ## はじめかた Node.js 24.18 以上([`.nvmrc`](.nvmrc) 参照)、pnpm 10 以上、Docker が必要です。 @@ -81,6 +85,7 @@ http://localhost:3000 を開き、サインアップから会社(組織)を | | | |---|---| +| [docs/guide/](docs/guide/index.ja.md) | 操作マニュアル。画面ごとの機能と操作手順 *(日本語・英語)* | | [docs/architecture.ja.md](docs/architecture.ja.md) | 知らずに触ると壊す設計判断 | | [docs/domain/](docs/domain/) | ドメイン知識。概念ごとに1ファイル | | [CONTRIBUTING.ja.md](CONTRIBUTING.ja.md) | 開発コマンド・規約・PR の出し方 | diff --git a/README.md b/README.md index 93089ee..9e8140c 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,10 @@ On a factory or warehouse floor, someone decides every day which worker stands a
+## Features + +**→ [User guide](docs/guide/index.md)** — how to use each screen, step by step. + ## Getting started You need Node.js 24.18+ (see [`.nvmrc`](.nvmrc)), pnpm 10+, and Docker. @@ -82,6 +86,7 @@ Set them in `apps/web/.env` (copied from `apps/web/.env.example`). There is no p | | | |---|---| +| [docs/guide/](docs/guide/index.md) | User guide: what each screen does and how to operate it *(English + Japanese)* | | [docs/architecture.md](docs/architecture.md) | Design decisions you will break if you don't know them | | [docs/domain/](docs/domain/) | Domain knowledge, one file per concept *(English + Japanese)* | | [CONTRIBUTING.md](CONTRIBUTING.md) | Development commands, conventions, and how to open a PR | diff --git a/docs/guide/assignment.ja.md b/docs/guide/assignment.ja.md new file mode 100644 index 0000000..81e9169 --- /dev/null +++ b/docs/guide/assignment.ja.md @@ -0,0 +1,69 @@ +# 配置決め + +日々の運用の中心です。「この日・このシフトで、誰をどこに立たせるか」を決めます。 + +[English](assignment.md) · [マニュアル目次に戻る](index.ja.md) + +## できること + +- **日付** と **シフト**、そしてエリアを選ぶ +- 未配置リストから従業員をスポットへドラッグ(またはタップ)で配置する +- 未配置リストを **名前** や **タグ** で絞り込む +- **下書き保存** する、または **確定する** で現場に公開する +- 確定済みの配置を **更新する** / **下書きに戻す** + +この画面の背後にあるルール: [docs/domain/assignment.md](../domain/assignment.md) + +## 配置決めの前提 + +前提は2つあり、足りない場合は画面が教えてくれます。 + +| 表示されるメッセージ | 対処 | +|---|---| +| *勤務体制(シフト)が未登録です* | [設定](settings.ja.md#働き方シフト設定)でシフトを登録する | +| *この日付に適用される規格がありません* | [配置エディタ](editor.ja.md)で、適用開始日をその日以前にして規格を公開する | + +つまずきやすいのは2つ目です。規格が**下書き**のままのエリアは配置決めできません。公開して初めてここに現れます。 + +## 操作手順 + +1. 配置決め一覧で日付とシフトを選びます。エリアごとに配置状況と規格バージョンが表示されます。**配置する →** を押します。 + +
+ +2. 左の **未配置の従業員** に、まだ配置されていない有効な従業員が並びます。**名前で検索** や **タグで絞り込み** で絞れます。 + +
+ +3. 配置します。 + - 従業員をスポットへ **ドラッグ** する、または + - 従業員を **タップ** してからスポットをタップする + +
+ +4. 解除するには、スポットをタップして **配置を解除** を選ぶか、未配置リストへドラッグして戻します。 +5. 途中でやめるときは **下書き保存**。確定してよければ **確定する** を押します。確認ダイアログに日付・シフト・エリア・配置人数が表示されます。 + +
+ +ヘッダーには進捗(*配置済み 12 / 20*)と使用中の規格バージョンが表示されます。 + +## 下書きと確定の違い + +| 状態 | ビュアーに表示 | ホームでの表示 | +|---|---|---| +| 下書き | されない | *下書きあり* | +| 確定済み | **される** | 配置済み | + +現場に配置を見せるのは「確定」の操作です。確定するまでは自分にしか見えていません。 + +確定すると **確定済み** バッジが付きます。その後も **更新する**(編集して再確定)や、**下書きに戻す**(ビュアーから取り下げる)ができます。 + +
+ +## 注意点 + +- 未配置リストに出るのは **有効** な従業員だけです。[従業員](employees.ja.md)画面で無効にすると候補に出なくなります。 +- 1スポットに配置できるのは1人だけです。 +- 後から[シフト設定](settings.ja.md#働き方シフト設定)を変更すると、変更・削除したシフトで作成中の**下書き**は、設定を保存した時点で破棄されます。確定済みの配置は破棄されません。代わりに、影響を受けた日の配置決め画面に注意書きが表示され、当時確定した内容を保持している[配置履歴](history.ja.md)へ誘導されます。 +- 配置決めを作成・編集できるのは **管理者** と **拠点管理者** だけです。 diff --git a/docs/guide/assignment.md b/docs/guide/assignment.md new file mode 100644 index 0000000..9d90da2 --- /dev/null +++ b/docs/guide/assignment.md @@ -0,0 +1,69 @@ +# Assignment + +The daily loop: for this date and this shift, who stands where. + +[日本語](assignment.ja.md) · [Back to guide index](index.md) + +## What you can do + +- Pick a **date** and a **shift**, then an area +- Drag (or tap) employees from the unplaced list onto spots +- Filter the unplaced list by **name** or by **tag** +- Save as a **draft**, or **Confirm** to publish it to the floor +- **Revert to draft** / **Update** a placement you already confirmed + +The rules behind this screen: [docs/domain/assignment.md](../domain/assignment.md). + +## Before you can assign + +Two prerequisites, and the screen tells you which one is missing: + +| Message | What to do | +|---|---| +| *Work system (shifts) not registered* | Register shifts in [settings](settings.md#shifts) | +| *No spec applies to this date* | Publish a spec in the [layout editor](editor.md) with an effective date on or before this date | + +The second one catches people out: an area with a *draft* spec is not assignable. Publishing is what makes it appear here. + +## Steps + +1. On the assignment list, choose the date and shift. Each area shows its placement status and spec version. Press **Assign →**. + +
+ +2. On the left, **Unplaced employees** lists everyone active who isn't placed yet. Narrow it with **Search by name** or **Filter by tag**. + +
+ +3. Place people: + - **Drag** an employee onto a spot, or + - **Tap** the employee, then tap the spot. + +
+ +4. To undo one: tap the spot and choose **Unassign**, or drag the person back onto the unplaced list. +5. **Save draft** to stop halfway. **Confirm** when the placement is final. + +
+ +The header shows progress (*Placed 12 / 20*) and which spec version is in use. + +## Draft vs confirmed + +| State | Visible in the viewer | Shown on Home as | +|---|---|---| +| Draft | No | *Has draft* | +| Confirmed | **Yes** | placed | + +Confirming is the step that shows the placement to the floor. Until then it's yours alone. + +After confirming, the placement is marked **Confirmed**. You can still **Update** it (edit and re-confirm), or **Revert to draft** to pull it back off the viewer. + +
+ +## Notes + +- Only **active** employees appear in the unplaced list. Deactivate someone in [Employees](employees.md) and they stop being offered. +- Each spot holds exactly one person. +- If you change [shift settings](settings.md#shifts) later, drafts in progress for the changed or deleted shifts are discarded when you save the settings. Confirmed placements are not touched — instead, the assignment screen for an affected day shows a notice pointing you at the [history](history.md), which preserves what was actually confirmed at the time. +- Only **Admin** and **Site Admin** can create or edit assignments. diff --git a/docs/guide/editor.ja.md b/docs/guide/editor.ja.md new file mode 100644 index 0000000..844178d --- /dev/null +++ b/docs/guide/editor.ja.md @@ -0,0 +1,94 @@ +# 配置エリア(配置エディタ) + +フロアを描く画面です。図面画像と、人が立つスポットを定義します。配置や図面の変更はバージョンで管理します。 + +[English](editor.md) · [マニュアル目次に戻る](index.ja.md) + +## できること + +- **配置エリア** を作成する(拠点内の作業エリア1つ。「検収室」「ラインA」など) +- **図面** 画像をアップロードし、サイズを調整する +- **配置スポット** を置く。1スポット=1人が立つ位置 +- **下書き保存** し、**適用開始日** を指定してバージョンとして **公開** する +- 後日レイアウトが変わったら、過去の配置決めを壊さずに **新しいバージョン** を作る + +用語の定義は [docs/domain/layout_spec.md](../domain/layout_spec.md) にあります。 + +## 操作手順 + +### エリアを作る + +1. **+ エリアを追加** で **エリア名** を入力し、**追加する**。 + +
+ +2. エリア一覧には、図面の有無(**図面あり** / **図面なし**)、規格の状態(**公開中** / **下書き**)、スポット数が表示されます。 + +
+ +### 図面をアップロードする + +エリアを開き、右のパネルで操作します。 + +1. **図面** の **画像をアップロード** から画像を選びます。 +2. 必要なら **サイズ** を調整します。**画像を変更** で差し替え、**図面を削除** で取り除けます。 + +図面は任意で、なくてもスポットは置けます。ただしモニター上で配置を読み取りやすくするために、アップロードすることを推奨します。 + +
+
+ +### スポットを置く + +1. **+ 配置スポット** でスポットを追加します。 +2. ドラッグで位置を調整します。右下のハンドルをドラッグするか、パネルの **大きさ** でサイズを変更できます。 +3. パネルの **配置スポットの設定** で **ラベル** を付けます。現場はこのラベルで位置を識別します。 +4. **スポットを削除** で削除できます。 + +
+ +1エリアあたり **最大100スポット** です。 + +### 公開する + +1. **下書き保存** は、公開せずに作業内容を保存します。保存していない変更は残りません。 +2. **この規格を公開** でダイアログが開きます。**適用開始日**(必須)を設定し、**公開する** を押します。 + +
+ +
+ +**配置決めとビュアーが使うのは公開済みバージョンだけです。** ある日付に対しては「適用開始日がその日以前で、最も新しい公開済みバージョン」が使われます。したがって、どれだけ作り込んでも下書きのままではこれらの画面から見えません。 + +**公開を取り消す** と公開済みバージョンを下書きに戻せますが、これは配置決めでまだ使われていない場合に限ります。 + +## バージョン:使用中のレイアウトを変更する + +一度でも配置決めに使われたバージョンは凍結され、編集・削除・公開取り消しができなくなります。これは意図的な仕様で、過去の配置決め(と[配置履歴](history.ja.md))を正しく保つためです。 + +そうしたレイアウトを変更するには次のようにします。 + +1. **+ 現在を複製して新バージョン** で、現在の規格を新しいバージョンに複製します。 +2. スポットを編集します。 +3. 新しいレイアウトを適用したい日を **適用開始日** として公開します。 + +適用開始日より前の日付は引き続き古いバージョンを参照し、その日以降が新しいバージョンになります。 + +注意点が2つあります。 + +- 複製した時点ではバージョンは**まだ作られません**。編集後に **保存または公開** して初めて新バージョンとして記録されます。保存せずに離れると何も残りません。 +- **最新でない**バージョンを公開しても、配置決め・ビュアーには反映されません(エディタが警告します)。解決ルールが「その日以前で最も新しい公開済みバージョン」を選ぶため、古いバージョンが勝つことはありません。使用中の内容を変えたい場合は、新しいバージョンを作ってください。 + +
+ +## エリアを削除する + +**エリアを削除** すると、図面・全バージョン・全スポットが削除され、元に戻せません。 + +そのエリアのバージョンが**1つでも**配置決めで使われている場合、エリアは削除できません(ボタンにその旨が表示されます)。使われていない個別バージョンだけを削除することもできません。ただし未公開の下書きは無害なので、そのまま放置して構いません。 + +## 注意点 + +- **保存しない限り変更は反映されません。** キャンバス上の状態は作業中のコピーです。 +- 2人が同時に編集した場合は、後から保存した内容で上書きされます。 +- 編集できるのは **管理者** と **拠点管理者** だけです。 diff --git a/docs/guide/editor.md b/docs/guide/editor.md new file mode 100644 index 0000000..4d6ebfe --- /dev/null +++ b/docs/guide/editor.md @@ -0,0 +1,93 @@ +# Layout areas (the placement editor) + +Where you draw the floor: a plan image, and the spots people stand on. You do this once per area, then only rarely again. + +[日本語](editor.ja.md) · [Back to guide index](index.md) + +## What you can do + +- Create **placement areas** (one work area within the site: "Inspection room", "Line A", …) +- Upload a **floor plan** image and size it +- Place **placement spots** — one spot is one position for one person +- Save a **draft**, then **publish** it as a version with an **effective date** +- Create a **new version** later, when the layout changes, without disturbing past assignments + +The vocabulary is defined in [docs/domain/layout_spec.md](../domain/layout_spec.md). + +## Steps + +### Create an area + +1. **+ Add area**, enter an **Area name** (e.g. "Loading dock"), then **Add**. + +
+ +2. The area list shows each area's plan status (**Has plan** / **No plan**), spec status (**Published** / **Draft**), and spot count. + +
+ +### Upload a floor plan + +In the area, open the right-hand panel: + +1. **Upload image** under **Floor plan**, and pick the image. +2. Adjust **Size** if needed. **Change image** replaces it, **Delete floor plan** removes it. + +The floor plan is optional — you can place spots without one — but it's what makes the placement legible on the monitor. + +
+
+ +### Place spots + +1. **+ Placement spot** adds a spot. +2. Drag it into position. Drag the handle at its bottom-right to resize, or set **Size** in the panel. +3. Give it a **Label** (the panel's **Placement spot settings**). The label is how the floor identifies the position. +4. **Delete spot** removes it. + +Up to **100 spots** per area. + +
+ +### Publish + +1. **Save draft** keeps your work without publishing. Nothing you haven't saved is kept. +2. **Publish this spec** opens a dialog. Set the **Effective date** (required), then **Publish**. + +
+
+ +**Assignment and the viewer only use published versions.** For a given date they use the newest published version whose effective date is on or before that date. So a draft, however complete, is invisible to them. + +**Unpublish** reverts a published version to draft — but only if no assignment uses it yet. + +## Versions: changing a layout that's already in use + +Once a version has been used in an assignment, it is frozen: it can't be edited, deleted, or unpublished. This is deliberate — it's what keeps past assignments (and [history](history.md)) truthful. + +To change such a layout: + +1. **+ Duplicate current as new version** — this copies the current spec into a new version. +2. Edit the spots. +3. Publish it with an **effective date** from which the new layout applies. + +Dates before that effective date keep resolving to the old version. Dates on or after it get the new one. + +Two things surprise people here: + +- Duplicating does **not** create the version immediately. The new version is only recorded once you **save or publish** after editing. Leave without saving and nothing remains. +- Publishing a version that is **not the latest** has no effect on assignment or the viewer — the editor warns you about this. Resolution picks the *newest* published version on or before the date, so an older one never wins. If you want to change what's in use, create a new version. + +
+ +## Deleting an area + +**Delete area** removes the floor plan, every version, and every spot, irreversibly. + +If **any** version of the area has ever been used in an assignment, the area can't be deleted (the button says so). Individual unused versions can't be deleted either — but an unpublished draft is harmless, so you can simply leave it. + +## Notes + +- **Changes aren't reflected unless you save.** The canvas is a working copy. +- On concurrent edits by two people, last write wins. +- Only **Admin** and **Site Admin** can edit. General users can only view; "other" can't open the screen at all. diff --git a/docs/guide/employees.ja.md b/docs/guide/employees.ja.md new file mode 100644 index 0000000..8139e2f --- /dev/null +++ b/docs/guide/employees.ja.md @@ -0,0 +1,72 @@ +# 従業員 + +マップ上に配置される人たちです。従業員は **ログインしません**。ログインする管理者については [メンバー](members.ja.md) を参照してください。 + +[English](employees.md) · [マニュアル目次に戻る](index.ja.md) + +
+ +## できること + +- 従業員の追加・編集・無効化 +- 氏名・社員番号・タグでの検索、有効/無効での絞り込み +- **識別カラー** の設定(マップ上のアバターの色) +- **タグ** の付与(1人あたり最大10個) +- **CSV取込** と **CSVエクスポート** + +属性の定義は [docs/domain/employee.md](../domain/employee.md) にあります。 + +## 1人ずつ追加する + +**+ 従業員を追加** から入力します。 + +| 項目 | 補足 | +|---|---| +| 社員番号 | 必須。拠点内で一意 | +| 姓 / 名 | 必須 | +| 識別カラー | パレットから選択。フロアマップ上のアバターに使われます | +| タグ | 複数選択可。タグは事前に登録が必要です([設定 → タグ管理](settings.ja.md#タグ管理)) | +| 有効 | *配置決めで選択できる状態にします*。チェックを外すと記録は残したまま、候補に出なくなります | + +
+ +退職者は削除ではなく「無効」にするのが基本です。配置決めの候補から消えますが、過去の[配置履歴](history.ja.md)はそのまま残ります。 + +## CSV取込 + +名簿をまとめて登録する方法です。 + +1. 列の並びを確認したい場合は、先に **CSVエクスポート** してください。エクスポートと取込の列は同じです。 +2. **CSV取込** でファイルを選ぶと、**CSV取込プレビュー** が開き、各行が **正常** か **エラー** かで表示されます。 +3. エラーがあれば修正して再アップロードします。**エラー行が1行でもあると取込できません**(全件取り込むか、取り込まないかのどちらかです)。 +4. **N 件を取込む** で確定します。 + +### 列の仕様 + +以下の固定順です(ヘッダー行は読み飛ばされます。ヘッダーの文字列ではなく**列の位置**で判定されます)。 + +| # | 列 | 補足 | +|---|---|---| +| 1 | 従業員コード | 必須・一意 | +| 2 | 姓 | 必須 | +| 3 | 名 | 必須 | +| 4 | アバターカラー | 不正な値や空の場合は既定色になります | +| 5 | ステータス | `Inactive` で無効。それ以外(空欄を含む)は有効 | +| 6〜15 | タグ1 … タグ10 | タグ**名**。事前に登録済みである必要があります | + +1ファイルあたり **最大1000行** です。超える場合は分割してください。 + +### 表示されるエラー + +- *従業員コードが空 / 姓が空 / 名が空* +- *CSV内で従業員コードが重複しています* +- *既存の従業員と従業員コードが重複しています* +- *未登録のタグ: …* — [設定 → タグ管理](settings.ja.md#タグ管理)で先にタグを作成してください +- *タグは最大10個までです* — 11列目以降のタグ列に値がある場合も該当します + +
+ +## 注意点 + +- 従業員は **選択中の拠点** に属します。 +- 従業員を作成・編集・削除できるのは **管理者** と **拠点管理者** だけです。 diff --git a/docs/guide/employees.md b/docs/guide/employees.md new file mode 100644 index 0000000..52d2c3c --- /dev/null +++ b/docs/guide/employees.md @@ -0,0 +1,72 @@ +# Employees + +The people you place on the map. Employees **do not log in** — for the administrators who do, see [Members](members.md). + +[日本語](employees.ja.md) · [Back to guide index](index.md) + +
+ +## What you can do + +- Add, edit, and deactivate employees +- Search by name, employee number, or tag; filter by Active / Inactive +- Give each one an **identification color** (the avatar color shown on the map) +- Apply **tags** (up to 10 per employee) +- **Import CSV** and **Export CSV** + +Attributes are defined in [docs/domain/employee.md](../domain/employee.md). + +## Adding one employee + +**+ Add employee**, then fill in: + +| Field | Notes | +|---|---| +| Employee number | Required, and unique within the site | +| Last name / First name | Required | +| Identification color | Picked from the palette; used for the avatar on the floor map | +| Tags | Multiple allowed. Tags must already exist — create them in [Settings → Tag management](settings.md#tags) | +| Active | *Make selectable in assignment.* Uncheck to keep the record but stop offering them | + +
+ +Deactivating is the way to handle someone who has left: they disappear from the assignment pool but past [history](history.md) stays intact. + +## CSV import + +For a whole roster at once. + +1. **Export CSV** first if you want the exact column layout — the export and the import use the same columns. +2. **Import CSV**, choose the file. A **CSV import preview** opens showing every row as **Valid** or **Error**. +3. Fix any errors and re-upload. **You cannot import while any row has an error** — it's all-or-nothing. +4. **Import N rows** commits. + +### Columns + +In this fixed order (the header row is skipped; only position matters, not the header text): + +| # | Column | Notes | +|---|---|---| +| 1 | Employee Code | Required, unique | +| 2 | Last Name | Required | +| 3 | First Name | Required | +| 4 | Avatar Color | An invalid or empty value falls back to the default color | +| 5 | Status | `Inactive` marks them inactive; anything else (including empty) means active | +| 6–15 | Tag1 … Tag10 | Tag **names**. Each must already exist | + +Up to **1000 rows** per file. Split larger rosters. + +### Errors you'll see + +- *Employee code is empty* / *Last name is empty* / *First name is empty* +- *Duplicate employee code within the CSV* +- *Employee code duplicates an existing employee* +- *Unregistered tags: …* — create the tag first in [Settings → Tag management](settings.md#tags) +- *Up to 10 tags allowed* — also triggered by values in an 11th tag column + +
+ +## Notes + +- Employees belong to the **selected site**. +- Only **Admin** and **Site Admin** can create, edit, or delete employees. diff --git a/docs/guide/getting-started.ja.md b/docs/guide/getting-started.ja.md new file mode 100644 index 0000000..10cafdb --- /dev/null +++ b/docs/guide/getting-started.ja.md @@ -0,0 +1,99 @@ +# はじめかた + +サインアップから、現場のモニターに配置が映るまで。所要時間は30分ほどです。 + +[English](getting-started.md) · [マニュアル目次に戻る](index.ja.md) + +これがアプリの想定する順序です。ホーム画面にも同じ順序が「初期セットアップ」の3ステップとして表示されるので、そちらをたどっても構いません。 + +## 0. 新規登録 + +社内にまだ誰もアカウントを持っていない場合、代表者1人が組織を作成します。 + +1. アプリを開き **新規登録** を選びます。 +2. お名前・会社名・メールアドレス・パスワード(8文字以上)を入力します。これで **事業所(組織)** が作成され、あなたがその **管理者** になります。 +3. メールに届いた確認コードを入力します。 + +
+
+ +> 確認コードは、その環境で設定されたメールアダプタ経由で届きます。ローカルの初期設定では実際には送信されず、APIサーバーのコンソールに出力されます。→ [README](../../README.ja.md) + +他のメンバーは新規登録ではなく、後述の [メンバー](members.ja.md) 画面から招待してください。新規登録すると**別の組織**が作られてしまいます。 + +## 1. 拠点を選択 + +**拠点** は工場・倉庫1つを指します。新規登録時に最初の1つが作られます。 + +[拠点選択](site-selection.ja.md)画面で選んでください。ここで選んだ拠点が以降ほぼすべての基準になります(従業員・エリア・配置はすべて拠点に属します)。拠点はサイドバーの **切り替え** から後で変更できます。 + +拠点を追加するには [設定 → 拠点管理](settings.ja.md#拠点管理)(管理者のみ)を参照してください。 + +## 2. シフトを登録 + +設定 → **働き方(シフト)設定** + +1日をどう区切るかを決めます。どちらかを選びます。 + +- **シフトなし** — 1日1シフト。時間帯の区分なし。 +- **シフトあり** — 日勤・遅番・夜勤など、名前と時間で区分する。 + +「シフトあり」を選んだ場合は、シフト名・開始・終了を入力して各シフトを追加します。 + +以降のすべてがこの設定に依存するため、チェックリストの1番目になっています。詳細は [settings.ja.md](settings.ja.md#働き方シフト設定) を参照してください。 + +## 3. 従業員を登録 + +サイドバーの **従業員** + +配置される人たちです。ログインはしません。**+ 従業員を追加** で1人ずつ登録するか、**CSV取込** で一括登録します。 + +人数が多い場合はCSVが早道ですが、タグを付けたCSVを取り込むには、そのタグが先に登録されている必要があります。詳細は [employees.ja.md](employees.ja.md) を参照してください。 + +## 4. 配置エリアを作り、規格を公開する + +サイドバーの **配置エリア**。ここは「保存」と「公開」が別物のため、中途半端で止まりやすいステップです。 + +1. **+ エリアを追加** で名前を付けます(例:「荷捌き場」)。**配置エリア** は拠点内の作業エリア1つを指します。 +2. 必要なら右のパネルから図面画像をアップロードします。図面は任意ですが、あると配置が格段に読みやすくなります。 +3. 人が1人立つ位置ごとに **+ 配置スポット** を追加します。ドラッグで移動、右下のハンドルをドラッグでサイズ変更、それぞれにラベルを付けられます。 +4. 途中で **下書き保存** します。 +5. レイアウトが固まったら **この規格を公開** します。**適用開始日** の入力が必須です。 + +**公開して初めてそのエリアが使えるようになります。** 配置決めとビュアーが使うのは公開済みバージョンだけです。ある日付に対しては「適用開始日がその日以前で、最も新しい公開済みバージョン」が使われます。下書きはこれらの画面からは見えません。 + +後からレイアウトを変更する場合のバージョンの扱いを含め、詳細は [editor.ja.md](editor.ja.md) を参照してください。 + + + +## 5. 人を配置する + +サイドバーの **配置決め** + +1. 日付とシフトを選び、エリアを選びます(**配置する →**)。 +2. 左の **未配置の従業員** からスポットへドラッグします。タップでも配置できます。 +3. **確定する** を押します。 + +確定するまでは下書き扱いで、ビュアーには表示されません。詳細は [assignment.ja.md](assignment.ja.md) を参照してください。 + + + +## 6. 現場に映す + +サイドバーの **ビュアー** から、対象エリアの **大きく表示 →** + +現場のモニターにこの画面を映してください。初期状態では現在時刻に追従して今日のシフトを自動表示します。特定の日付・シフトを強制表示することもできます。詳細は [viewer.ja.md](viewer.ja.md) を参照してください。 + + + +## 続いて:同僚を招待する + +**メンバー** → **+ メンバーを招待**。メンバーはログインする管理者です。拠点ごとに、何ができるかを設定します。 + +現場を複数人で回している場合は、担当拠点の **拠点管理者** として招待するとよいでしょう。詳細は [members.ja.md](members.ja.md) を参照してください。 + +## 次に読むもの + +- 日々の運用サイクルを詰める → [assignment.ja.md](assignment.ja.md) +- タグで従業員を絞り込みやすくする → [settings.ja.md](settings.ja.md#タグ管理) +- モニターに何をいつ映すかを調整する → [settings.ja.md](settings.ja.md#配置ビュアー設定) diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md new file mode 100644 index 0000000..214ff52 --- /dev/null +++ b/docs/guide/getting-started.md @@ -0,0 +1,99 @@ +# Getting started + +From sign-up to a placement showing on the floor's monitor. Allow about 30 minutes. + +[日本語](getting-started.ja.md) · [Back to guide index](index.md) + +This is the order the app expects. Home shows the same order as a 3-step **Initial setup** checklist, so you can also just follow that. + +## 0. Sign up + +If nobody in your company has an account yet, one person creates the organization. + +1. Open the app and choose **Sign up**. +2. Enter your name, your company name, your email, and a password (8+ characters). This creates the **organization** and makes you its **Admin**. +3. Enter the verification code sent to your email. + +
+
+ +> Verification codes are delivered by whatever email adapter the deployment uses. On a default local install nothing is actually sent — the code is printed to the API server console. See the [README](../../README.md). + +Everyone else should be invited later from [Members](members.md) rather than signing up, since signing up creates a *separate* organization. + +## 1. Select a site + +A **site** is one factory or warehouse. Sign-up creates your first one. + +Pick it on the [site selection](site-selection.md) screen. The site you pick scopes almost everything that follows — employees, areas, and assignments all belong to a site. You can switch sites later from the sidebar (**Switch**). + +To add more sites, see [Settings → Site management](settings.md#site-management) (Admins only). + +## 2. Register shifts + +Settings → **Work style (shift) settings**. + +Decide how the day is divided. Choose one: + +- **No shifts** — one shift per day, no time divisions. +- **With shifts** — divide by name and time (day / late / night, etc.). + +If you choose "with shifts", add each shift with a name, a start time, and an end time. + +Everything downstream depends on this, which is why it's step 1 of the checklist. Details: [settings.md](settings.md#shifts). + +## 3. Register employees + +**Employees** in the sidebar. + +These are the people to be placed — they don't log in. Add them one at a time with **+ Add employee**, or import a spreadsheet with **Import CSV**. + +For a large roster, CSV is the fast path, but note that tags must already exist before you can import employees carrying them. Details: [employees.md](employees.md). + +## 4. Draw the placement area and publish it + +**Layout Areas** in the sidebar. This is the step people most often get half-finished, because saving is not publishing. + +1. **+ Add area** and name it (e.g. "Loading dock"). A **layout area** is one work area within the site. +2. Optionally upload a floor plan image from the right-hand panel. The plan is optional but makes the placement far easier to read. +3. Add **+ Placement spot** for each position where one person stands. Drag to move, drag the bottom-right handle to resize, and give each spot a label. +4. **Save draft** as you go. +5. **Publish this spec** when the layout is final. You must set an **Effective date**. + +**Publishing is what makes the area usable.** Assignment and the viewer only ever use published versions: for any given date, they use the newest published version whose effective date is on or before that date. A draft is invisible to them. + +Details, including how versions work when you later change the layout: [editor.md](editor.md). + +
+ +## 5. Assign people + +**Assignment** in the sidebar. + +1. Pick the date and the shift, then pick the area (**Assign →**). +2. Drag employees from **Unplaced employees** on the left onto the spots. Tapping works too. +3. **Confirm**. + +Until you confirm, the placement is a draft and the viewer will not show it. Details: [assignment.md](assignment.md). + +
+ +## 6. Show it on the floor + +**Viewer** in the sidebar, then **Show large →** on the area. + +Point the floor's monitor at this screen. By default the viewer follows the current time and shows today's shift automatically; you can instead force a specific date and shift. Details: [viewer.md](viewer.md). + +
+ +## Then: invite your colleagues + +**Members** → **+ Invite member**. Members are the administrators who log in. You set what each one can do, per site. + +If several people run the floor, invite them as **Site Admin** for their site. Details: [members.md](members.md). + +## What next + +- Refine the day-to-day loop: [assignment.md](assignment.md) +- Group employees for easier filtering with tags: [settings.md](settings.md#tags) +- Tune what the monitor shows and when it switches: [settings.md](settings.md#viewer-settings) diff --git a/docs/guide/history.ja.md b/docs/guide/history.ja.md new file mode 100644 index 0000000..cd089c3 --- /dev/null +++ b/docs/guide/history.ja.md @@ -0,0 +1,27 @@ +# 配置履歴 + +過去の確定済み配置を、確定した当時のまま記録しています。読み取り専用です。 + +[English](history.md) · [マニュアル目次に戻る](index.ja.md) + +
+ +## できること + +- 過去の配置を **日付** で検索し、シフト・エリアごとに振り返る +- 記録を開き、当時の図面と配置されていた人を確認する + +## 操作手順 + +1. サイドバーの **配置履歴** を開きます。初期表示は前日です。 +2. 日付を変更すると他の日を検索できます。表には **日付**・**シフト**・**エリア**・**配置メンバー**の人数が並びます。件数が多い場合はページ送りで移動します。 +3. **表示 →** で当時の配置が開きます(**読み取り専用**)。 + +
+ +## 注意点 + +- **記録されるのは確定済みの配置だけです。** 下書きは履歴になりません。 +- 履歴は「実際に確定された内容」の記録なので、後からシフトや規格を変更しても影響を受けません。シフト設定を変更した場合、影響を受けた日の配置決め画面から、当時の内容を確認するためにこの画面へ誘導されます。 +- その日に使われた規格バージョンに図面がなかった場合は、図面なしで配置内容が表示されます。 +- 閲覧できるのは **管理者**・**拠点管理者**・**一般** です。→ [members.ja.md](members.ja.md#権限) diff --git a/docs/guide/history.md b/docs/guide/history.md new file mode 100644 index 0000000..9f47e70 --- /dev/null +++ b/docs/guide/history.md @@ -0,0 +1,27 @@ +# History + +Past confirmed placements, exactly as they were confirmed. Read-only. + +[日本語](history.ja.md) · [Back to guide index](index.md) + +
+ +## What you can do + +- Look up past placements by **date**, and read them by shift and area +- Open one and see the floor plan with the people who were on it + +## Steps + +1. **History** in the sidebar. It opens on yesterday's date. +2. Change the date to look up another day. The table lists **Date**, **Shift**, **Area**, and the number of **Placed members**; page through with the pager. +3. **View →** opens the placement as it was, marked **Read-only**. + +
+ +## Notes + +- **Only confirmed placements are recorded.** Drafts never become history. +- History is the record of what was actually confirmed, so it survives later changes to shifts or to the layout spec. When you change shift settings, the assignment screen for an affected day will point you here to see what it was at the time. +- If the spec version used that day had no floor plan, the record shows the placement without one. +- Visible to **Admin**, **Site Admin**, and **General**. See [members.md](members.md#permissions). diff --git a/docs/guide/home.ja.md b/docs/guide/home.ja.md new file mode 100644 index 0000000..519a937 --- /dev/null +++ b/docs/guide/home.ja.md @@ -0,0 +1,47 @@ +# ホーム + +ログイン後に最初に開く画面です。「セットアップの残りは何か」「今日の配置は埋まっているか」の2つに答えます。 + +[English](home.md) · [マニュアル目次に戻る](index.ja.md) + +
+ +## できること + +- **初期セットアップ** のチェックリストに沿って、拠点が使える状態になるまで進める +- 今日のシフト別の配置状況を確認し、未配置のエリアへそのまま移動する + +## 初期セットアップ + +3ステップすべてが終わるまで、ホームには進捗つきのチェックリストが表示されます。 + +| ステップ | 内容 | 完了条件 | +|---|---|---| +| **シフトを登録** | 拠点の勤務体制(交代制とシフト)を設定する | シフト設定を保存した | +| **従業員を登録** | 配置する従業員を登録する | 従業員が1名以上いる | +| **配置エリアを登録** | フロアマップと配置スポットを作成し、規格を公開する | 規格を**公開**した。下書きのままだと「下書きあり(未公開)」と表示され、完了になりません | + +現在のステップのボタン(**次はこちら →** / **続きから →**)を押すと該当画面に移動します。上から順に進めてください。各ステップは1つ上のステップに依存します。 + +3つとも完了するとチェックリストは表示されなくなります。 + +## 配置状況 + +セットアップが完了すると、ホームには現在のシフトの状況が、**前のシフト**・**次のシフト**と並んで表示されます。「現在のシフト」は[シフト設定](settings.ja.md#働き方シフト設定)の時間帯から判定されます。 + +シフトごとに次が分かります。 + +- **配置率** と **配置済み人数** +- 全スポット中の **未配置スポット数** +- エリアごとの状態(配置済み/**下書きあり**/**未着手**)と、**配置する →** ボタン。押すと該当の日付・シフト・エリアで[配置決め](assignment.ja.md)が開きます + +このほか **在籍従業員数**・**公開エリア数**・**総スポット数** も表示されます。 + +
+ +> 下書きの配置は「配置済み」ではなく「下書きあり」として数えられます。[ビュアー](viewer.ja.md)に出るのは確定済みの配置だけです。 + +## 注意点 + +- ホームは **選択中の拠点** の情報のみを表示します。別拠点を見るにはサイドバーで拠点を切り替えてください。 +- ホームを開けるのは **管理者**・**拠点管理者**・**一般** です。「その他」(ビュアー閲覧のみ)の権限では開けず、[ビュアー](viewer.ja.md)のみ利用できます。→ [members.ja.md](members.ja.md#権限) diff --git a/docs/guide/home.md b/docs/guide/home.md new file mode 100644 index 0000000..0726add --- /dev/null +++ b/docs/guide/home.md @@ -0,0 +1,47 @@ +# Home + +The screen you land on. It answers two questions: "what's left to set up" and "is today covered". + +[日本語](home.ja.md) · [Back to guide index](index.md) + +
+ +## What you can do + +- Follow the **Initial setup** checklist until the site is usable +- See today's placement status per shift, and jump straight to whatever isn't placed yet + +## Initial setup + +Until all three steps are done, Home shows a checklist with a progress count. + +| Step | Meaning | Done when | +|---|---|---| +| **Register shifts** | Set up the site's work system (shift rotation and shifts) | Shifts are saved | +| **Register employees** | Register the employees to place | At least one employee exists | +| **Register placement areas** | Create the floor map and placement spots, then publish the spec | A spec is **published** — a draft shows *Draft (unpublished)* and does not count | + +The button on the current step (**Start here →** / **Continue →**) takes you to the right screen. Work top to bottom; each step depends on the one above it. + +The checklist disappears once all three are done. + +## Placement status + +Once setup is complete, Home shows the status of the current shift, with **Previous shift** and **Next shift** alongside it. The "current" shift is derived from the time ranges you set in [shift settings](settings.md#shifts). + +You get, per shift: + +- **Placement rate** and **People placed** +- **Open spots** out of the total +- Per-area status: placed, **Has draft**, or **Not started**, with a **Place →** button that opens [Assignment](assignment.md) already on the right date, shift, and area + +Also shown: **Active employees**, **Published areas**, **Total spots**. + +
+ +> A draft placement counts as *Has draft*, not as placed. Only confirmed placements reach the [viewer](viewer.md). + +## Notes + +- Home is scoped to the **selected site**. Switch sites from the sidebar to see another one. +- Home is visible to **Admin**, **Site Admin**, and **General**. "Other" (viewer-only) members can't open it — they only get the [Viewer](viewer.md). See [members.md](members.md#permissions). diff --git a/docs/guide/index.ja.md b/docs/guide/index.ja.md new file mode 100644 index 0000000..cce7450 --- /dev/null +++ b/docs/guide/index.ja.md @@ -0,0 +1,38 @@ +# haizu 操作マニュアル + +haizu の使い方を画面ごとに説明します。 + +[English](index.md) + +haizu は、工場・倉庫の現場で「誰をどこに立たせるか」を管理します。フロアは一度描けば済み、その上の人だけを毎日決めます。 + +## まずはここから + +新しく構築した環境なら、[はじめかた](getting-started.ja.md) を上から順にたどってください。サインアップから配置が画面に出るまでを、アプリが想定する順序で通します。 + +## 画面一覧 + +| 画面 | 何をする画面か | +|---|---| +| [拠点選択](site-selection.ja.md) | 作業する拠点を選ぶ。ログイン後に最初に出る画面 | +| [ホーム](home.ja.md) | 初期セットアップのチェックリストと、今日のシフト別の配置状況 | +| [配置エリア](editor.ja.md) | フロアを描く。図面をアップロードし、スポットを置き、規格を公開する | +| [配置決め](assignment.ja.md) | 日付とシフトを選び、従業員をスポットにドラッグして確定する | +| [配置ビュアー](viewer.ja.md) | 現場の大型モニター向けの表示専用画面 | +| [従業員](employees.ja.md) | 配置される人。CSV取込/エクスポート、タグ | +| [メンバー](members.ja.md) | ログインする人。招待と権限 | +| [配置履歴](history.ja.md) | 過去の確定済み配置。読み取り専用 | +| [設定](settings.ja.md) | シフト・タグ・ビュアー表示・拠点・事業所・アカウント | + +## 押さえておきたい3つの考え方 + +**従業員とメンバーは別物です。** 従業員はマップ上に配置される人で、ログインしません。メンバーは haizu を使う管理者で、ログインします。→ [members.ja.md](members.ja.md) + +**規格を公開しないと配置決めできません。** 配置エディタは下書きを保存できますが、配置決めとビュアーが使うのは「公開済み」バージョンだけです(適用開始日で解決されます)。→ [editor.ja.md](editor.ja.md) + +**確定しないと現場には見えません。** 下書きの配置はビュアーに表示されません。→ [assignment.ja.md](assignment.ja.md) + +## 参考 + +- [docs/domain/](../domain/) — 背後にある業務ルール。概念ごとに1ファイル(英語+日本語)。「なぜこの挙動なのか」を知りたいときに読んでください。 +- [docs/architecture.md](../architecture.md) と [CONTRIBUTING.md](../../CONTRIBUTING.ja.md) — 運用者向けではなく開発者向けです。 diff --git a/docs/guide/index.md b/docs/guide/index.md new file mode 100644 index 0000000..df70402 --- /dev/null +++ b/docs/guide/index.md @@ -0,0 +1,38 @@ +# haizu User Guide + +How to use haizu, screen by screen. + +[日本語](index.ja.md) + +haizu manages who stands where on a factory or warehouse floor. You draw the floor once, then decide the people on it every day. + +## Start here + +If this is a fresh installation, follow [Getting started](getting-started.md). It walks the whole path from sign-up to a placement on screen, in the order the app expects. + +## Screens + +| Screen | What it's for | +|---|---| +| [Site selection](site-selection.md) | Pick the site you're working in. The first screen after login | +| [Home](home.md) | Initial setup checklist, and today's placement status per shift | +| [Layout areas](editor.md) | Draw the floor: upload a plan, place spots, publish a spec version | +| [Assignment](assignment.md) | Pick a date and shift, drag employees onto spots, confirm | +| [Viewer](viewer.md) | Display-only screen for large monitors on the floor | +| [Employees](employees.md) | The people you place. CSV import/export, tags | +| [Members](members.md) | The people who log in. Invitations and permissions | +| [History](history.md) | Past confirmed placements, read-only | +| [Settings](settings.md) | Shifts, tags, viewer display, sites, organization, your account | + +## The three concepts worth knowing + +**Employees are not members.** Employees are the people you place on the map; they don't log in. Members are the administrators who use haizu; they log in. See [members.md](members.md). + +**A spec must be published before you can assign to it.** The layout editor saves drafts, but assignment and the viewer only ever use *published* versions, resolved by effective date. See [editor.md](editor.md). + +**A placement must be confirmed before the floor sees it.** A draft placement is invisible in the viewer. See [assignment.md](assignment.md). + +## Reference + +- [docs/domain/](../domain/) — the underlying rules, one file per concept (English + Japanese). Read these when the guide says "why does it behave like this". +- [docs/architecture.md](../architecture.md) and [CONTRIBUTING.md](../../CONTRIBUTING.md) — for developers, not operators. diff --git a/docs/guide/members.ja.md b/docs/guide/members.ja.md new file mode 100644 index 0000000..ffb2ed5 --- /dev/null +++ b/docs/guide/members.ja.md @@ -0,0 +1,112 @@ +# メンバーと権限 + +haizu に **ログインする** 人たちです。マップ上に配置されログインしない[従業員](employees.ja.md)とは別の概念です。 + +[English](members.md) · [マニュアル目次に戻る](index.ja.md) + + + +## できること + +- メールアドレスでメンバーを **招待** する(1人ずつ、またはCSVで一括) +- メンバーごとに **組織権限** と **拠点ごとの権限** を設定する +- メンバーを停止する、招待を取り消す +- 自分の名前・メールアドレス・パスワードを変更する + +権限モデルの仕様は [docs/domain/member_permission.md](../domain/member_permission.md) にあります。 + +## 1人ずつ招待する + +1. **+ メンバーを招待** を押します。 +2. 姓・名・メールアドレスを入力します。 +3. **組織権限** を選びます。 + - **管理者** — 全拠点・事業所設定にアクセスできます。 + - **メンバー** — 権限を **拠点ごと** に設定します。 +4. 「メンバー」の場合は、担当拠点と、拠点ごとの権限を選びます。同じ人でも拠点ごとに異なる権限を設定できます。 +5. **招待する** を押します。 + +- 管理者 +
+ +- メンバー +
+ +招待された人にはリンク付きのメールが届き、パスワードを設定するとログインできます。設定するまでは **招待中** と表示され、**取消** で招待を取り消せます。 + +
+ +既存の組織へ本人が自分で登録する手段はありません(新規登録すると**別の組織**が作られます)。同僚は必ず招待から参加させてください。 + +## メンバーを編集する(権限の変更・停止) + +一覧からメンバーを選ぶと **メンバーを編集** が開き、招待時と同じ項目を後から変更できます。 + +- **組織権限** を「管理者」と「メンバー」の間で変更する +- 「メンバー」の場合、**担当拠点** の追加・削除と、**拠点ごとの権限**(拠点管理者/一般/その他)の変更 +- **このメンバーを有効にする** のチェックを外して **停止** する(停止中のメンバーはログインできません。記録と履歴は残ります) + +
+ +変更は **保存する** を押した時点で反映されます。すでにログイン中のメンバーには、次の画面遷移から新しい権限が適用されます。 + +変更できない組み合わせもあります。 + +- **自分自身の権限は変更できません。** 誰も自分を昇格・降格できません。 +- **拠点管理者は管理者を選べません。** 管理者への昇格(および管理者としての招待)ができるのは管理者だけです。 +- 拠点管理者が権限を変更できるのは **自分が拠点管理者である拠点** の分だけです。他拠点の権限には触れません。 + +## CSVで一括招待 + +**CSVで一括招待** は、CSVに載っている全員を **同じ権限・同じ担当拠点** で招待します。先に権限と担当拠点を選んでからアップロードしてください。 + +- 列は **姓・名・メールアドレス** です。**テンプレートをダウンロード** すると正しい形式のファイルが得られます。 +- 1ファイルあたり **最大200行** です。 +- プレビューで各行が **正常** / **エラー** と表示されます。従業員のCSV取込と違い、**エラー行はスキップ**され、正常な行だけが招待されます。 +- エラーの種類:姓が空、メールアドレスが空、メールアドレスの形式が不正、CSV内で重複、既存のメンバー・招待と重複。 + +
+ +## 権限 + +権限は2つのスコープに分かれます。**組織権限** は1人につき1つ、**拠点権限** は拠点ごとに変えられます。 + +| 権限 | できること | +|---|---| +| **管理者** | すべて。全拠点に加え、事業所設定と拠点管理も可能 | +| **拠点管理者** | 担当拠点内のすべて。ただし管理者としての招待・昇格、事業所設定、拠点の作成・編集は不可 | +| **一般** | 閲覧のみ(ホーム・配置履歴・ビュアー)。加えて自分の情報の編集 | +| **その他** | ビュアーの閲覧のみ | + +権限ごとに見える画面: + +| 画面 | 管理者 | 拠点管理者 | 一般 | その他 | +|---|:--:|:--:|:--:|:--:| +| ホーム | ✓ | ✓ | ✓ | — | +| 配置エリア | ✓ | ✓ | — | — | +| 配置決め | ✓ | ✓ | — | — | +| 配置履歴 | ✓ | ✓ | ✓ | — | +| ビュアー | ✓ | ✓ | ✓ | ✓ | +| 従業員 | ✓ | ✓ | — | — | +| 設定(シフト・タグ・ビュアー) | ✓ | ✓ | — | — | +| メンバー | ✓ | ✓ | — | — | +| 拠点管理 | ✓ | — | — | — | +| 事業所設定 | ✓ | — | — | — | +| アカウント設定 | ✓ | ✓ | ✓ | ✓ | + +拠点権限が効くのは、そのメンバーの担当拠点だけです。拠点管理者がメンバーを管理できるのは **自分が拠点管理者である拠点** に限られ、管理者権限を付与することはできません。また、自分自身の権限は誰も変更できません。 + +現場モニター用のアカウントには **その他** を割り当ててください。ビュアー以外は開けなくなります。 + +## 自分のアカウント + +- メンバー画面の **自分の情報**、またはサイドバーのユーザーメニューの **アカウント設定** から操作します。 +- 名前、**メールアドレス**(新しいアドレスに送られる確認コードで確定)、**パスワード**(現在のパスワードが必要)を変更できます。 +- 言語の切り替えもここにあります。選択内容は記憶され、環境の既定値より優先されます。 + +
+
+ +## 注意点 + +- 停止中のメンバーはログインできませんが、記録と履歴はそのまま残ります。 +- メンバーと担当拠点は事業所(組織)全体で管理されます。従業員は拠点ごとの管理です。 diff --git a/docs/guide/members.md b/docs/guide/members.md new file mode 100644 index 0000000..0d3bfcf --- /dev/null +++ b/docs/guide/members.md @@ -0,0 +1,107 @@ +# Members and permissions + +The people who **log in** to haizu. Distinct from [employees](employees.md), who are placed on the map and never log in. + +[日本語](members.ja.md) · [Back to guide index](index.md) + +## What you can do + +- **Invite** members by email, one at a time or in bulk from a CSV +- Set each member's **organization role** and their **role per site** +- Suspend a member, or cancel a pending invitation +- Change your own name, email, and password + +The model is specified in [docs/domain/member_permission.md](../domain/member_permission.md). + +## Inviting one member + +1. **+ Invite member**. +2. Enter last name, first name, and email. +3. Choose the **Organization role**: + - **Admin** — access to all sites and organization settings. + - **Member** — permissions are then set **per site**. +4. For a Member, pick the assigned sites and, for each, the site role. Different sites can have different roles for the same person. +5. **Send invitation**. + +
+
+ +The invitee gets an email with a link, sets their password, and can then log in. Until they do, they show as **Invited**, and you can **Cancel** the invitation. + +
+ +There is no self-service sign-up into an existing organization — signing up creates a *new* organization, so always bring colleagues in via an invitation. + +## Editing a member (changing permissions, suspending) + +Selecting a member from the list opens **Edit member**, where everything you set at invitation time can be changed later. + +- Switch the **organization role** between Admin and Member +- For a Member, add or remove **assigned sites**, and change the **site role** at each one (Site Admin / General / Other) +- Uncheck **Activate this member** to **suspend** them (suspended members can't log in; their record and history remain) + +
+ +Changes take effect when you press **Save**. A member who is already logged in gets the new permission from their next navigation. + +Some changes aren't possible: + +- **You can't change your own permission.** Nobody can promote or demote themselves. +- **A Site Admin can't choose Admin.** Only an Admin can promote someone to admin (or invite one). +- A Site Admin can only change permissions at **sites where they are a site admin** — never at another site. + +## Bulk invite via CSV + +**Bulk invite via CSV** invites everyone in a CSV **with the same permissions and the same assigned sites**. Choose those settings first, then upload. + +- Columns: **Last name, First name, Email**. **Download template** gives you the exact file. +- Up to **200 rows** per file. +- The preview marks each row **Valid** or **Error**. Unlike the employee import, **rows with errors are simply skipped** — the valid rows are still invited. +- Errors: last name empty, email empty, invalid email format, duplicate email within the CSV, or duplicates an existing member or invitation. + +
+ +## Permissions + +Roles come in two scopes: one **organization role**, and a **site role that can differ per site**. + +| Role | Can do | +|---|---| +| **Admin** | Everything, at every site, plus organization settings and site management | +| **Site Admin** | Everything within their sites — except inviting/promoting an admin, organization settings, and creating or editing sites | +| **General** | View only: home, assignment history, and the viewer. Plus editing their own info | +| **Other** | The viewer only | + +Which screens each role sees: + +| Screen | Admin | Site Admin | General | Other | +|---|:--:|:--:|:--:|:--:| +| Home | ✓ | ✓ | ✓ | — | +| Layout areas | ✓ | ✓ | — | — | +| Assignment | ✓ | ✓ | — | — | +| History | ✓ | ✓ | ✓ | — | +| Viewer | ✓ | ✓ | ✓ | ✓ | +| Employees | ✓ | ✓ | — | — | +| Settings (shifts, tags, viewer) | ✓ | ✓ | — | — | +| Members | ✓ | ✓ | — | — | +| Site management | ✓ | — | — | — | +| Organization settings | ✓ | — | — | — | +| Account settings | ✓ | ✓ | ✓ | ✓ | + +A site role only applies at the sites the member is assigned to. A Site Admin manages members **only at sites where they are a site admin**, and cannot grant admin. Nobody can change their own permission. + +Give a floor monitor account the **Other** role: it can open nothing but the viewer. + +## Your own account + +- **Your information** on the members screen, or **Account settings** from the sidebar user menu. +- Change your name, your **email address** (confirmed with a verification code sent to the new address), and your **password** (requires your current one). +- The language switcher is here too — your choice is remembered and overrides the deployment default. + +
+
+ +## Notes + +- Suspended members can't log in, but their record and history remain. +- Members and their site assignments are organization-wide; employees are per-site. diff --git a/docs/guide/settings.ja.md b/docs/guide/settings.ja.md new file mode 100644 index 0000000..71ef1f3 --- /dev/null +++ b/docs/guide/settings.ja.md @@ -0,0 +1,78 @@ +# 設定 + +一度決めたら、あとはあまり触らない項目をまとめています。 + +[English](settings.md) · [マニュアル目次に戻る](index.ja.md) + +**設定** 画面には、拠点単位の3つの設定(シフト・タグ・ビュアー表示)があります。拠点管理と事業所設定はサイドバーの別項目(管理者のみ)、自分のアカウント設定はユーザーメニューにあります。 + +## 働き方(シフト)設定 + +*設定 → 働き方(シフト)設定*。この拠点で1日をどう区切るかを決めます。 + +
+ +- **シフトなし** — 1日1シフト。時間帯の区分なし。配置決めもビュアーも区分なしで扱います。 +- **シフトあり** — 日勤・遅番・夜勤など、名前と時間で区分します。**+ シフトを追加** で **シフト名**・**開始**・**終了** を設定します。ドラッグで並び替えできます。 + +開始・終了が同じシフトは作れません。シフト名も重複できません。 + +> **後からシフトを変更すると、作成中の作業が破棄されます。** 変更・削除したシフトの配置決めの **下書き** は、保存時に破棄されます(保存前に確認ダイアログが出ます)。確定済みの配置は影響を受けず、[配置履歴](history.ja.md)にも残ります。 + +最初に設定すべき項目です。[ホーム](home.ja.md)の状況表示、[配置決め](assignment.ja.md)、ビュアーの自動切り替えは、いずれもここの時間帯を参照します。 + +## タグ管理 + +*設定 → タグ管理*。従業員に付ける自由なラベルです(「フォークリフト」「新人」「検査資格あり」など)。配置決めのときに候補を絞り込むために使います。 + +
+ +- 名前を入力して追加します。一覧から編集・削除でき、各タグを何名が使用しているかも表示されます。 +- **タグを削除すると、そのタグを持つ全従業員からも外れます。** 確認ダイアログに対象人数が表示されます。 +- CSV取込でタグを指定するには、**事前に**タグが登録されている必要があります。→ [employees.ja.md](employees.ja.md#csv取込) +- 1人の従業員に付けられるタグは最大10個です。 + + +## 配置ビュアー設定 + +*設定 → 配置ビュアー設定*。エリアごとに、大画面に何を映すかを決めます。挙動の説明は [viewer.ja.md](viewer.ja.md#何をいつ表示するか) にあります。ここはその設定場所です。 + +
+ +- **働き方に合わせて自動表示** — 時刻に追従します。シフト開始の **何分前/何分後** にそのシフトの配置へ切り替えるかを設定します(例:30分前にすると、早く来た人が次のシフトの配置を見られます)。 +
+- **強制表示** — 特定の **日付** とシフトを固定表示します。ビュアーには *強制表示中* のバッジが出ます。 +
+ +一覧では各エリアに **自動表示** / **強制表示** のバッジが付き、一目で判別できます。 + +## 拠点管理 + +*サイドバー → 拠点管理*。**管理者のみ。** + +**拠点** は工場・倉庫1つを指します。従業員・エリア・配置はすべていずれかの拠点に属します。 + +
+ +- **+ 拠点を追加** で拠点名と説明(任意)を入力します。 + +
+ +- 非アクティブにすると拠点選択画面に表示されなくなります。データは保持されます。 +- 操作対象の拠点はサイドバーの **切り替え** から変更します。 + + +## 事業所設定 + +*サイドバー → 事業所設定*。**管理者のみ。** + +事業所(組織)は会社そのもので、全拠点の最上位にあたります。**事業所名** と **連絡先メールアドレス**(確認コードで確定)を設定します。 + +
+ + +## アカウント設定 + +自分の名前・メールアドレス・パスワード・**言語** を設定します。サイドバーのユーザーメニューから開けます。すべての権限で利用できます。→ [members.ja.md](members.ja.md#自分のアカウント) + +
diff --git a/docs/guide/settings.md b/docs/guide/settings.md new file mode 100644 index 0000000..4026814 --- /dev/null +++ b/docs/guide/settings.md @@ -0,0 +1,78 @@ +# Settings + +Everything you configure once and then mostly leave alone. + +[日本語](settings.ja.md) · [Back to guide index](index.md) + +The **Settings** hub holds three site-level settings: shifts, tags, and viewer display. Site management and organization settings live separately in the sidebar (Admins only), and your own account is at the bottom of the user menu. + +## Shifts + +*Settings → Work style (shift) settings.* Choose how the day is divided at this site. + +
+ +- **No shifts** — one shift per day, no time divisions. Assignment and the viewer then work without shift divisions. +- **With shifts** — divide by name and time (day / late / night, …). Add each with **+ Add shift**, setting **Shift name**, **Start**, and **End**. Drag to reorder. + +Two shifts can't share the same start and end times, and names must be unique. + +> **Changing shifts later discards work in progress.** Assignment **drafts** for changed or deleted shifts are discarded when you save — the app warns you before saving. Confirmed placements are untouched and remain in [history](history.md). + +This is the first thing to set up: the [home](home.md) status, [assignment](assignment.md), and the viewer's automatic switching all read these time ranges. + +## Tags + +*Settings → Tag management.* Free-form labels you apply to employees ("forklift", "new hire", "inspection-certified", …), used to filter the pool when assigning. + +- Type a name and add it. Edit or delete from the list; each tag shows how many employees use it. +- **Deleting a tag also removes it from every employee** who has it. The confirmation tells you how many. +- Tags must exist **before** a CSV import can reference them — see [employees.md](employees.md#csv-import). +- An employee can carry up to 10 tags. + +
+ +## Viewer settings + +*Settings → Placement viewer settings.* Per area, decide what the big screen shows. See [viewer.md](viewer.md#what-it-shows-and-when-it-switches) for the behavior; here's where you set it. + +
+ +- **Auto display by work style** — follows the clock. Set how many **minutes before or after** the shift start it switches to that shift's placement (e.g. 30 minutes before, so early arrivals see the coming shift). + +
+ +- **Forced display** — pin a specific **date** and shift. The viewer then carries a *Forced* badge. + +
+ +Each area shows an **Auto** or **Forced** badge in the list so you can tell at a glance. + +## Site management + +*Sidebar → Site Management.* **Admins only.** + +A **site** is one factory or warehouse. Employees, areas, and assignments all belong to one. + +- **+ Add site** with a name and an optional description. + +
+
+ +- Deactivate a site to hide it from the site selection screen. Existing data is kept. +- Switch the site you're working in from the sidebar (**Switch**). + +## Organization settings + +*Sidebar → Organization Settings.* **Admins only.** + +The organization is the company — the top-level container for every site. Set the **organization name** and a **contact email address** (confirmed with a verification code). + +
+ +## Account settings + +Your own name, email, password, and **language**. Reachable from the sidebar user menu. Available to every role. See [members.md](members.md#your-own-account). + +
+ diff --git a/docs/guide/site-selection.ja.md b/docs/guide/site-selection.ja.md new file mode 100644 index 0000000..6786b2d --- /dev/null +++ b/docs/guide/site-selection.ja.md @@ -0,0 +1,36 @@ +# 拠点選択 + +ログイン直後に表示される画面です。どの工場・倉庫で作業するかを選びます。 + +[English](site-selection.md) · [マニュアル目次に戻る](index.ja.md) + +
+ +## 概要 + +**拠点** は工場・倉庫など1つを指し、ほぼすべての基準になります。従業員・配置エリア・配置決め・シフト・タグ・履歴は、いずれも拠点に属します。拠点が全ての基準となります。 + +権限も拠点ごとです。同じ人がA拠点では拠点管理者、B拠点では閲覧のみ、ということが起こります。→ [members.ja.md](members.ja.md#権限) + +## 操作手順 + +1. ログインします。アクセスできる拠点が複数ある場合、この画面に着きます。 +2. 各カードには拠点名・説明・従業員数が表示されます。**選択 →** を押します。 +3. **その拠点での**権限に応じた画面に着地します。通常は[ホーム](home.ja.md)ですが、その拠点での権限がビュアー閲覧のみの場合は[ビュアー](viewer.ja.md)に直接移動します。 + +後から別の拠点に移るには、サイドバーの **切り替え** を使います。ログアウトは不要です。 + +## 拠点を追加する + +この画面の **拠点を追加** から作成できますが、**管理者のみ**です。それ以外の権限ではボタンが無効化され、*管理者のみ* と表示されます。 + +拠点は [設定 → 拠点管理](settings.ja.md#拠点管理) からも管理でき、名前の変更や非アクティブ化ができます。 + +
+ + +## 注意点 + +- **表示されるのはアクティブな拠点だけです。** 拠点管理で非アクティブにすると、データを消さずにこの画面から隠せます。 +- 表示されるのは自分の担当拠点だけです。管理者はすべての拠点が見えます。 +- 選択中の拠点はURLに含まれます(`/s//…`)。ブックマークしておけば同じ拠点を直接開けます。 diff --git a/docs/guide/site-selection.md b/docs/guide/site-selection.md new file mode 100644 index 0000000..35987e1 --- /dev/null +++ b/docs/guide/site-selection.md @@ -0,0 +1,35 @@ +# Site selection + +The screen right after login. You pick which factory or warehouse you're working in. + +[日本語](site-selection.ja.md) · [Back to guide index](index.md) + +
+ +## Why it exists + +A **site** is one factory or warehouse, and it scopes almost everything: employees, layout areas, assignments, shifts, tags, and history all belong to a site. Nothing in the app makes sense until one is chosen, so this screen comes first. + +Permissions are per site too — the same person can be a Site Admin at one site and view-only at another. See [members.md](members.md#permissions). + +## Steps + +1. Log in. If you have access to more than one site, you land here. +2. Each card shows the site's name, description, and employee count. Press **Select →**. +3. You land on the screen your permission at *that site* allows: normally [Home](home.md), or straight to the [Viewer](viewer.md) if your role there is viewer-only. + +To move to another site later, use **Switch** in the sidebar — you don't have to log out. + +## Adding a site + +**Add site** on this screen creates one, but it's **Admins only** — the button is disabled for everyone else, marked *Admins only*. + +
+ +Sites can also be managed from [Settings → Site management](settings.md#site-management), where you can rename them or deactivate one. + +## Notes + +- **Only active sites appear here.** Deactivating a site in site management hides it from this screen without deleting its data. +- You only see sites you're assigned to. Admins see all of them. +- The current site is part of the URL (`/s//…`), so a bookmarked link reopens the same site directly. diff --git a/docs/guide/viewer.ja.md b/docs/guide/viewer.ja.md new file mode 100644 index 0000000..2657425 --- /dev/null +++ b/docs/guide/viewer.ja.md @@ -0,0 +1,40 @@ +# 配置ビュアー + +現場が見る画面です。表示専用で、ここから配置が変わることはありません。 + +[English](viewer.md) · [マニュアル目次に戻る](index.ja.md) + +## できること + +- エリアの **確定済み** 配置をモニターに大きく表示する +- **配置メンバー** の一覧パネルを開閉する +- 時刻に追従して自動表示させる、または特定の日付・シフトを強制表示する + +仕様: [docs/domain/layout_viewer.md](../domain/layout_viewer.md) + +## 操作手順 + +1. サイドバーの **ビュアー** に、エリアごとの現在の配置状況が一覧表示されます。 + +
+ +2. **大きく表示 →** で全画面表示になります。現場のモニターにこの画面を映してください。 +3. **フィット** で図面をウィンドウに合わせ直せます。**メンバーパネルの表示切替** で **配置メンバー** の一覧を開閉できます。 + +
+
+ +ヘッダーには表示日と、いま表示しているシフトが出ます。 + +## 何を、いつ表示するか + +エリアごとに [設定 → 配置ビュアー設定](settings.ja.md#配置ビュアー設定) で決めます。 + +- **働き方に合わせて自動表示**(初期値)— [シフト設定](settings.ja.md#働き方シフト設定)の時間帯に基づき、現在時刻に応じて今日のシフトを表示します。シフト開始の何分**前/後**に切り替えるかを調整できます。例:「30分前」なら、シフト開始の30分前に次のシフトの配置へ切り替わります(早めに来る人向け)。 +- **強制表示** — 指定した日付・シフトを常に表示します。ライブ表示と混同しないよう、**強制表示中** のバッジが出ます。特定の日を出しっぱなしにしたいときに使います。 + +## 注意点 + +- **表示されるのは確定済みの配置だけです。** 下書きの配置は「誰も配置されていない」状態として表示されます。モニターが空に見えるときは、まず配置が確定されているかを[配置決め](assignment.ja.md)で確認してください。 +- エリアに図面がない場合、その旨と[配置エディタ](editor.ja.md)で登録するよう案内が表示されます。 +- ビュアーは、「その他」(ビュアー閲覧のみ)を含む**すべての権限**が開ける唯一の画面です。だからこそ共有モニターに出しっぱなしにできます。 diff --git a/docs/guide/viewer.md b/docs/guide/viewer.md new file mode 100644 index 0000000..81d3b05 --- /dev/null +++ b/docs/guide/viewer.md @@ -0,0 +1,39 @@ +# Viewer + +The screen the floor reads. Display-only: nothing here changes a placement. + +[日本語](viewer.ja.md) · [Back to guide index](index.md) + +
+ +## What you can do + +- Show an area's **confirmed** placement full-size on a monitor +- Toggle a side panel listing the **placed members** +- Let it follow the clock automatically, or force a specific date and shift + +The spec: [docs/domain/layout_viewer.md](../domain/layout_viewer.md). + +## Steps + +1. **Viewer** in the sidebar lists the areas with their current placement status. +2. **Show large →** opens the full-size view. Point the floor's monitor at it. +3. **Fit** re-fits the plan to the window. **Toggle member panel** shows or hides the list of **Placed members**. + +
+
+ +The header shows the display date and the shift it's currently showing. + +## What it shows, and when it switches + +Per area, in [Settings → Placement viewer settings](settings.md#viewer-settings): + +- **Auto display by work style** (default) — follows the current time and shows today's shift, based on the time ranges in your [shift settings](settings.md#shifts). You can tune how many minutes **before or after** the shift start it switches to that shift's placement. E.g. "30 minutes before" means the next shift's placement appears 30 minutes ahead of the shift starting — useful for people arriving early. +- **Forced display** — always show a specified date and shift. The viewer shows a **Forced display** badge so nobody mistakes it for live. Use this for a day you want to keep on screen. + +## Notes + +- **Only confirmed placements appear.** A draft placement shows as nothing placed. If the monitor looks empty, the placement probably wasn't confirmed — check [Assignment](assignment.md). +- If the area has no floor plan, the viewer says so and asks you to register one in the [layout editor](editor.md). +- The viewer is the one screen **every** role can open, including members with "Other" (viewer-only) permission. That's what makes it safe to leave on a shared monitor. diff --git a/docs/images/guide/assignment/assign-ja.png b/docs/images/guide/assignment/assign-ja.png new file mode 100644 index 0000000..44cf65c Binary files /dev/null and b/docs/images/guide/assignment/assign-ja.png differ diff --git a/docs/images/guide/assignment/assign.png b/docs/images/guide/assignment/assign.png new file mode 100644 index 0000000..d66b70b Binary files /dev/null and b/docs/images/guide/assignment/assign.png differ diff --git a/docs/images/guide/assignment/fixed-budge-ja.png b/docs/images/guide/assignment/fixed-budge-ja.png new file mode 100644 index 0000000..af89388 Binary files /dev/null and b/docs/images/guide/assignment/fixed-budge-ja.png differ diff --git a/docs/images/guide/assignment/fixed-budge.png b/docs/images/guide/assignment/fixed-budge.png new file mode 100644 index 0000000..b05ea30 Binary files /dev/null and b/docs/images/guide/assignment/fixed-budge.png differ diff --git a/docs/images/guide/assignment/fixed-ja.png b/docs/images/guide/assignment/fixed-ja.png new file mode 100644 index 0000000..83ed4ad Binary files /dev/null and b/docs/images/guide/assignment/fixed-ja.png differ diff --git a/docs/images/guide/assignment/fixed.png b/docs/images/guide/assignment/fixed.png new file mode 100644 index 0000000..2c03525 Binary files /dev/null and b/docs/images/guide/assignment/fixed.png differ diff --git a/docs/images/guide/assignment/initial-ja.png b/docs/images/guide/assignment/initial-ja.png new file mode 100644 index 0000000..d5b1bb0 Binary files /dev/null and b/docs/images/guide/assignment/initial-ja.png differ diff --git a/docs/images/guide/assignment/initial.png b/docs/images/guide/assignment/initial.png new file mode 100644 index 0000000..a971ed6 Binary files /dev/null and b/docs/images/guide/assignment/initial.png differ diff --git a/docs/images/guide/assignment/list-ja.png b/docs/images/guide/assignment/list-ja.png new file mode 100644 index 0000000..4e09977 Binary files /dev/null and b/docs/images/guide/assignment/list-ja.png differ diff --git a/docs/images/guide/assignment/list.png b/docs/images/guide/assignment/list.png new file mode 100644 index 0000000..39226c6 Binary files /dev/null and b/docs/images/guide/assignment/list.png differ diff --git a/docs/images/guide/editor/add-area-ja.png b/docs/images/guide/editor/add-area-ja.png new file mode 100644 index 0000000..41a44db Binary files /dev/null and b/docs/images/guide/editor/add-area-ja.png differ diff --git a/docs/images/guide/editor/add-area.png b/docs/images/guide/editor/add-area.png new file mode 100644 index 0000000..1dfbf9c Binary files /dev/null and b/docs/images/guide/editor/add-area.png differ diff --git a/docs/images/guide/editor/draft-save-ja.png b/docs/images/guide/editor/draft-save-ja.png new file mode 100644 index 0000000..6317380 Binary files /dev/null and b/docs/images/guide/editor/draft-save-ja.png differ diff --git a/docs/images/guide/editor/draft-save.png b/docs/images/guide/editor/draft-save.png new file mode 100644 index 0000000..a36cd3a Binary files /dev/null and b/docs/images/guide/editor/draft-save.png differ diff --git a/docs/images/guide/editor/empty-floor-image-ja.png b/docs/images/guide/editor/empty-floor-image-ja.png new file mode 100644 index 0000000..5b13841 Binary files /dev/null and b/docs/images/guide/editor/empty-floor-image-ja.png differ diff --git a/docs/images/guide/editor/empty-floor-image.png b/docs/images/guide/editor/empty-floor-image.png new file mode 100644 index 0000000..f0a2658 Binary files /dev/null and b/docs/images/guide/editor/empty-floor-image.png differ diff --git a/docs/images/guide/editor/floor-image-ja.png b/docs/images/guide/editor/floor-image-ja.png new file mode 100644 index 0000000..f42ef0f Binary files /dev/null and b/docs/images/guide/editor/floor-image-ja.png differ diff --git a/docs/images/guide/editor/floor-image.png b/docs/images/guide/editor/floor-image.png new file mode 100644 index 0000000..64c1ebb Binary files /dev/null and b/docs/images/guide/editor/floor-image.png differ diff --git a/docs/images/guide/editor/list-ja.png b/docs/images/guide/editor/list-ja.png new file mode 100644 index 0000000..2048172 Binary files /dev/null and b/docs/images/guide/editor/list-ja.png differ diff --git a/docs/images/guide/editor/list.png b/docs/images/guide/editor/list.png new file mode 100644 index 0000000..6e52f0d Binary files /dev/null and b/docs/images/guide/editor/list.png differ diff --git a/docs/images/guide/editor/new-version-ja.png b/docs/images/guide/editor/new-version-ja.png new file mode 100644 index 0000000..934263b Binary files /dev/null and b/docs/images/guide/editor/new-version-ja.png differ diff --git a/docs/images/guide/editor/new-version.png b/docs/images/guide/editor/new-version.png new file mode 100644 index 0000000..85cda18 Binary files /dev/null and b/docs/images/guide/editor/new-version.png differ diff --git a/docs/images/guide/editor/publish-ja.png b/docs/images/guide/editor/publish-ja.png new file mode 100644 index 0000000..104a292 Binary files /dev/null and b/docs/images/guide/editor/publish-ja.png differ diff --git a/docs/images/guide/editor/publish.png b/docs/images/guide/editor/publish.png new file mode 100644 index 0000000..ee50651 Binary files /dev/null and b/docs/images/guide/editor/publish.png differ diff --git a/docs/images/guide/editor/spot-ja.png b/docs/images/guide/editor/spot-ja.png new file mode 100644 index 0000000..f1a11ec Binary files /dev/null and b/docs/images/guide/editor/spot-ja.png differ diff --git a/docs/images/guide/editor/spot.png b/docs/images/guide/editor/spot.png new file mode 100644 index 0000000..a3405fe Binary files /dev/null and b/docs/images/guide/editor/spot.png differ diff --git a/docs/images/guide/employee/add-ja.png b/docs/images/guide/employee/add-ja.png new file mode 100644 index 0000000..15dc753 Binary files /dev/null and b/docs/images/guide/employee/add-ja.png differ diff --git a/docs/images/guide/employee/add.png b/docs/images/guide/employee/add.png new file mode 100644 index 0000000..1c5f808 Binary files /dev/null and b/docs/images/guide/employee/add.png differ diff --git a/docs/images/guide/employee/import-preview-ja.png b/docs/images/guide/employee/import-preview-ja.png new file mode 100644 index 0000000..a016066 Binary files /dev/null and b/docs/images/guide/employee/import-preview-ja.png differ diff --git a/docs/images/guide/employee/import-preview.png b/docs/images/guide/employee/import-preview.png new file mode 100644 index 0000000..a7d51af Binary files /dev/null and b/docs/images/guide/employee/import-preview.png differ diff --git a/docs/images/guide/employee/list-ja.png b/docs/images/guide/employee/list-ja.png new file mode 100644 index 0000000..474d04c Binary files /dev/null and b/docs/images/guide/employee/list-ja.png differ diff --git a/docs/images/guide/employee/list.png b/docs/images/guide/employee/list.png new file mode 100644 index 0000000..9e8018c Binary files /dev/null and b/docs/images/guide/employee/list.png differ diff --git a/docs/images/guide/history/detail-ja.png b/docs/images/guide/history/detail-ja.png new file mode 100644 index 0000000..1218d69 Binary files /dev/null and b/docs/images/guide/history/detail-ja.png differ diff --git a/docs/images/guide/history/detail.png b/docs/images/guide/history/detail.png new file mode 100644 index 0000000..54fcffc Binary files /dev/null and b/docs/images/guide/history/detail.png differ diff --git a/docs/images/guide/history/list-ja.png b/docs/images/guide/history/list-ja.png new file mode 100644 index 0000000..34b2f0f Binary files /dev/null and b/docs/images/guide/history/list-ja.png differ diff --git a/docs/images/guide/history/list.png b/docs/images/guide/history/list.png new file mode 100644 index 0000000..d82ae71 Binary files /dev/null and b/docs/images/guide/history/list.png differ diff --git a/docs/images/guide/home/overview-en.png b/docs/images/guide/home/overview-en.png new file mode 100644 index 0000000..3996fb1 Binary files /dev/null and b/docs/images/guide/home/overview-en.png differ diff --git a/docs/images/guide/home/overview-ja.png b/docs/images/guide/home/overview-ja.png new file mode 100644 index 0000000..1c03298 Binary files /dev/null and b/docs/images/guide/home/overview-ja.png differ diff --git a/docs/images/guide/home/setup-en.png b/docs/images/guide/home/setup-en.png new file mode 100644 index 0000000..d23e56e Binary files /dev/null and b/docs/images/guide/home/setup-en.png differ diff --git a/docs/images/guide/home/setup-ja.png b/docs/images/guide/home/setup-ja.png new file mode 100644 index 0000000..fd48e58 Binary files /dev/null and b/docs/images/guide/home/setup-ja.png differ diff --git a/docs/images/guide/member/account-nav-ja.png b/docs/images/guide/member/account-nav-ja.png new file mode 100644 index 0000000..1b832e7 Binary files /dev/null and b/docs/images/guide/member/account-nav-ja.png differ diff --git a/docs/images/guide/member/account-nav.png b/docs/images/guide/member/account-nav.png new file mode 100644 index 0000000..a263f18 Binary files /dev/null and b/docs/images/guide/member/account-nav.png differ diff --git a/docs/images/guide/member/csv-import-ja.png b/docs/images/guide/member/csv-import-ja.png new file mode 100644 index 0000000..4ce094b Binary files /dev/null and b/docs/images/guide/member/csv-import-ja.png differ diff --git a/docs/images/guide/member/csv-import.png b/docs/images/guide/member/csv-import.png new file mode 100644 index 0000000..37396bf Binary files /dev/null and b/docs/images/guide/member/csv-import.png differ diff --git a/docs/images/guide/member/edit-account-ja.png b/docs/images/guide/member/edit-account-ja.png new file mode 100644 index 0000000..ee1950b Binary files /dev/null and b/docs/images/guide/member/edit-account-ja.png differ diff --git a/docs/images/guide/member/edit-account.png b/docs/images/guide/member/edit-account.png new file mode 100644 index 0000000..bb772ba Binary files /dev/null and b/docs/images/guide/member/edit-account.png differ diff --git a/docs/images/guide/member/edit-member-ja.png b/docs/images/guide/member/edit-member-ja.png new file mode 100644 index 0000000..e89127e Binary files /dev/null and b/docs/images/guide/member/edit-member-ja.png differ diff --git a/docs/images/guide/member/edit-member.png b/docs/images/guide/member/edit-member.png new file mode 100644 index 0000000..53876f4 Binary files /dev/null and b/docs/images/guide/member/edit-member.png differ diff --git a/docs/images/guide/member/invite-admin-ja.png b/docs/images/guide/member/invite-admin-ja.png new file mode 100644 index 0000000..199f064 Binary files /dev/null and b/docs/images/guide/member/invite-admin-ja.png differ diff --git a/docs/images/guide/member/invite-admin.png b/docs/images/guide/member/invite-admin.png new file mode 100644 index 0000000..579004c Binary files /dev/null and b/docs/images/guide/member/invite-admin.png differ diff --git a/docs/images/guide/member/invite-member-ja.png b/docs/images/guide/member/invite-member-ja.png new file mode 100644 index 0000000..3a044c2 Binary files /dev/null and b/docs/images/guide/member/invite-member-ja.png differ diff --git a/docs/images/guide/member/invite-member.png b/docs/images/guide/member/invite-member.png new file mode 100644 index 0000000..cb0f750 Binary files /dev/null and b/docs/images/guide/member/invite-member.png differ diff --git a/docs/images/guide/member/list-inviting-ja.png b/docs/images/guide/member/list-inviting-ja.png new file mode 100644 index 0000000..d3168af Binary files /dev/null and b/docs/images/guide/member/list-inviting-ja.png differ diff --git a/docs/images/guide/member/list-inviting.png b/docs/images/guide/member/list-inviting.png new file mode 100644 index 0000000..b791583 Binary files /dev/null and b/docs/images/guide/member/list-inviting.png differ diff --git a/docs/images/guide/setting/account-ja.png b/docs/images/guide/setting/account-ja.png new file mode 100644 index 0000000..259fb86 Binary files /dev/null and b/docs/images/guide/setting/account-ja.png differ diff --git a/docs/images/guide/setting/account.png b/docs/images/guide/setting/account.png new file mode 100644 index 0000000..281e9c8 Binary files /dev/null and b/docs/images/guide/setting/account.png differ diff --git a/docs/images/guide/setting/add-site-ja.png b/docs/images/guide/setting/add-site-ja.png new file mode 100644 index 0000000..0063c3b Binary files /dev/null and b/docs/images/guide/setting/add-site-ja.png differ diff --git a/docs/images/guide/setting/add-site.png b/docs/images/guide/setting/add-site.png new file mode 100644 index 0000000..355474c Binary files /dev/null and b/docs/images/guide/setting/add-site.png differ diff --git a/docs/images/guide/setting/edit-org-ja.png b/docs/images/guide/setting/edit-org-ja.png new file mode 100644 index 0000000..5cf1b17 Binary files /dev/null and b/docs/images/guide/setting/edit-org-ja.png differ diff --git a/docs/images/guide/setting/edit-org.png b/docs/images/guide/setting/edit-org.png new file mode 100644 index 0000000..250f4a1 Binary files /dev/null and b/docs/images/guide/setting/edit-org.png differ diff --git a/docs/images/guide/setting/shift-ja.png b/docs/images/guide/setting/shift-ja.png new file mode 100644 index 0000000..70c7451 Binary files /dev/null and b/docs/images/guide/setting/shift-ja.png differ diff --git a/docs/images/guide/setting/shift.png b/docs/images/guide/setting/shift.png new file mode 100644 index 0000000..07ab2b8 Binary files /dev/null and b/docs/images/guide/setting/shift.png differ diff --git a/docs/images/guide/setting/site-list-ja.png b/docs/images/guide/setting/site-list-ja.png new file mode 100644 index 0000000..2bb8320 Binary files /dev/null and b/docs/images/guide/setting/site-list-ja.png differ diff --git a/docs/images/guide/setting/site-list.png b/docs/images/guide/setting/site-list.png new file mode 100644 index 0000000..f724235 Binary files /dev/null and b/docs/images/guide/setting/site-list.png differ diff --git a/docs/images/guide/setting/tag-ja.png b/docs/images/guide/setting/tag-ja.png new file mode 100644 index 0000000..ae0e339 Binary files /dev/null and b/docs/images/guide/setting/tag-ja.png differ diff --git a/docs/images/guide/setting/tag.png b/docs/images/guide/setting/tag.png new file mode 100644 index 0000000..7ac14a6 Binary files /dev/null and b/docs/images/guide/setting/tag.png differ diff --git a/docs/images/guide/setting/viewer-auto-ja.png b/docs/images/guide/setting/viewer-auto-ja.png new file mode 100644 index 0000000..bf845ec Binary files /dev/null and b/docs/images/guide/setting/viewer-auto-ja.png differ diff --git a/docs/images/guide/setting/viewer-auto.png b/docs/images/guide/setting/viewer-auto.png new file mode 100644 index 0000000..bd1a743 Binary files /dev/null and b/docs/images/guide/setting/viewer-auto.png differ diff --git a/docs/images/guide/setting/viewer-force-ja.png b/docs/images/guide/setting/viewer-force-ja.png new file mode 100644 index 0000000..b4bc5ed Binary files /dev/null and b/docs/images/guide/setting/viewer-force-ja.png differ diff --git a/docs/images/guide/setting/viewer-force.png b/docs/images/guide/setting/viewer-force.png new file mode 100644 index 0000000..2aa3d24 Binary files /dev/null and b/docs/images/guide/setting/viewer-force.png differ diff --git a/docs/images/guide/setting/viewer-list-ja.png b/docs/images/guide/setting/viewer-list-ja.png new file mode 100644 index 0000000..3c52a80 Binary files /dev/null and b/docs/images/guide/setting/viewer-list-ja.png differ diff --git a/docs/images/guide/setting/viewer-list.png b/docs/images/guide/setting/viewer-list.png new file mode 100644 index 0000000..4fa8a8a Binary files /dev/null and b/docs/images/guide/setting/viewer-list.png differ diff --git a/docs/images/guide/signup/signup-ja.png b/docs/images/guide/signup/signup-ja.png new file mode 100644 index 0000000..644aceb Binary files /dev/null and b/docs/images/guide/signup/signup-ja.png differ diff --git a/docs/images/guide/signup/signup-otp-ja.png b/docs/images/guide/signup/signup-otp-ja.png new file mode 100644 index 0000000..8a4e053 Binary files /dev/null and b/docs/images/guide/signup/signup-otp-ja.png differ diff --git a/docs/images/guide/signup/signup-otp.png b/docs/images/guide/signup/signup-otp.png new file mode 100644 index 0000000..500d6e1 Binary files /dev/null and b/docs/images/guide/signup/signup-otp.png differ diff --git a/docs/images/guide/signup/signup.png b/docs/images/guide/signup/signup.png new file mode 100644 index 0000000..ebeb9fa Binary files /dev/null and b/docs/images/guide/signup/signup.png differ diff --git a/docs/images/guide/site/add-site-en.png b/docs/images/guide/site/add-site-en.png new file mode 100644 index 0000000..6e847dc Binary files /dev/null and b/docs/images/guide/site/add-site-en.png differ diff --git a/docs/images/guide/site/add-site-ja.png b/docs/images/guide/site/add-site-ja.png new file mode 100644 index 0000000..2852dc6 Binary files /dev/null and b/docs/images/guide/site/add-site-ja.png differ diff --git a/docs/images/guide/site/select-site-en.png b/docs/images/guide/site/select-site-en.png new file mode 100644 index 0000000..253609b Binary files /dev/null and b/docs/images/guide/site/select-site-en.png differ diff --git a/docs/images/guide/site/select-site-ja.png b/docs/images/guide/site/select-site-ja.png new file mode 100644 index 0000000..ff96110 Binary files /dev/null and b/docs/images/guide/site/select-site-ja.png differ diff --git a/docs/images/guide/viewer/list-ja.png b/docs/images/guide/viewer/list-ja.png new file mode 100644 index 0000000..d375028 Binary files /dev/null and b/docs/images/guide/viewer/list-ja.png differ diff --git a/docs/images/guide/viewer/list.png b/docs/images/guide/viewer/list.png new file mode 100644 index 0000000..46bccdb Binary files /dev/null and b/docs/images/guide/viewer/list.png differ diff --git a/docs/images/guide/viewer/viewer-full-ja.png b/docs/images/guide/viewer/viewer-full-ja.png new file mode 100644 index 0000000..55513e5 Binary files /dev/null and b/docs/images/guide/viewer/viewer-full-ja.png differ diff --git a/docs/images/guide/viewer/viewer-full.png b/docs/images/guide/viewer/viewer-full.png new file mode 100644 index 0000000..b2ef533 Binary files /dev/null and b/docs/images/guide/viewer/viewer-full.png differ diff --git a/docs/images/guide/viewer/viewer-ja.png b/docs/images/guide/viewer/viewer-ja.png new file mode 100644 index 0000000..be6a9d7 Binary files /dev/null and b/docs/images/guide/viewer/viewer-ja.png differ diff --git a/docs/images/guide/viewer/viewer.png b/docs/images/guide/viewer/viewer.png new file mode 100644 index 0000000..4487b30 Binary files /dev/null and b/docs/images/guide/viewer/viewer.png differ