Skip to content

slbotbm/phase4

Repository files navigation

phase4

プロジェクトの概要

このプロジェクトは株式会社Fusicのエンジニアの方々から頂いた提案です。要するにある案件が来たとき、エンジニアの空き状況がわからない営業者はその案件の受け入れに付いて判断できないようです。そのために我々はこのプロジェクトを開発しました。主な機能は次の2つです: 1.ガントチャート: 現在、様々な案件に取り組んでいるチームすべての情報の可視化する機能です。 image image 2. 検索機能: 案件、エンジニア、と技術につて様々な条件のもとで検索ができ、会社全体がより深く理解できます。 image image image

Controllers・コントローラ

SearchController

  1. index: この関数は、'search.index'というビューファイルを返します。その中には'overtime'作業を行ったすべての従業員が含まれた変数 'projects' があります。 'overtime' メソッドは、Employeeモデルで呼び出され、'overtime' 作業を行った従業員のみを取得します。

  2. create: この関数は、'search.input'というビューファイルを返します。これは従業員を名前や他の基準に基づいて検索するための入力フォームを表示します。

  3. init: この関数は、'search.see'というビューファイルを返しますが、与えられたコードスニペットからはその目的が明確ではありません。

  4. employeeSearch: この関数は、キーワード、カテゴリ、順序などのさまざまな検索パラメータに基づいて従業員を検索し、 'search.employeeIndex' ビューテンプレートを使用してページネーションされた検索結果を返します。

  5. projectSearch: この関数は、キーワード、カテゴリ、ステータス、順序などのさまざまな検索パラメータに基づいてプロジェクトを検索し、 'search.projectIndex' ビューテンプレートを使用してページネーションされた検索結果を返します。

  6. technologySearch: この関数は、キーワード、カテゴリなどのさまざまな検索パラメータに基づいて技術を検索し、 'search.technologyIndex' ビューテンプレートを使用してページネーションされた検索結果を返します。

ProjectController

  1. getProjectDataforGantt:
  • 開始日で昇順にソートされたすべてのプロジェクトを取得します。
  • $tasksおよび$linksという2つの配列を初期化します。これらの配列は、ガントチャートをレンダリングするために必要な情報を保持します。
  • 各プロジェクトをループし、以下の手順を実行します:
    • プロジェクトの期間(日単位)を計算します。
    • プロジェクトの進捗を決定します。現在の日付がプロジェクトの開始日よりも前の場合、進捗をゼロに設定します。それ以外の場合は、開始日からの経過時間と総期間の比率を計算します。
    • $tasks配列に、プロジェクトに関する情報を含む新しいエントリを作成します。これには、ID、テキストラベル(つまり、プロジェクト名)、開始日、終了日、タイプ("project"に設定)、およびオープン状態(trueに設定)が含まれます。
    • プロジェクトに割り当てられたすべての従業員を取得します。
    • 各従業員に対して、以下の手順を実行します:
      • 従業員のタスクの開始日と期間を計算します。
      • 従業員のタスクの進捗を決定します。プロジェクトがまだ始まっていない場合、進捗をゼロに設定します。それ以外の場合、プロジェクトが終了している場合は進捗を1に設定します。それ以外の場合は、プロジェクトの開始日からの経過時間と総期間の比率を計算します。
      • $tasks配列に、従業員のタスクに関する情報を含む新しいエントリを作成します。これには、ID、テキストラベル(つまり、従業員の名前)、開始日、期間、および親ID(プロジェクトのID)が含まれます。
      • $links配列に、従業員のタスクをその親プロジェクトに接続するリンクレコードを追加します。
  • $tasksおよび$linksの配列を含むJSONレスポンスを返します。
  1. *index: *このメソッドはユーザーをプロジェクトの検索ページにリダイレクトします。
  2. **show:**このメソッドは、関連する技術や従業員を含む単一のプロジェクトを取得し、それをビューにレンダリングします。

EmployeeController:

  1. index: この関数はユーザーをsearch.employeeにリディレクとしています。
  2. **show:**この関数は、特定の従業員に関する詳細情報を取得し表示します。関連する技術、開始日でソートされたプロジェクト、すべてのプロジェクトでの総労働時間を含み、これらを 'employee.show' ビューにレンダリングします。

TechnologyController:

1.index: この関数はユーザーをsearch.technologyにリディレクとしています。 2. show: この関数は、特定の技術に関する情報を取得し、関連する従業員やプロジェクトを含めて 'technology.show' ビューにレンダリングします。

Model・モデル

Employee・社員

テーブルの定義
カラムの名前 意味 種類
id 識別子 Integer
name 名前 String
age 年齢 Integer
sex 性別 String
start_of_employment 就業開始日 Date
profile_url プロフィールURL String
still_working 今も働いている Boolean
timestamps タイムスタンプ datetime
他のモデルとの関係
  • Technology・テクノロギ: 多対多
  • Position・役職:多対多関
  • Project・プロジェクト:多対多

Project・ポルジェクト

テーブルの定義
カラムの名前 意味 種類
id 識別子 Integer
project_name プロジェクト名 String
customer_name 顧客名 String
details 詳細 Long Text
start_date 開始日 Date
end_date 終了日 Date
hours_required_per_month 月間必要時間 Integer
cost コスト Integer
timestamps タイムスタンプ datetime
他のモデルとの関係
  • Employee・社員:多対多
  • Technology・テクノロギ:多対多

Technology・テクノロギ

テーブルの定義
カラムの名前 意味 種類
id 識別子 Integer
technology_name 技術名 String
technology_field 技術分野 String
timestamps タイムスタンプ datetime
他のモデルとの関係
  • Employee・社員:多対多
  • Project・プロジェクト:多対多

Associative Tables・中間テーブル

Employee-Technology・社員対テクノロギ

カラム名 意味 種類
id 識別子 Integer
employee_id 従業員の外部キー Integer (外部キー制約)
technology_id 技術の外部キー Integer (外部キー制約)
timestamps タイムスタンプ datetime

Project-Technology・プロジェクトたいテクノロギ

カラム名 意味 Type
id 識別子 Integer
project_id プロジェクトの外部キー Integer (外部キー制約)
technology_id テクノロジーの外部キー Integer (外部キー制約)
timestamps タイムスタンプ datetime

Project-Employee・プロジェクト対社員

カラム名 意味 Type
id 識別子 Integer
project_id プロジェクトの外部キー Integer (外部キー制約)
employee_id 従業員の外部キー Integer (外部キー制約)
project_employee_hours プロジェクトにかかる従業員の時間数 Integer (外部キー制約)
timestamps タイムスタンプ datetime

Factory・ファクトリ

EmployeeFactory

カラム名 Faker で生成されるデータの説明
name フェイカーによって生成される偽名
age フェイカーによって生成される18歳から50歳までの年齢
sex フェイカーによってランダムに選択される「男性」または「女性」
start_of_employment フェイカーによって過去8年から現在までの間で生成される雇用開始日
profile_url https://fusic.co.jp/members/ にランダムな番号が付与されるプロフィールURL
still_working フェイカーによって生成される真偽値(働いているかどうか)

ProjectFactory

カラム名 Faker で生成されるデータの説明
project_name 3 ~ 6 語のランダムなプロジェクト名
customer_name ランダムに生成される企業名
details 最大 700 文字のランダムなテキスト
start_date 直近 6 ヶ月から次の 1 年までの間のランダムな開始日時
end_date 開始日時から次の 2 年以内のランダムな終了日時
hours_required_per_month 1 ヶ月あたりの必要な労働時間(60 ~ 100 時間のランダムな数値)
cost プロジェクトのコスト(1,000,000 ~ 10,000,000 円のランダムな数値)

TechnologyFactory

カラム名 Faker で生成されるデータの説明
technology_name ランダムに選択された技術名
technology_field 技術が属する領域('frontend'、'server-side'、'backend' のいずれか)

Seeder・シーダー

  1. User モデルに対して、ランダムなユーザー情報を生成し、10人分のデータをデータベースに保存します。
  2. User モデルに対して、特定の情報を持つテストユーザーを1人生成し、データベースに保存します。
  3. Technology モデルの生成: Technology モデルに対して、TechnologyFactory で定義された技術名とそのフィールドのリストを使用して、それぞれの技術情報を生成し、データベースに保存します。これにより、様々な技術情報がデータベースに挿入されます。
  4. Employee モデルの生成とアタッチ: Employee モデルに対して、ランダムに生成された従業員情報を100人分生成し、それぞれの従業員に対してランダムに技術をアタッチします。これにより、従業員の技術スキルがデータベースに関連付けられます。
  5. Project モデルの生成とアタッチ: Project モデルに対して、ランダムに生成されたプロジェクト情報を20個分生成し、それぞれのプロジェクトに対してランダムに技術と従業員をアタッチします。これにより、プロジェクトが使用する技術や関連する従業員がデータベースに登録されます。

About

カタパルトフェース4のリポジトリー

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages