# 【レンタックス】クローズ物件リスト配信 ## 目次 - [【レンタックス】クローズ物件リスト配信](#レンタックスクローズ物件リスト配信) - [目次](#目次) - [改版履歴](#改版履歴) - [背景・要旨](#背景・要旨) - [概要](#概要) - [実装](#実装) - [Kintoneから建屋データ取得](#Kintoneから建屋データ取得) - [i-SPから部屋データ取得](#i-SPから部屋データ取得) - [取得項目(クローズ物件)](#取得項目クローズ物件) - [取得項目(WEBクローズ)](#取得項目webクローズ) - [実装の方針](#実装の方針) ## 改版履歴 - 2023/07/17 M.kitahata 新規作成 ## 背景・要旨 - レンタックスでは毎月1日「クローズ」物件のEXCELリスト配信を行っている。 - また東エリアではオーナー担当と営業店にて「WEBクローズ」物件の共有を行っている。 →何れの方法もレンタックスの運用負荷が大きく、営業店との認識の乖離も発生している。 ## 概要 - 建物単位の情報として、Kintone.オーナーリストに募集形態(クローズ・WEBクローズ・オープン)の情報を登録する。 - 部屋単位の情報として、i-SPの部屋台帳にはメモ欄に「クローズ」「WEBクローズ」を記載する。 - クローズ物件については更にステータスを「家主調整中」とする。 - 上記のKintone・i-SPから対象物件の情報を抽出し、営業店向けに定期的に配信を行う。 ## 実装 - 1.KintoneからAPIで対象の建屋・募集形態を取得 - 2.i-SPの部屋台帳から「クローズ」「WEBクローズ」対象の情報を取得 - 3.リスト作成・営業店に配信 ## Kintoneから建屋データ取得 - 対象AP:オーナーリスト - 条件:管理切れを除く、「クローズ」または「WEBクローズ」にチェック有り - 項目:物件名・物件住所・募集形態・クローズ店舗 - 募集形態:ドロップダウン - 物件名:文字列__1行_ - 物件住所:文字列__1行__0 - 募集形態:募集形態 - クローズ店舗:クローズ店舗 - クローズ時備考:クローズ時備考 - エリア:ドロップダウン_0 - オーナー担当:ユーザ選択 ## WEBクローズフォーマット修正 ## Kintone-i-SP I/F検討 - JSONファイルをI/Fとして利用する。 - i-SP側にはファイルパスを引数として渡す。 ## i-SPから部屋データ取得 - 項番1で取得した建屋について、部屋台帳から情報を取得する。 - クローズ物件:ステータスが家主調整中、メモに「クローズ」(≠WEBクローズ) - WEBクローズ物件:空室、メモに「WEBクローズ」 - クローズ物件の場合、WEB掲載に必要な情報を記載する。 - WEBクローズ物件の場合、空室WEB経由で情報は入手できる為、対象の物件が特定出来れば良い ## 取得項目(クローズ物件) | 項目 | サンプル値 | 区分 | | ------- | -------------------------------------------------------- | --- | | エリア | 東 タブ2 テーブル6 | 建屋 | | 最寄駅 | 阪神鳴尾 テキスト26 | 建屋 | | 駅徒歩 | 4分 テキスト27 | 建物 | | 建物名称 | パラディオンⅢ テキスト1 | 建物 | | 部屋番号 | 305 テキスト2 | 部屋 | | 間取 | 1LDK テーブル30 | 部屋 | | 所在地 | 兵庫県西宮市里中町2-9-11 テキスト18・19・20 | 建物 | | 種別 | マンション テーブル17 | 建物 | | 専有面積 | 42.16㎡ テキスト6 | 部屋 | | 礼金 | 150,000 | 部屋 | | 家賃 | 95,000 位置は変動 | 部屋 | | 共益費 | 5,000 | 部屋 | | 水道代 | 検針 | 部屋 | | 広告料 | 1ヵ月 | 部屋 | | 鍵場所 | AL:呼1732、部屋ジョイナー4649 | 部屋 | | 現況 | 退去予定 | 部屋 | | 担当 | 担当:窪田 タブ2 テキスト3 | 建屋 | | 駐車場・駐輪場 | ※バイク(原付)駐輪不可 | 部屋 | | 広告用メモ | *鍵交換代19,800円(税込)*退去時ハウスクリーニング代22,000円(税込)*礼金1ヵ月の場合、BK2ヶ月 | 部屋| - 部屋メモ:テキストエリア0 ### 賃料・敷金情報 - 賃料項目と金額を指定して入力する為、他のテキスト項目と異なり位置は動的に変わる。 - **テーブルの内容を走査して項目の有無を調査する必要が有る。** - 賃料情報欄 - 家賃・共益費・「定額水道料」は賃料項目を調査の上情報を取得する。 - 敷金は位置固定 - 礼金も位置固定 - 入居促進料も位置固定 ## 取得項目(WEBクローズ) | 項目 | サンプル値 | | --- | ------------ | | 担当 | 巽 | | 物件名 | EsCourt | | 住所 | 東大阪市吉田1-7-16 | | 号室 | クローズ対象の号室 | | クローズ条件 | 空室期間2ヶ月 | ## データ取得と通知処理のI/F - JSONファイルへ出力 - Dictionary→JSONをテスト - 匿名オブジェクト→形式が単純な場合 - **データクラス→再利用性が必要な場合や複雑な構造** - ディクショナリ→構造が単純な場合 - 今回はデータクラス ## 通知処理 - AOSPublicationCheckを参考に作成 - 上記データを**現行のEXCELと同様**の形式で作成 - 営業店にメール通知 - JSONファイルの読込み - [x] データクラスをプロジェクト化(出力と読込で共有) - [x] JSONファイル→デシリアライズメソッド追加 - ファイルパス:IN - OUT→List<> - [x] ファイル読込 - [ ] EXCEL作成 - ヘッダ編集 - データオブジェクトを各エリアに分割するには?→LINQでリスト分割 ## 実装の方針 - C#で実装 - i-SPからのスクレイピングはChrome-Seleniumを採用する。 - ※本来は動作環境ではないが、実装及び参照系である事を考慮してこの方針とする。 - 動作確認した所、**Seleniumでエラーが発生**。 - 他サイト(CyberManager)**では正常に動作した為サイト依存と考える**。 - 代替案としてSelenium-IEDriverを利用する。 - [Selenium公式サイト](https://www.selenium.dev/ja/documentation/ie_driver_server/) - [Microsoft EdgeでIEモードを自動化する](https://learn.microsoft.com/ja-jp/microsoft-edge/webdriver-chromium/ie-mode?tabs=c-sharp) - WEBdriverとSessionTimeOut(Edgeは表示されるものの、Serverと通信出来ていない) - 保護モードを有効→無効で揃える(どちらかで揃えるのが要件として必要) - 無効で揃える必要あり ## メモ [System\.Text\.Json で型が不定のJSONを扱う\(\.NET\) \| Qreat](https://qreat.tech/3292/) [C\#で不定形JSONを自在に扱いたい \- Qiita](https://qiita.com/rana_kualu/items/b4fab77d4c5c4f6fd3da) ### :satisfied: 実装時メモ - [x] 建物が複数の場合のJSON出力 - [x] 建屋閲覧の起動→モーダルの起動処理をクリックと合体させてリトライ - [x] BackRoomListのログ修正(建屋一覧になっている) - [x] JSONの出力パスをデスクトップに - [x] 建屋名のクリアはJSで実行 - [x] 検索ボタンがクリックされない(クリックが完了していない) - クリックが失敗するケース・成功するケース両方有り? - 確率の問題か? - [ ] エリアの出力時に「エリア」の文字を削除する。 - [ ] 担当は全角スペースで分割した1件目を - [ ] 広告料は「ヶ月」編集を - [ ] 専有面積は㎡を付与する - [ ] クローズ物件リスト取得 - [x] メール送信共通クラス化 - [ ] Kintone取得実装 - 専有面積4・鍵場所24 - 14日 - :tiger: - WEBクローズフォーマット作成 - [x] JSON→OBJに変換 - [x] 建屋が見つからない場合の処理を追加 - 建屋検索処理は見つかる/見つからないをbool値で返却 - 「メゾン新石切2番館」でエラー - [x] Kintone取得項目 - ==エリア:ドロップダウン_0== - ==オーナー担当:ユーザ選択== ## WEBクローズフォーマット修正 - [x] Kintone取得データ→Jobjectをグローバル化 - [ ]