sugitora commited on
Commit
1667bfc
·
verified ·
1 Parent(s): 064f70e

Upload 7 files

Browse files
Files changed (7) hide show
  1. DEPLOY.md +96 -0
  2. Dockerfile +22 -11
  3. README.md +30 -4
  4. app.R +463 -46
  5. availability.csv +981 -0
  6. contract_list.csv +19 -0
  7. guard_master.csv +36 -0
DEPLOY.md ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging Face Spacesへのデプロイ手順
2
+
3
+ ## 前提条件
4
+ - Hugging Faceアカウントを持っている
5
+ - Gitがインストールされている
6
+
7
+ ## 手順
8
+
9
+ ### 1. Hugging Face Spacesで新規Spaceを作成
10
+
11
+ 1. https://huggingface.co/spaces にアクセス
12
+ 2. 「Create new Space」をクリック
13
+ 3. 以下を設定:
14
+ - **Space name**: `security-guard-matching`(任意)
15
+ - **License**: MIT
16
+ - **SDK**: `Docker`
17
+ - **Space hardware**: `CPU basic`(無料枠)
18
+ 4. 「Create Space」をクリック
19
+
20
+ ### 2. リポジトリをクローン
21
+
22
+ ```bash
23
+ git clone https://huggingface.co/spaces/YOUR_USERNAME/security-guard-matching
24
+ cd security-guard-matching
25
+ ```
26
+
27
+ ### 3. ファイルをコピー
28
+
29
+ 以下のファイルをリポジトリにコピー:
30
+ - `Dockerfile`
31
+ - `README.md`
32
+ - `app.R`
33
+ - `contract_list.csv`
34
+ - `guard_master.csv`
35
+ - `availability.csv`
36
+
37
+ ### 4. プッシュ
38
+
39
+ ```bash
40
+ git add .
41
+ git commit -m "Initial deployment"
42
+ git push
43
+ ```
44
+
45
+ ### 5. ビルド確認
46
+
47
+ - Hugging Face Spacesのページでビルドログを確認
48
+ - 数分でアプリが起動します
49
+
50
+ ## トラブルシューティング
51
+
52
+ ### ビルドが失敗する場合
53
+
54
+ **Rパッケージのインストールエラー**
55
+ ```dockerfile
56
+ # Dockerfileで依存ライブラリを追加
57
+ RUN apt-get update && apt-get install -y \
58
+ libcurl4-openssl-dev \
59
+ ...
60
+ ```
61
+
62
+ ### アプリが表示されない場合
63
+
64
+ - ポートが7860になっているか確認
65
+ - `host='0.0.0.0'` が設定されているか確認
66
+
67
+ ### メモリ不足の場合
68
+
69
+ - Hugging Face Spacesの設定でハードウェアをアップグレード
70
+ - または、データを軽量化
71
+
72
+ ## ローカルでのテスト
73
+
74
+ ```bash
75
+ # Dockerイメージをビルド
76
+ docker build -t shiny-guard-matching .
77
+
78
+ # コンテナを起動
79
+ docker run -p 7860:7860 shiny-guard-matching
80
+
81
+ # ブラウザでアクセス
82
+ # http://localhost:7860
83
+ ```
84
+
85
+ ## ファイル構成
86
+
87
+ ```
88
+ security-guard-matching/
89
+ ├── Dockerfile # Dockerビルド設定
90
+ ├── README.md # Hugging Face用メタデータ
91
+ ├── app.R # Shinyアプリ本体
92
+ ├── contract_list.csv # 契約データ
93
+ ├── guard_master.csv # 警備員マスタ
94
+ ├── availability.csv # 勤務可否データ
95
+ └── DEPLOY.md # この手順書
96
+ ```
Dockerfile CHANGED
@@ -1,14 +1,25 @@
1
- FROM rocker/r-base:latest
 
2
 
3
- WORKDIR /code
 
 
 
 
 
4
 
5
- RUN install2.r --error \
6
- shiny \
7
- dplyr \
8
- ggplot2 \
9
- readr \
10
- ggExtra
11
-
12
- COPY . .
13
 
14
- CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging Face Spaces用 R Shiny Dockerfile(軽量版)
2
+ FROM rocker/shiny:4.3.2
3
 
4
+ # 必要最小限のシステムライブラリ
5
+ RUN apt-get update && apt-get install -y --no-install-recommends \
6
+ libcurl4-openssl-dev \
7
+ libssl-dev \
8
+ && apt-get clean \
9
+ && rm -rf /var/lib/apt/lists/*
10
 
11
+ # dplyrとleafletをインストール(shinyはベースイメージに含まれる)
12
+ RUN R -e "install.packages('dplyr', repos='https://cloud.r-project.org/')"
13
+ RUN R -e "install.packages('leaflet', repos='https://cloud.r-project.org/')"
 
 
 
 
 
14
 
15
+ # アプリディレクトリ
16
+ WORKDIR /app
17
+
18
+ # ファイルをコピー
19
+ COPY app.R contract_list.csv guard_master.csv availability.csv /app/
20
+
21
+ # ポート設定
22
+ EXPOSE 7860
23
+
24
+ # 実行
25
+ CMD ["R", "-e", "shiny::runApp('/app', host='0.0.0.0', port=7860)"]
README.md CHANGED
@@ -1,10 +1,36 @@
1
  ---
2
- title: SecurityGuardMatchingApp01
3
- emoji: 📚
4
  colorFrom: blue
5
- colorTo: yellow
6
  sdk: docker
7
  pinned: false
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: 警備マッチング可視化アプリ
3
+ emoji: 🛡️
4
  colorFrom: blue
5
+ colorTo: green
6
  sdk: docker
7
  pinned: false
8
+ license: mit
9
  ---
10
 
11
+ # 警備マッチング可視化アプリ
12
+
13
+ 警備員の配置と現場の需給状況を可視化するR Shinyアプリケーションです。
14
+
15
+ ## 機能
16
+
17
+ - 📅 **期間選択**: スライダーで対象期間を指定
18
+ - 🗺️ **地図表示**: 現場と警備員の位置を地図上に表示
19
+ - 📊 **充足率表示**: 各現場の充足率を色分けで可視化
20
+ - 🟢 緑: 充足(100%以上)
21
+ - 🟠 オレンジ: 注意(80-99%)
22
+ - 🔴 赤: 要営業強化(80%未満)
23
+ - 👤 **隊員表示**: アベイラブル隊員の所在を表示
24
+
25
+ ## データ構成
26
+
27
+ - `contract_list.csv`: 契約・現場情報
28
+ - `guard_master.csv`: 警備員マスタ
29
+ - `availability.csv`: 勤務可否データ
30
+
31
+ ## 技術スタック
32
+
33
+ - R / Shiny
34
+ - Leaflet(地図)
35
+ - dplyr(データ処理)
36
+ - Docker
app.R CHANGED
@@ -1,58 +1,475 @@
 
 
 
1
  library(shiny)
2
- library(bslib)
3
  library(dplyr)
4
- library(ggplot2)
5
-
6
- df <- readr::read_csv("penguins.csv")
7
- # Find subset of columns that are suitable for scatter plot
8
- df_num <- df |> select(where(is.numeric), -Year)
9
-
10
- ui <- page_sidebar(
11
- theme = bs_theme(bootswatch = "minty"),
12
- title = "Penguins explorer",
13
- sidebar = sidebar(
14
- varSelectInput("xvar", "X variable", df_num, selected = "Bill Length (mm)"),
15
- varSelectInput("yvar", "Y variable", df_num, selected = "Bill Depth (mm)"),
16
- checkboxGroupInput("species", "Filter by species",
17
- choices = unique(df$Species), selected = unique(df$Species)
18
- ),
19
- hr(), # Add a horizontal rule
20
- checkboxInput("by_species", "Show species", TRUE),
21
- checkboxInput("show_margins", "Show marginal plots", TRUE),
22
- checkboxInput("smooth", "Add smoother"),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  ),
24
- plotOutput("scatter")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  )
26
 
 
 
 
27
  server <- function(input, output, session) {
28
- subsetted <- reactive({
29
- req(input$species)
30
- df |> filter(Species %in% input$species)
31
- })
32
-
33
- output$scatter <- renderPlot(
34
- {
35
- p <- ggplot(subsetted(), aes(!!input$xvar, !!input$yvar)) +
36
- theme_light() +
37
- list(
38
- theme(legend.position = "bottom"),
39
- if (input$by_species) aes(color = Species),
40
- geom_point(),
41
- if (input$smooth) geom_smooth()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  )
43
-
44
- if (input$show_margins) {
45
- margin_type <- if (input$by_species) "density" else "histogram"
46
- p <- p |> ggExtra::ggMarginal(
47
- type = margin_type, margins = "both",
48
- size = 8, groupColour = input$by_species, groupFill = input$by_species
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
51
-
52
- p
53
- },
54
- res = 100
55
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
 
58
  shinyApp(ui, server)
 
1
+ # app.R - 警備マッチング可視化アプリ(改良版)
2
+ # 要件: 充足率表示、日付期間選択、要営業強化エリア識別
3
+
4
  library(shiny)
 
5
  library(dplyr)
6
+ library(leaflet)
7
+
8
+ # =========================================================
9
+ # 0) 設定
10
+ # =========================================================
11
+ BBOX <- list(
12
+ lat_min = 36.0,
13
+ lat_max = 36.9,
14
+ lng_min = 139.3,
15
+ lng_max = 140.3
16
+ )
17
+
18
+ # 充足率の閾値
19
+ THRESHOLD_LOW <- 80 # 80%未満 = 要営業強化(赤)
20
+ THRESHOLD_HIGH <- 100 # 100%以上 = 充足(緑)
21
+
22
+ # =========================================================
23
+ # 1) ユーティリティ
24
+ # =========================================================
25
+ read_csv_bom <- function(path) {
26
+ if (!file.exists(path)) stop(paste("ファイルが見つからない:", path))
27
+ df <- tryCatch(
28
+ read.csv(path, fileEncoding = "UTF-8-BOM", stringsAsFactors = FALSE, check.names = FALSE),
29
+ error = function(e) read.csv(path, stringsAsFactors = FALSE, check.names = FALSE)
30
+ )
31
+ df
32
+ }
33
+
34
+ to_date <- function(x) {
35
+ if (inherits(x, "Date")) return(x)
36
+ x <- as.character(x)
37
+ x <- trimws(x)
38
+ x[x == ""] <- NA
39
+ x2 <- gsub("/", "-", x, fixed = TRUE)
40
+ as.Date(x2)
41
+ }
42
+
43
+ haversine_km <- function(lat1, lon1, lat2, lon2) {
44
+ r <- 6371.0
45
+ to_rad <- function(x) x * pi / 180
46
+ dlat <- to_rad(lat2 - lat1)
47
+ dlon <- to_rad(lon2 - lon1)
48
+ a <- sin(dlat/2)^2 + cos(to_rad(lat1)) * cos(to_rad(lat2)) * sin(dlon/2)^2
49
+ 2 * r * asin(pmin(1, sqrt(a)))
50
+ }
51
+
52
+ extract_city <- function(addr) {
53
+ if (is.na(addr) || trimws(addr) == "") return(NA_character_)
54
+ a <- gsub(" ", " ", addr, fixed = TRUE)
55
+ a <- gsub("\\(.*?\\)", "", a)
56
+ a <- gsub("\\(.*?\\)", "", a)
57
+ a2 <- sub(".*県", "", a)
58
+ m <- regexpr("(市|町|村|区)", a2)
59
+ if (m[1] == -1) return(NA_character_)
60
+ endpos <- m[1] + attr(m, "match.length") - 1
61
+ substr(a2, 1, endpos)
62
+ }
63
+
64
+ # 充足率に応じた色を返す
65
+ get_fill_color <- function(rate) {
66
+ case_when(
67
+ is.na(rate) ~ "gray",
68
+ rate < THRESHOLD_LOW ~ "#e74c3c", # 赤 - 要営業強化
69
+ rate < THRESHOLD_HIGH ~ "#f39c12", # オレンジ - 注意
70
+ TRUE ~ "#27ae60" # 緑 - 充足
71
+ )
72
+ }
73
+
74
+ # =========================================================
75
+ # 2) データ読み込み&前処理
76
+ # =========================================================
77
+ load_all_data <- function() {
78
+ contract_raw <- read_csv_bom("contract_list.csv")
79
+ guard_raw <- read_csv_bom("guard_master.csv")
80
+ avail_raw <- read_csv_bom("availability.csv")
81
+
82
+ # ---- contract_list ----
83
+ contract <- contract_raw %>%
84
+ mutate(
85
+ `案件予定日(開始)` = to_date(`案件予定日(開始)`),
86
+ `案件予定日(終了)` = to_date(`案件予定日(終了)`),
87
+ 現場住所 = paste0(
88
+ ifelse(is.na(`現場住所1`), "", `現場住所1`),
89
+ ifelse(is.na(`現場住所2`) | trimws(`現場住所2`) == "", "", paste0(" ", `現場住所2`))
90
+ ),
91
+ required_guards = `必要人数`,
92
+ site_city = `市区町村`
93
+ )
94
+
95
+ # ---- guard_master ----
96
+ guard <- guard_raw %>%
97
+ mutate(
98
+ 従業員番号 = suppressWarnings(as.integer(`従業員番号`)),
99
+ guard_city = vapply(`住所`, extract_city, character(1))
100
+ )
101
+
102
+ # ---- availability ----
103
+ avail <- avail_raw %>%
104
+ mutate(
105
+ 日付 = to_date(`日付`),
106
+ 従業員番号 = suppressWarnings(as.integer(`従業員番号`)),
107
+ available_flag = as.integer(`対応可否`)
108
+ )
109
+
110
+ list(contract = contract, guard = guard, avail = avail)
111
+ }
112
+
113
+ DATA <- NULL
114
+ LOAD_ERROR <- NULL
115
+ tryCatch({
116
+ DATA <- load_all_data()
117
+ }, error = function(e) {
118
+ LOAD_ERROR <<- e$message
119
+ })
120
+
121
+ # =========================================================
122
+ # 3) UI
123
+ # =========================================================
124
+ ui <- fluidPage(
125
+ tags$head(
126
+ tags$link(rel = "icon", href = "data:,"),
127
+ tags$style(HTML("
128
+ .legend-box { padding: 10px; background: white; border-radius: 5px; }
129
+ .legend-item { display: flex; align-items: center; margin: 5px 0; }
130
+ .legend-color { width: 20px; height: 20px; border-radius: 50%; margin-right: 8px; }
131
+ .summary-header { background-color: #f8f9fa; padding: 10px; border-radius: 5px; margin-bottom: 10px; }
132
+ "))
133
  ),
134
+ titlePanel("警備マッチング可視化(充足率・期間選択対応)"),
135
+ sidebarLayout(
136
+ sidebarPanel(
137
+ if (!is.null(LOAD_ERROR)) {
138
+ tags$div(
139
+ style = "color:#b00020; font-weight:600;",
140
+ paste0("データ読込エラー: ", LOAD_ERROR),
141
+ tags$br(),
142
+ "同じフォルダに contract_list.csv / guard_master.csv / availability.csv を置いているか確認する。"
143
+ )
144
+ } else {
145
+ tagList(
146
+ h4("📅 期間選択"),
147
+ sliderInput(
148
+ "date_range",
149
+ "対象期間",
150
+ min = min(DATA$contract$`案件予定日(開始)`, na.rm = TRUE),
151
+ max = max(DATA$contract$`案件予定日(終了)`, na.rm = TRUE),
152
+ value = c(
153
+ min(DATA$contract$`案件予定日(開始)`, na.rm = TRUE),
154
+ min(DATA$contract$`案件予定日(開始)`, na.rm = TRUE) + 7
155
+ ),
156
+ timeFormat = "%m/%d",
157
+ step = 1
158
+ ),
159
+ hr(),
160
+ h4("🗺️ 表示設定"),
161
+ checkboxInput("show_guards", "アベイラブル隊員を表示", TRUE),
162
+ radioButtons(
163
+ "match_mode",
164
+ "マッチング方法",
165
+ choices = c("市区町村一致" = "city", "距離(半径km)" = "dist"),
166
+ selected = "city"
167
+ ),
168
+ conditionalPanel(
169
+ condition = "input.match_mode == 'dist'",
170
+ numericInput("radius_km", "半径(km)", value = 20, min = 1, max = 200, step = 1)
171
+ ),
172
+ hr(),
173
+ h4("📊 凡例"),
174
+ tags$div(
175
+ class = "legend-box",
176
+ tags$div(class = "legend-item",
177
+ tags$div(class = "legend-color", style = "background-color: #27ae60;"),
178
+ tags$span("充足(100%以上)")
179
+ ),
180
+ tags$div(class = "legend-item",
181
+ tags$div(class = "legend-color", style = "background-color: #f39c12;"),
182
+ tags$span("注意(80-99%)")
183
+ ),
184
+ tags$div(class = "legend-item",
185
+ tags$div(class = "legend-color", style = "background-color: #e74c3c;"),
186
+ tags$span("要営業強化(80%未満)")
187
+ ),
188
+ tags$div(class = "legend-item",
189
+ tags$div(class = "legend-color", style = "background-color: #3498db; opacity: 0.7;"),
190
+ tags$span("アベイラブル隊員")
191
+ )
192
+ )
193
+ )
194
+ },
195
+ width = 3
196
+ ),
197
+ mainPanel(
198
+ # サマリー統計
199
+ fluidRow(
200
+ column(3,
201
+ tags$div(class = "summary-header",
202
+ h5("稼働現場数"),
203
+ textOutput("stat_sites", inline = TRUE)
204
+ )
205
+ ),
206
+ column(3,
207
+ tags$div(class = "summary-header",
208
+ h5("必要人数合計"),
209
+ textOutput("stat_required", inline = TRUE)
210
+ )
211
+ ),
212
+ column(3,
213
+ tags$div(class = "summary-header",
214
+ h5("対応可能人数"),
215
+ textOutput("stat_available", inline = TRUE)
216
+ )
217
+ ),
218
+ column(3,
219
+ tags$div(class = "summary-header",
220
+ h5("平均充足率"),
221
+ textOutput("stat_avg_rate", inline = TRUE)
222
+ )
223
+ )
224
+ ),
225
+ leafletOutput("map", height = 480),
226
+ br(),
227
+ h4("現場別 需給状況(選択期間)"),
228
+ tableOutput("summary"),
229
+ width = 9
230
+ )
231
+ )
232
  )
233
 
234
+ # =========================================================
235
+ # 4) Server
236
+ # =========================================================
237
  server <- function(input, output, session) {
238
+ if (!is.null(LOAD_ERROR)) {
239
+ output$map <- renderLeaflet({ leaflet() %>% addTiles() })
240
+ output$summary <- renderTable({
241
+ data.frame(エラー = LOAD_ERROR, stringsAsFactors = FALSE)
242
+ })
243
+ return()
244
+ }
245
+
246
+ contract <- DATA$contract
247
+ guard <- DATA$guard
248
+ avail <- DATA$avail
249
+
250
+ # 選択期間のデータを取得
251
+ daily <- reactive({
252
+ date_range <- input$date_range
253
+ d_start <- date_range[1]
254
+ d_end <- date_range[2]
255
+
256
+ # 期間内に稼働中の現場
257
+ active_sites <- contract %>%
258
+ filter(!is.na(`案件予定日(開始)`), !is.na(`案件予定日(終了)`)) %>%
259
+ filter(`案件予定日(開始)` <= d_end, `案件予定日(終了)` >= d_start)
260
+
261
+ # 期間内で「対応可」の日が1日でもある隊員
262
+ available_emp <- avail %>%
263
+ filter(!is.na(日付), 日付 >= d_start, 日付 <= d_end, available_flag == 1L) %>%
264
+ distinct(従業員番号)
265
+
266
+ available_guards <- guard %>%
267
+ inner_join(available_emp, by = "従業員番号")
268
+
269
+ list(
270
+ date_start = d_start,
271
+ date_end = d_end,
272
+ active_sites = active_sites,
273
+ available_guards = available_guards
274
+ )
275
+ })
276
+
277
+ # 需給サマリー計算
278
+ summary_tbl <- reactive({
279
+ dd <- daily()
280
+ sites <- dd$active_sites
281
+ gds <- dd$available_guards
282
+
283
+ if (nrow(sites) == 0) {
284
+ return(data.frame(メッセージ = "選択期間に稼働中の現場がない", stringsAsFactors = FALSE))
285
+ }
286
+
287
+ if (input$match_mode == "city") {
288
+ g_by_city <- gds %>%
289
+ mutate(guard_city = ifelse(is.na(guard_city), "不明", guard_city)) %>%
290
+ count(guard_city, name = "available_guards")
291
+
292
+ result <- sites %>%
293
+ mutate(site_city = ifelse(is.na(site_city), "不明", site_city)) %>%
294
+ left_join(g_by_city, by = c("site_city" = "guard_city")) %>%
295
+ mutate(
296
+ available_guards = ifelse(is.na(available_guards), 0L, available_guards),
297
+ shortage = pmax(required_guards - available_guards, 0L),
298
+ fulfillment_rate = round(available_guards / required_guards * 100, 0)
299
  )
300
+ } else {
301
+ radius <- input$radius_km
302
+ if (is.null(radius) || is.na(radius) || radius <= 0) radius <- 20
303
+
304
+ if (nrow(gds) == 0) {
305
+ result <- sites %>%
306
+ mutate(
307
+ available_guards = 0L,
308
+ shortage = required_guards,
309
+ fulfillment_rate = 0
310
+ )
311
+ } else {
312
+ result <- sites %>%
313
+ rowwise() %>%
314
+ mutate(
315
+ available_guards = {
316
+ dist <- haversine_km(site_lat, site_lng, gds$home_lat, gds$home_lng)
317
+ sum(dist <= radius, na.rm = TRUE)
318
+ }
319
+ ) %>%
320
+ ungroup() %>%
321
+ mutate(
322
+ shortage = pmax(required_guards - available_guards, 0L),
323
+ fulfillment_rate = round(available_guards / required_guards * 100, 0)
324
+ )
325
+ }
326
+ }
327
+
328
+ # 色と状態を追加
329
+ result <- result %>%
330
+ mutate(
331
+ fill_color = get_fill_color(fulfillment_rate),
332
+ status = case_when(
333
+ fulfillment_rate < THRESHOLD_LOW ~ "⚠️ 要営業強化",
334
+ fulfillment_rate < THRESHOLD_HIGH ~ "△ 注意",
335
+ TRUE ~ "○ 充足"
336
+ )
337
+ )
338
+
339
+ result
340
+ })
341
+
342
+ # 表示用テーブル
343
+ output$summary <- renderTable({
344
+ tbl <- summary_tbl()
345
+ if ("メッセージ" %in% colnames(tbl)) return(tbl)
346
+
347
+ tbl %>%
348
+ transmute(
349
+ 契約ID = contract_id,
350
+ 契約No = `契約No`,
351
+ 顧客 = `顧客`,
352
+ 件名 = paste0(`件名1`, ifelse(is.na(`件名2`) | trimws(`件名2`) == "", "", paste0(" ", `件名2`))),
353
+ 市区町村 = site_city,
354
+ 必要人数 = required_guards,
355
+ 対応可能 = as.integer(available_guards),
356
+ 充足率 = paste0(fulfillment_rate, "%"),
357
+ 状態 = status
358
+ )
359
+ })
360
+
361
+ # サマリー統計
362
+ output$stat_sites <- renderText({
363
+ dd <- daily()
364
+ paste0(nrow(dd$active_sites), " 件")
365
+ })
366
+
367
+ output$stat_required <- renderText({
368
+ tbl <- summary_tbl()
369
+ if ("メッセージ" %in% colnames(tbl)) return("-")
370
+ paste0(sum(tbl$required_guards, na.rm = TRUE), " 人")
371
+ })
372
+
373
+ output$stat_available <- renderText({
374
+ dd <- daily()
375
+ paste0(nrow(dd$available_guards), " 人")
376
+ })
377
+
378
+ output$stat_avg_rate <- renderText({
379
+ tbl <- summary_tbl()
380
+ if ("メッセージ" %in% colnames(tbl)) return("-")
381
+ avg_rate <- mean(tbl$fulfillment_rate, na.rm = TRUE)
382
+ paste0(round(avg_rate, 0), "%")
383
+ })
384
+
385
+ # 地図(初回のみ)
386
+ output$map <- renderLeaflet({
387
+ center_lat <- mean(c(BBOX$lat_min, BBOX$lat_max))
388
+ center_lng <- mean(c(BBOX$lng_min, BBOX$lng_max))
389
+
390
+ leaflet() %>%
391
+ addTiles() %>%
392
+ setView(lng = center_lng, lat = center_lat, zoom = 9) %>%
393
+ addLayersControl(
394
+ overlayGroups = c("現場(充足率)", "アベイラブル隊員"),
395
+ options = layersControlOptions(collapsed = FALSE)
396
+ )
397
+ })
398
+
399
+ # 地図更新(マーカー)
400
+ observe({
401
+ dd <- daily()
402
+ sites_data <- summary_tbl()
403
+ gds <- dd$available_guards
404
+
405
+ proxy <- leafletProxy("map")
406
+ proxy %>%
407
+ clearGroup("現場(充足率)") %>%
408
+ clearGroup("アベイラブル隊員")
409
+
410
+ # 現場マーカー(充足率付き)
411
+ if (!("メッセージ" %in% colnames(sites_data)) && nrow(sites_data) > 0) {
412
+ # CircleMarkersを追加
413
+ proxy %>%
414
+ addCircleMarkers(
415
+ data = sites_data,
416
+ lng = ~site_lng, lat = ~site_lat,
417
+ radius = 14,
418
+ color = ~fill_color,
419
+ fillColor = ~fill_color,
420
+ fillOpacity = 0.85,
421
+ weight = 2,
422
+ label = ~paste0(
423
+ "【", `契約No`, "】", `件名1`,
424
+ " | 充足率: ", fulfillment_rate, "%",
425
+ " | 必要: ", required_guards, "人",
426
+ " | 対応可: ", available_guards, "人"
427
+ ),
428
+ group = "現場(充足率)"
429
  )
430
+
431
+ # 充足率ラベルを個別に追加(色を動的に設定するため)
432
+ for (i in seq_len(nrow(sites_data))) {
433
+ row <- sites_data[i, ]
434
+ proxy %>%
435
+ addLabelOnlyMarkers(
436
+ lng = row$site_lng,
437
+ lat = row$site_lat,
438
+ label = paste0(row$fulfillment_rate, "%"),
439
+ labelOptions = labelOptions(
440
+ noHide = TRUE,
441
+ direction = "top",
442
+ textOnly = TRUE,
443
+ style = list(
444
+ "font-weight" = "bold",
445
+ "font-size" = "11px",
446
+ "color" = "white",
447
+ "background-color" = row$fill_color,
448
+ "padding" = "2px 5px",
449
+ "border-radius" = "4px"
450
+ )
451
+ ),
452
+ group = "現場(充足率)"
453
+ )
454
  }
455
+ }
456
+
457
+ # アベイラブル隊員マーカー
458
+ if (isTRUE(input$show_guards) && nrow(gds) > 0) {
459
+ proxy %>%
460
+ addCircleMarkers(
461
+ data = gds,
462
+ lng = ~home_lng, lat = ~home_lat,
463
+ radius = 6,
464
+ color = "#3498db",
465
+ fillColor = "#3498db",
466
+ fillOpacity = 0.6,
467
+ weight = 1,
468
+ label = ~paste0("従業員番号: ", 従業員番号, " | ", 苗字, " ", 名前, " | ", guard_city),
469
+ group = "アベイラブル隊員"
470
+ )
471
+ }
472
+ })
473
  }
474
 
475
  shinyApp(ui, server)
availability.csv ADDED
@@ -0,0 +1,981 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 従業員番号,日付,対応可否,担当予定contract_id
2
+ 757,2025-12-01,1,
3
+ 757,2025-12-02,0,
4
+ 757,2025-12-03,1,
5
+ 757,2025-12-04,0,
6
+ 757,2025-12-05,0,
7
+ 757,2025-12-06,1,
8
+ 757,2025-12-07,0,
9
+ 757,2025-12-08,1,
10
+ 757,2025-12-09,1,
11
+ 757,2025-12-10,1,
12
+ 757,2025-12-11,1,
13
+ 757,2025-12-12,0,
14
+ 757,2025-12-13,1,
15
+ 757,2025-12-14,0,
16
+ 757,2025-12-15,1,
17
+ 757,2025-12-16,1,
18
+ 757,2025-12-17,1,
19
+ 757,2025-12-18,1,
20
+ 757,2025-12-19,0,
21
+ 757,2025-12-20,0,
22
+ 757,2025-12-21,1,
23
+ 757,2025-12-22,1,
24
+ 757,2025-12-23,0,
25
+ 757,2025-12-24,1,
26
+ 757,2025-12-25,1,
27
+ 757,2025-12-26,1,
28
+ 757,2025-12-27,0,
29
+ 757,2025-12-28,0,
30
+ 973,2025-12-01,1,
31
+ 973,2025-12-02,1,
32
+ 973,2025-12-03,1,
33
+ 973,2025-12-04,1,
34
+ 973,2025-12-05,1,
35
+ 973,2025-12-06,1,
36
+ 973,2025-12-07,0,
37
+ 973,2025-12-08,1,
38
+ 973,2025-12-09,0,
39
+ 973,2025-12-10,0,
40
+ 973,2025-12-11,1,
41
+ 973,2025-12-12,1,
42
+ 973,2025-12-13,0,
43
+ 973,2025-12-14,1,
44
+ 973,2025-12-15,0,
45
+ 973,2025-12-16,0,
46
+ 973,2025-12-17,1,
47
+ 973,2025-12-18,0,
48
+ 973,2025-12-19,0,
49
+ 973,2025-12-20,1,
50
+ 973,2025-12-21,1,
51
+ 973,2025-12-22,1,
52
+ 973,2025-12-23,1,TCF0015
53
+ 973,2025-12-24,0,
54
+ 973,2025-12-25,1,
55
+ 973,2025-12-26,1,
56
+ 973,2025-12-27,0,
57
+ 973,2025-12-28,1,TCF0015
58
+ 807,2025-12-01,1,
59
+ 807,2025-12-02,0,
60
+ 807,2025-12-03,1,
61
+ 807,2025-12-04,1,
62
+ 807,2025-12-05,0,
63
+ 807,2025-12-06,0,
64
+ 807,2025-12-07,1,
65
+ 807,2025-12-08,1,TCF0002
66
+ 807,2025-12-09,1,
67
+ 807,2025-12-10,1,
68
+ 807,2025-12-11,0,
69
+ 807,2025-12-12,1,
70
+ 807,2025-12-13,0,
71
+ 807,2025-12-14,0,
72
+ 807,2025-12-15,1,
73
+ 807,2025-12-16,1,
74
+ 807,2025-12-17,1,
75
+ 807,2025-12-18,1,
76
+ 807,2025-12-19,0,
77
+ 807,2025-12-20,1,
78
+ 807,2025-12-21,1,
79
+ 807,2025-12-22,0,
80
+ 807,2025-12-23,1,
81
+ 807,2025-12-24,1,
82
+ 807,2025-12-25,1,
83
+ 807,2025-12-26,0,
84
+ 807,2025-12-27,1,
85
+ 807,2025-12-28,1,
86
+ 680,2025-12-01,1,
87
+ 680,2025-12-02,0,
88
+ 680,2025-12-03,0,
89
+ 680,2025-12-04,1,
90
+ 680,2025-12-05,0,
91
+ 680,2025-12-06,1,
92
+ 680,2025-12-07,0,
93
+ 680,2025-12-08,1,
94
+ 680,2025-12-09,1,
95
+ 680,2025-12-10,1,TCF0008
96
+ 680,2025-12-11,1,
97
+ 680,2025-12-12,1,
98
+ 680,2025-12-13,0,
99
+ 680,2025-12-14,1,
100
+ 680,2025-12-15,1,
101
+ 680,2025-12-16,1,
102
+ 680,2025-12-17,1,
103
+ 680,2025-12-18,1,
104
+ 680,2025-12-19,1,
105
+ 680,2025-12-20,1,
106
+ 680,2025-12-21,0,
107
+ 680,2025-12-22,1,
108
+ 680,2025-12-23,1,TCF0004
109
+ 680,2025-12-24,1,
110
+ 680,2025-12-25,1,TCF0005
111
+ 680,2025-12-26,1,
112
+ 680,2025-12-27,0,
113
+ 680,2025-12-28,1,
114
+ 749,2025-12-01,0,
115
+ 749,2025-12-02,1,
116
+ 749,2025-12-03,0,
117
+ 749,2025-12-04,1,
118
+ 749,2025-12-05,0,
119
+ 749,2025-12-06,1,
120
+ 749,2025-12-07,0,
121
+ 749,2025-12-08,0,
122
+ 749,2025-12-09,0,
123
+ 749,2025-12-10,0,
124
+ 749,2025-12-11,1,
125
+ 749,2025-12-12,1,
126
+ 749,2025-12-13,1,
127
+ 749,2025-12-14,0,
128
+ 749,2025-12-15,0,
129
+ 749,2025-12-16,1,
130
+ 749,2025-12-17,1,
131
+ 749,2025-12-18,1,
132
+ 749,2025-12-19,0,
133
+ 749,2025-12-20,1,
134
+ 749,2025-12-21,0,
135
+ 749,2025-12-22,1,
136
+ 749,2025-12-23,0,
137
+ 749,2025-12-24,1,
138
+ 749,2025-12-25,0,
139
+ 749,2025-12-26,1,
140
+ 749,2025-12-27,0,
141
+ 749,2025-12-28,0,
142
+ 622,2025-12-01,1,
143
+ 622,2025-12-02,1,
144
+ 622,2025-12-03,1,
145
+ 622,2025-12-04,1,
146
+ 622,2025-12-05,1,
147
+ 622,2025-12-06,1,
148
+ 622,2025-12-07,1,
149
+ 622,2025-12-08,1,
150
+ 622,2025-12-09,1,
151
+ 622,2025-12-10,1,
152
+ 622,2025-12-11,1,
153
+ 622,2025-12-12,1,
154
+ 622,2025-12-13,1,
155
+ 622,2025-12-14,1,
156
+ 622,2025-12-15,1,
157
+ 622,2025-12-16,1,
158
+ 622,2025-12-17,1,
159
+ 622,2025-12-18,1,TCF0014
160
+ 622,2025-12-19,1,TCF0018
161
+ 622,2025-12-20,1,
162
+ 622,2025-12-21,1,
163
+ 622,2025-12-22,1,
164
+ 622,2025-12-23,1,
165
+ 622,2025-12-24,1,
166
+ 622,2025-12-25,1,
167
+ 622,2025-12-26,1,
168
+ 622,2025-12-27,1,
169
+ 622,2025-12-28,0,
170
+ 437,2025-12-01,1,
171
+ 437,2025-12-02,1,TCF0001
172
+ 437,2025-12-03,0,
173
+ 437,2025-12-04,1,
174
+ 437,2025-12-05,1,
175
+ 437,2025-12-06,0,
176
+ 437,2025-12-07,0,
177
+ 437,2025-12-08,1,
178
+ 437,2025-12-09,0,
179
+ 437,2025-12-10,1,
180
+ 437,2025-12-11,1,
181
+ 437,2025-12-12,1,
182
+ 437,2025-12-13,0,
183
+ 437,2025-12-14,1,
184
+ 437,2025-12-15,1,
185
+ 437,2025-12-16,0,
186
+ 437,2025-12-17,1,
187
+ 437,2025-12-18,0,
188
+ 437,2025-12-19,0,
189
+ 437,2025-12-20,0,
190
+ 437,2025-12-21,0,
191
+ 437,2025-12-22,1,
192
+ 437,2025-12-23,0,
193
+ 437,2025-12-24,1,
194
+ 437,2025-12-25,0,
195
+ 437,2025-12-26,1,
196
+ 437,2025-12-27,0,
197
+ 437,2025-12-28,1,TCF0013
198
+ 848,2025-12-01,0,
199
+ 848,2025-12-02,1,
200
+ 848,2025-12-03,1,
201
+ 848,2025-12-04,1,TCF0002
202
+ 848,2025-12-05,1,
203
+ 848,2025-12-06,1,
204
+ 848,2025-12-07,0,
205
+ 848,2025-12-08,0,
206
+ 848,2025-12-09,1,
207
+ 848,2025-12-10,1,
208
+ 848,2025-12-11,1,
209
+ 848,2025-12-12,1,TCF0007
210
+ 848,2025-12-13,0,
211
+ 848,2025-12-14,0,
212
+ 848,2025-12-15,1,
213
+ 848,2025-12-16,1,
214
+ 848,2025-12-17,1,
215
+ 848,2025-12-18,0,
216
+ 848,2025-12-19,1,
217
+ 848,2025-12-20,0,
218
+ 848,2025-12-21,1,TCF0011
219
+ 848,2025-12-22,1,
220
+ 848,2025-12-23,1,
221
+ 848,2025-12-24,1,
222
+ 848,2025-12-25,1,TCF0012
223
+ 848,2025-12-26,1,
224
+ 848,2025-12-27,1,
225
+ 848,2025-12-28,0,
226
+ 686,2025-12-01,0,
227
+ 686,2025-12-02,1,
228
+ 686,2025-12-03,1,
229
+ 686,2025-12-04,1,
230
+ 686,2025-12-05,1,
231
+ 686,2025-12-06,0,
232
+ 686,2025-12-07,0,
233
+ 686,2025-12-08,0,
234
+ 686,2025-12-09,1,
235
+ 686,2025-12-10,1,
236
+ 686,2025-12-11,0,
237
+ 686,2025-12-12,1,
238
+ 686,2025-12-13,1,
239
+ 686,2025-12-14,1,
240
+ 686,2025-12-15,0,
241
+ 686,2025-12-16,1,
242
+ 686,2025-12-17,1,TCF0001
243
+ 686,2025-12-18,1,
244
+ 686,2025-12-19,1,
245
+ 686,2025-12-20,1,
246
+ 686,2025-12-21,1,
247
+ 686,2025-12-22,1,
248
+ 686,2025-12-23,1,
249
+ 686,2025-12-24,0,
250
+ 686,2025-12-25,1,
251
+ 686,2025-12-26,1,
252
+ 686,2025-12-27,1,
253
+ 686,2025-12-28,1,
254
+ 659,2025-12-01,0,
255
+ 659,2025-12-02,1,
256
+ 659,2025-12-03,1,TCF0015
257
+ 659,2025-12-04,1,
258
+ 659,2025-12-05,1,
259
+ 659,2025-12-06,0,
260
+ 659,2025-12-07,0,
261
+ 659,2025-12-08,1,
262
+ 659,2025-12-09,1,
263
+ 659,2025-12-10,1,
264
+ 659,2025-12-11,0,
265
+ 659,2025-12-12,1,
266
+ 659,2025-12-13,0,
267
+ 659,2025-12-14,1,
268
+ 659,2025-12-15,1,
269
+ 659,2025-12-16,0,
270
+ 659,2025-12-17,1,
271
+ 659,2025-12-18,1,
272
+ 659,2025-12-19,1,
273
+ 659,2025-12-20,0,
274
+ 659,2025-12-21,0,
275
+ 659,2025-12-22,1,
276
+ 659,2025-12-23,0,
277
+ 659,2025-12-24,0,
278
+ 659,2025-12-25,0,
279
+ 659,2025-12-26,0,
280
+ 659,2025-12-27,0,
281
+ 659,2025-12-28,1,
282
+ 360,2025-12-01,1,
283
+ 360,2025-12-02,0,
284
+ 360,2025-12-03,1,
285
+ 360,2025-12-04,0,
286
+ 360,2025-12-05,1,
287
+ 360,2025-12-06,0,
288
+ 360,2025-12-07,0,
289
+ 360,2025-12-08,1,
290
+ 360,2025-12-09,0,
291
+ 360,2025-12-10,1,
292
+ 360,2025-12-11,1,
293
+ 360,2025-12-12,0,
294
+ 360,2025-12-13,1,
295
+ 360,2025-12-14,1,
296
+ 360,2025-12-15,1,
297
+ 360,2025-12-16,0,
298
+ 360,2025-12-17,0,
299
+ 360,2025-12-18,0,
300
+ 360,2025-12-19,0,
301
+ 360,2025-12-20,1,
302
+ 360,2025-12-21,0,
303
+ 360,2025-12-22,1,
304
+ 360,2025-12-23,0,
305
+ 360,2025-12-24,1,
306
+ 360,2025-12-25,0,
307
+ 360,2025-12-26,1,
308
+ 360,2025-12-27,0,
309
+ 360,2025-12-28,0,
310
+ 830,2025-12-01,1,
311
+ 830,2025-12-02,1,TCF0004
312
+ 830,2025-12-03,1,
313
+ 830,2025-12-04,1,
314
+ 830,2025-12-05,0,
315
+ 830,2025-12-06,1,
316
+ 830,2025-12-07,1,
317
+ 830,2025-12-08,1,
318
+ 830,2025-12-09,1,
319
+ 830,2025-12-10,1,
320
+ 830,2025-12-11,1,
321
+ 830,2025-12-12,1,
322
+ 830,2025-12-13,1,
323
+ 830,2025-12-14,1,
324
+ 830,2025-12-15,1,
325
+ 830,2025-12-16,1,
326
+ 830,2025-12-17,1,
327
+ 830,2025-12-18,1,
328
+ 830,2025-12-19,1,
329
+ 830,2025-12-20,0,
330
+ 830,2025-12-21,1,
331
+ 830,2025-12-22,1,
332
+ 830,2025-12-23,0,
333
+ 830,2025-12-24,1,
334
+ 830,2025-12-25,1,TCF0009
335
+ 830,2025-12-26,1,
336
+ 830,2025-12-27,1,
337
+ 830,2025-12-28,1,
338
+ 614,2025-12-01,1,
339
+ 614,2025-12-02,1,
340
+ 614,2025-12-03,1,
341
+ 614,2025-12-04,1,
342
+ 614,2025-12-05,1,
343
+ 614,2025-12-06,1,TCF0012
344
+ 614,2025-12-07,1,TCF0012
345
+ 614,2025-12-08,1,
346
+ 614,2025-12-09,1,
347
+ 614,2025-12-10,1,
348
+ 614,2025-12-11,0,
349
+ 614,2025-12-12,1,
350
+ 614,2025-12-13,1,
351
+ 614,2025-12-14,0,
352
+ 614,2025-12-15,1,
353
+ 614,2025-12-16,1,
354
+ 614,2025-12-17,1,
355
+ 614,2025-12-18,0,
356
+ 614,2025-12-19,0,
357
+ 614,2025-12-20,1,
358
+ 614,2025-12-21,0,
359
+ 614,2025-12-22,0,
360
+ 614,2025-12-23,1,
361
+ 614,2025-12-24,0,
362
+ 614,2025-12-25,1,
363
+ 614,2025-12-26,1,
364
+ 614,2025-12-27,1,
365
+ 614,2025-12-28,1,
366
+ 987,2025-12-01,0,
367
+ 987,2025-12-02,1,
368
+ 987,2025-12-03,1,
369
+ 987,2025-12-04,0,
370
+ 987,2025-12-05,0,
371
+ 987,2025-12-06,0,
372
+ 987,2025-12-07,1,
373
+ 987,2025-12-08,1,TCF0010
374
+ 987,2025-12-09,1,
375
+ 987,2025-12-10,1,
376
+ 987,2025-12-11,1,
377
+ 987,2025-12-12,1,TCF0013
378
+ 987,2025-12-13,0,
379
+ 987,2025-12-14,0,
380
+ 987,2025-12-15,1,
381
+ 987,2025-12-16,0,
382
+ 987,2025-12-17,1,
383
+ 987,2025-12-18,0,
384
+ 987,2025-12-19,0,
385
+ 987,2025-12-20,1,
386
+ 987,2025-12-21,1,TCF0004
387
+ 987,2025-12-22,1,
388
+ 987,2025-12-23,1,
389
+ 987,2025-12-24,0,
390
+ 987,2025-12-25,0,
391
+ 987,2025-12-26,1,
392
+ 987,2025-12-27,0,
393
+ 987,2025-12-28,1,
394
+ 708,2025-12-01,1,
395
+ 708,2025-12-02,1,
396
+ 708,2025-12-03,0,
397
+ 708,2025-12-04,1,
398
+ 708,2025-12-05,0,
399
+ 708,2025-12-06,1,
400
+ 708,2025-12-07,0,
401
+ 708,2025-12-08,1,
402
+ 708,2025-12-09,1,
403
+ 708,2025-12-10,1,
404
+ 708,2025-12-11,1,
405
+ 708,2025-12-12,1,
406
+ 708,2025-12-13,0,
407
+ 708,2025-12-14,0,
408
+ 708,2025-12-15,1,TCF0017
409
+ 708,2025-12-16,1,
410
+ 708,2025-12-17,1,
411
+ 708,2025-12-18,1,
412
+ 708,2025-12-19,0,
413
+ 708,2025-12-20,0,
414
+ 708,2025-12-21,0,
415
+ 708,2025-12-22,1,
416
+ 708,2025-12-23,1,
417
+ 708,2025-12-24,0,
418
+ 708,2025-12-25,0,
419
+ 708,2025-12-26,1,
420
+ 708,2025-12-27,0,
421
+ 708,2025-12-28,0,
422
+ 643,2025-12-01,1,
423
+ 643,2025-12-02,1,
424
+ 643,2025-12-03,1,TCF0012
425
+ 643,2025-12-04,1,
426
+ 643,2025-12-05,1,
427
+ 643,2025-12-06,0,
428
+ 643,2025-12-07,0,
429
+ 643,2025-12-08,1,
430
+ 643,2025-12-09,0,
431
+ 643,2025-12-10,1,
432
+ 643,2025-12-11,1,
433
+ 643,2025-12-12,1,
434
+ 643,2025-12-13,1,TCF0017
435
+ 643,2025-12-14,1,
436
+ 643,2025-12-15,1,
437
+ 643,2025-12-16,1,
438
+ 643,2025-12-17,1,
439
+ 643,2025-12-18,0,
440
+ 643,2025-12-19,0,
441
+ 643,2025-12-20,1,
442
+ 643,2025-12-21,1,
443
+ 643,2025-12-22,1,
444
+ 643,2025-12-23,0,
445
+ 643,2025-12-24,1,
446
+ 643,2025-12-25,1,
447
+ 643,2025-12-26,0,
448
+ 643,2025-12-27,0,
449
+ 643,2025-12-28,0,
450
+ 746,2025-12-01,0,
451
+ 746,2025-12-02,1,
452
+ 746,2025-12-03,1,
453
+ 746,2025-12-04,1,
454
+ 746,2025-12-05,0,
455
+ 746,2025-12-06,1,
456
+ 746,2025-12-07,1,
457
+ 746,2025-12-08,1,
458
+ 746,2025-12-09,1,
459
+ 746,2025-12-10,1,
460
+ 746,2025-12-11,1,
461
+ 746,2025-12-12,1,
462
+ 746,2025-12-13,0,
463
+ 746,2025-12-14,0,
464
+ 746,2025-12-15,0,
465
+ 746,2025-12-16,1,
466
+ 746,2025-12-17,0,
467
+ 746,2025-12-18,1,
468
+ 746,2025-12-19,1,
469
+ 746,2025-12-20,0,
470
+ 746,2025-12-21,0,
471
+ 746,2025-12-22,1,
472
+ 746,2025-12-23,0,
473
+ 746,2025-12-24,0,
474
+ 746,2025-12-25,1,
475
+ 746,2025-12-26,0,
476
+ 746,2025-12-27,1,
477
+ 746,2025-12-28,1,TCF0017
478
+ 587,2025-12-01,1,
479
+ 587,2025-12-02,1,
480
+ 587,2025-12-03,0,
481
+ 587,2025-12-04,0,
482
+ 587,2025-12-05,1,
483
+ 587,2025-12-06,1,
484
+ 587,2025-12-07,0,
485
+ 587,2025-12-08,1,
486
+ 587,2025-12-09,1,
487
+ 587,2025-12-10,1,
488
+ 587,2025-12-11,1,
489
+ 587,2025-12-12,1,
490
+ 587,2025-12-13,0,
491
+ 587,2025-12-14,1,
492
+ 587,2025-12-15,1,
493
+ 587,2025-12-16,0,
494
+ 587,2025-12-17,1,
495
+ 587,2025-12-18,1,
496
+ 587,2025-12-19,1,
497
+ 587,2025-12-20,1,
498
+ 587,2025-12-21,1,TCF0002
499
+ 587,2025-12-22,1,
500
+ 587,2025-12-23,1,
501
+ 587,2025-12-24,1,TCF0006
502
+ 587,2025-12-25,1,
503
+ 587,2025-12-26,0,
504
+ 587,2025-12-27,1,
505
+ 587,2025-12-28,1,
506
+ 503,2025-12-01,1,
507
+ 503,2025-12-02,0,
508
+ 503,2025-12-03,1,
509
+ 503,2025-12-04,0,
510
+ 503,2025-12-05,0,
511
+ 503,2025-12-06,1,
512
+ 503,2025-12-07,0,
513
+ 503,2025-12-08,0,
514
+ 503,2025-12-09,1,
515
+ 503,2025-12-10,1,
516
+ 503,2025-12-11,0,
517
+ 503,2025-12-12,0,
518
+ 503,2025-12-13,0,
519
+ 503,2025-12-14,1,
520
+ 503,2025-12-15,1,
521
+ 503,2025-12-16,1,
522
+ 503,2025-12-17,0,
523
+ 503,2025-12-18,1,
524
+ 503,2025-12-19,1,
525
+ 503,2025-12-20,1,
526
+ 503,2025-12-21,1,
527
+ 503,2025-12-22,1,
528
+ 503,2025-12-23,1,
529
+ 503,2025-12-24,1,TCF0003
530
+ 503,2025-12-25,0,
531
+ 503,2025-12-26,0,
532
+ 503,2025-12-27,0,
533
+ 503,2025-12-28,1,TCF0001
534
+ 429,2025-12-01,0,
535
+ 429,2025-12-02,1,
536
+ 429,2025-12-03,0,
537
+ 429,2025-12-04,1,
538
+ 429,2025-12-05,1,
539
+ 429,2025-12-06,1,
540
+ 429,2025-12-07,0,
541
+ 429,2025-12-08,1,
542
+ 429,2025-12-09,0,
543
+ 429,2025-12-10,0,
544
+ 429,2025-12-11,0,
545
+ 429,2025-12-12,1,
546
+ 429,2025-12-13,0,
547
+ 429,2025-12-14,0,
548
+ 429,2025-12-15,0,
549
+ 429,2025-12-16,1,
550
+ 429,2025-12-17,1,
551
+ 429,2025-12-18,0,
552
+ 429,2025-12-19,1,
553
+ 429,2025-12-20,0,
554
+ 429,2025-12-21,1,
555
+ 429,2025-12-22,0,
556
+ 429,2025-12-23,1,TCF0008
557
+ 429,2025-12-24,1,
558
+ 429,2025-12-25,1,
559
+ 429,2025-12-26,1,
560
+ 429,2025-12-27,0,
561
+ 429,2025-12-28,1,
562
+ 591,2025-12-01,1,
563
+ 591,2025-12-02,1,
564
+ 591,2025-12-03,0,
565
+ 591,2025-12-04,1,
566
+ 591,2025-12-05,0,
567
+ 591,2025-12-06,0,
568
+ 591,2025-12-07,0,
569
+ 591,2025-12-08,0,
570
+ 591,2025-12-09,0,
571
+ 591,2025-12-10,1,
572
+ 591,2025-12-11,1,
573
+ 591,2025-12-12,1,
574
+ 591,2025-12-13,0,
575
+ 591,2025-12-14,0,
576
+ 591,2025-12-15,0,
577
+ 591,2025-12-16,0,
578
+ 591,2025-12-17,0,
579
+ 591,2025-12-18,0,
580
+ 591,2025-12-19,1,
581
+ 591,2025-12-20,0,
582
+ 591,2025-12-21,0,
583
+ 591,2025-12-22,1,
584
+ 591,2025-12-23,0,
585
+ 591,2025-12-24,0,
586
+ 591,2025-12-25,1,
587
+ 591,2025-12-26,1,
588
+ 591,2025-12-27,1,
589
+ 591,2025-12-28,0,
590
+ 559,2025-12-01,1,
591
+ 559,2025-12-02,1,
592
+ 559,2025-12-03,0,
593
+ 559,2025-12-04,1,
594
+ 559,2025-12-05,1,
595
+ 559,2025-12-06,0,
596
+ 559,2025-12-07,0,
597
+ 559,2025-12-08,1,
598
+ 559,2025-12-09,0,
599
+ 559,2025-12-10,1,
600
+ 559,2025-12-11,0,
601
+ 559,2025-12-12,0,
602
+ 559,2025-12-13,0,
603
+ 559,2025-12-14,0,
604
+ 559,2025-12-15,1,
605
+ 559,2025-12-16,0,
606
+ 559,2025-12-17,0,
607
+ 559,2025-12-18,1,TCF0011
608
+ 559,2025-12-19,0,
609
+ 559,2025-12-20,1,
610
+ 559,2025-12-21,0,
611
+ 559,2025-12-22,1,
612
+ 559,2025-12-23,0,
613
+ 559,2025-12-24,1,
614
+ 559,2025-12-25,0,
615
+ 559,2025-12-26,1,
616
+ 559,2025-12-27,0,
617
+ 559,2025-12-28,0,
618
+ 837,2025-12-01,1,
619
+ 837,2025-12-02,0,
620
+ 837,2025-12-03,0,
621
+ 837,2025-12-04,0,
622
+ 837,2025-12-05,1,
623
+ 837,2025-12-06,1,
624
+ 837,2025-12-07,1,
625
+ 837,2025-12-08,1,
626
+ 837,2025-12-09,1,TCF0013
627
+ 837,2025-12-10,1,
628
+ 837,2025-12-11,1,
629
+ 837,2025-12-12,1,
630
+ 837,2025-12-13,1,
631
+ 837,2025-12-14,1,
632
+ 837,2025-12-15,1,
633
+ 837,2025-12-16,1,
634
+ 837,2025-12-17,0,
635
+ 837,2025-12-18,1,
636
+ 837,2025-12-19,1,
637
+ 837,2025-12-20,0,
638
+ 837,2025-12-21,1,
639
+ 837,2025-12-22,1,
640
+ 837,2025-12-23,1,
641
+ 837,2025-12-24,1,
642
+ 837,2025-12-25,0,
643
+ 837,2025-12-26,1,
644
+ 837,2025-12-27,1,
645
+ 837,2025-12-28,1,
646
+ 687,2025-12-01,1,
647
+ 687,2025-12-02,0,
648
+ 687,2025-12-03,1,
649
+ 687,2025-12-04,1,
650
+ 687,2025-12-05,0,
651
+ 687,2025-12-06,0,
652
+ 687,2025-12-07,0,
653
+ 687,2025-12-08,1,
654
+ 687,2025-12-09,1,
655
+ 687,2025-12-10,1,
656
+ 687,2025-12-11,1,
657
+ 687,2025-12-12,0,
658
+ 687,2025-12-13,1,
659
+ 687,2025-12-14,0,
660
+ 687,2025-12-15,1,
661
+ 687,2025-12-16,1,
662
+ 687,2025-12-17,1,
663
+ 687,2025-12-18,0,
664
+ 687,2025-12-19,1,TCF0003
665
+ 687,2025-12-20,1,
666
+ 687,2025-12-21,0,
667
+ 687,2025-12-22,0,
668
+ 687,2025-12-23,0,
669
+ 687,2025-12-24,0,
670
+ 687,2025-12-25,1,
671
+ 687,2025-12-26,0,
672
+ 687,2025-12-27,1,
673
+ 687,2025-12-28,0,
674
+ 926,2025-12-01,0,
675
+ 926,2025-12-02,1,TCF0001
676
+ 926,2025-12-03,1,
677
+ 926,2025-12-04,1,
678
+ 926,2025-12-05,0,
679
+ 926,2025-12-06,0,
680
+ 926,2025-12-07,1,
681
+ 926,2025-12-08,1,
682
+ 926,2025-12-09,0,
683
+ 926,2025-12-10,0,
684
+ 926,2025-12-11,1,
685
+ 926,2025-12-12,1,
686
+ 926,2025-12-13,1,
687
+ 926,2025-12-14,1,
688
+ 926,2025-12-15,1,
689
+ 926,2025-12-16,0,
690
+ 926,2025-12-17,0,
691
+ 926,2025-12-18,0,
692
+ 926,2025-12-19,1,
693
+ 926,2025-12-20,1,
694
+ 926,2025-12-21,0,
695
+ 926,2025-12-22,1,
696
+ 926,2025-12-23,0,
697
+ 926,2025-12-24,1,
698
+ 926,2025-12-25,1,
699
+ 926,2025-12-26,1,TCF0004
700
+ 926,2025-12-27,1,
701
+ 926,2025-12-28,1,
702
+ 359,2025-12-01,0,
703
+ 359,2025-12-02,1,
704
+ 359,2025-12-03,1,
705
+ 359,2025-12-04,1,
706
+ 359,2025-12-05,1,
707
+ 359,2025-12-06,1,TCF0014
708
+ 359,2025-12-07,1,
709
+ 359,2025-12-08,1,
710
+ 359,2025-12-09,1,
711
+ 359,2025-12-10,0,
712
+ 359,2025-12-11,1,
713
+ 359,2025-12-12,1,
714
+ 359,2025-12-13,0,
715
+ 359,2025-12-14,0,
716
+ 359,2025-12-15,0,
717
+ 359,2025-12-16,0,
718
+ 359,2025-12-17,1,
719
+ 359,2025-12-18,1,
720
+ 359,2025-12-19,0,
721
+ 359,2025-12-20,0,
722
+ 359,2025-12-21,1,
723
+ 359,2025-12-22,1,
724
+ 359,2025-12-23,1,
725
+ 359,2025-12-24,1,
726
+ 359,2025-12-25,1,
727
+ 359,2025-12-26,1,TCF0012
728
+ 359,2025-12-27,1,
729
+ 359,2025-12-28,1,
730
+ 630,2025-12-01,1,
731
+ 630,2025-12-02,0,
732
+ 630,2025-12-03,0,
733
+ 630,2025-12-04,1,
734
+ 630,2025-12-05,0,
735
+ 630,2025-12-06,0,
736
+ 630,2025-12-07,1,
737
+ 630,2025-12-08,1,
738
+ 630,2025-12-09,1,
739
+ 630,2025-12-10,0,
740
+ 630,2025-12-11,0,
741
+ 630,2025-12-12,0,
742
+ 630,2025-12-13,0,
743
+ 630,2025-12-14,1,
744
+ 630,2025-12-15,1,
745
+ 630,2025-12-16,1,
746
+ 630,2025-12-17,1,
747
+ 630,2025-12-18,1,
748
+ 630,2025-12-19,1,
749
+ 630,2025-12-20,1,TCF0010
750
+ 630,2025-12-21,1,
751
+ 630,2025-12-22,1,
752
+ 630,2025-12-23,1,
753
+ 630,2025-12-24,0,
754
+ 630,2025-12-25,0,
755
+ 630,2025-12-26,0,
756
+ 630,2025-12-27,0,
757
+ 630,2025-12-28,1,
758
+ 417,2025-12-01,1,
759
+ 417,2025-12-02,0,
760
+ 417,2025-12-03,1,
761
+ 417,2025-12-04,1,
762
+ 417,2025-12-05,0,
763
+ 417,2025-12-06,1,
764
+ 417,2025-12-07,0,
765
+ 417,2025-12-08,1,
766
+ 417,2025-12-09,1,
767
+ 417,2025-12-10,1,
768
+ 417,2025-12-11,1,
769
+ 417,2025-12-12,1,
770
+ 417,2025-12-13,0,
771
+ 417,2025-12-14,1,
772
+ 417,2025-12-15,0,
773
+ 417,2025-12-16,0,
774
+ 417,2025-12-17,1,
775
+ 417,2025-12-18,1,
776
+ 417,2025-12-19,1,
777
+ 417,2025-12-20,1,
778
+ 417,2025-12-21,0,
779
+ 417,2025-12-22,0,
780
+ 417,2025-12-23,0,
781
+ 417,2025-12-24,0,
782
+ 417,2025-12-25,0,
783
+ 417,2025-12-26,1,
784
+ 417,2025-12-27,1,
785
+ 417,2025-12-28,0,
786
+ 835,2025-12-01,1,
787
+ 835,2025-12-02,1,
788
+ 835,2025-12-03,1,
789
+ 835,2025-12-04,1,
790
+ 835,2025-12-05,0,
791
+ 835,2025-12-06,1,
792
+ 835,2025-12-07,1,
793
+ 835,2025-12-08,0,
794
+ 835,2025-12-09,1,
795
+ 835,2025-12-10,1,
796
+ 835,2025-12-11,0,
797
+ 835,2025-12-12,0,
798
+ 835,2025-12-13,0,
799
+ 835,2025-12-14,1,TCF0017
800
+ 835,2025-12-15,1,
801
+ 835,2025-12-16,0,
802
+ 835,2025-12-17,0,
803
+ 835,2025-12-18,1,
804
+ 835,2025-12-19,1,
805
+ 835,2025-12-20,1,
806
+ 835,2025-12-21,0,
807
+ 835,2025-12-22,0,
808
+ 835,2025-12-23,1,TCF0003
809
+ 835,2025-12-24,1,
810
+ 835,2025-12-25,1,
811
+ 835,2025-12-26,0,
812
+ 835,2025-12-27,1,
813
+ 835,2025-12-28,1,
814
+ 615,2025-12-01,1,
815
+ 615,2025-12-02,0,
816
+ 615,2025-12-03,1,
817
+ 615,2025-12-04,0,
818
+ 615,2025-12-05,1,
819
+ 615,2025-12-06,1,
820
+ 615,2025-12-07,0,
821
+ 615,2025-12-08,0,
822
+ 615,2025-12-09,1,
823
+ 615,2025-12-10,0,
824
+ 615,2025-12-11,0,
825
+ 615,2025-12-12,0,
826
+ 615,2025-12-13,0,
827
+ 615,2025-12-14,0,
828
+ 615,2025-12-15,1,
829
+ 615,2025-12-16,0,
830
+ 615,2025-12-17,1,
831
+ 615,2025-12-18,0,
832
+ 615,2025-12-19,0,
833
+ 615,2025-12-20,0,
834
+ 615,2025-12-21,0,
835
+ 615,2025-12-22,0,
836
+ 615,2025-12-23,1,
837
+ 615,2025-12-24,0,
838
+ 615,2025-12-25,0,
839
+ 615,2025-12-26,1,
840
+ 615,2025-12-27,0,
841
+ 615,2025-12-28,0,
842
+ 554,2025-12-01,1,
843
+ 554,2025-12-02,1,
844
+ 554,2025-12-03,1,
845
+ 554,2025-12-04,1,
846
+ 554,2025-12-05,1,
847
+ 554,2025-12-06,1,
848
+ 554,2025-12-07,0,
849
+ 554,2025-12-08,1,TCF0012
850
+ 554,2025-12-09,1,
851
+ 554,2025-12-10,1,
852
+ 554,2025-12-11,0,
853
+ 554,2025-12-12,1,
854
+ 554,2025-12-13,1,
855
+ 554,2025-12-14,1,
856
+ 554,2025-12-15,0,
857
+ 554,2025-12-16,1,
858
+ 554,2025-12-17,0,
859
+ 554,2025-12-18,1,
860
+ 554,2025-12-19,1,
861
+ 554,2025-12-20,1,
862
+ 554,2025-12-21,1,
863
+ 554,2025-12-22,1,
864
+ 554,2025-12-23,1,
865
+ 554,2025-12-24,0,
866
+ 554,2025-12-25,1,TCF0018
867
+ 554,2025-12-26,1,
868
+ 554,2025-12-27,0,
869
+ 554,2025-12-28,1,
870
+ 448,2025-12-01,0,
871
+ 448,2025-12-02,1,
872
+ 448,2025-12-03,1,
873
+ 448,2025-12-04,0,
874
+ 448,2025-12-05,0,
875
+ 448,2025-12-06,0,
876
+ 448,2025-12-07,0,
877
+ 448,2025-12-08,1,TCF0003
878
+ 448,2025-12-09,1,
879
+ 448,2025-12-10,1,
880
+ 448,2025-12-11,1,
881
+ 448,2025-12-12,1,
882
+ 448,2025-12-13,0,
883
+ 448,2025-12-14,1,TCF0001
884
+ 448,2025-12-15,1,
885
+ 448,2025-12-16,0,
886
+ 448,2025-12-17,0,
887
+ 448,2025-12-18,1,
888
+ 448,2025-12-19,0,
889
+ 448,2025-12-20,0,
890
+ 448,2025-12-21,0,
891
+ 448,2025-12-22,1,
892
+ 448,2025-12-23,1,TCF0004
893
+ 448,2025-12-24,1,
894
+ 448,2025-12-25,1,
895
+ 448,2025-12-26,0,
896
+ 448,2025-12-27,0,
897
+ 448,2025-12-28,1,
898
+ 430,2025-12-01,1,TCF0001
899
+ 430,2025-12-02,1,
900
+ 430,2025-12-03,0,
901
+ 430,2025-12-04,1,
902
+ 430,2025-12-05,0,
903
+ 430,2025-12-06,1,
904
+ 430,2025-12-07,0,
905
+ 430,2025-12-08,1,TCF0007
906
+ 430,2025-12-09,1,
907
+ 430,2025-12-10,1,
908
+ 430,2025-12-11,0,
909
+ 430,2025-12-12,0,
910
+ 430,2025-12-13,0,
911
+ 430,2025-12-14,1,
912
+ 430,2025-12-15,1,
913
+ 430,2025-12-16,1,
914
+ 430,2025-12-17,1,
915
+ 430,2025-12-18,1,
916
+ 430,2025-12-19,1,
917
+ 430,2025-12-20,0,
918
+ 430,2025-12-21,1,
919
+ 430,2025-12-22,1,
920
+ 430,2025-12-23,1,
921
+ 430,2025-12-24,0,
922
+ 430,2025-12-25,1,
923
+ 430,2025-12-26,1,
924
+ 430,2025-12-27,1,TCF0004
925
+ 430,2025-12-28,0,
926
+ 961,2025-12-01,1,
927
+ 961,2025-12-02,0,
928
+ 961,2025-12-03,1,
929
+ 961,2025-12-04,0,
930
+ 961,2025-12-05,1,
931
+ 961,2025-12-06,0,
932
+ 961,2025-12-07,0,
933
+ 961,2025-12-08,1,
934
+ 961,2025-12-09,1,
935
+ 961,2025-12-10,1,
936
+ 961,2025-12-11,1,
937
+ 961,2025-12-12,0,
938
+ 961,2025-12-13,1,
939
+ 961,2025-12-14,0,
940
+ 961,2025-12-15,0,
941
+ 961,2025-12-16,1,
942
+ 961,2025-12-17,1,
943
+ 961,2025-12-18,0,
944
+ 961,2025-12-19,1,
945
+ 961,2025-12-20,1,
946
+ 961,2025-12-21,0,
947
+ 961,2025-12-22,1,TCF0006
948
+ 961,2025-12-23,1,
949
+ 961,2025-12-24,1,
950
+ 961,2025-12-25,1,
951
+ 961,2025-12-26,1,
952
+ 961,2025-12-27,1,
953
+ 961,2025-12-28,0,
954
+ 494,2025-12-01,1,
955
+ 494,2025-12-02,1,
956
+ 494,2025-12-03,1,
957
+ 494,2025-12-04,0,
958
+ 494,2025-12-05,1,
959
+ 494,2025-12-06,0,
960
+ 494,2025-12-07,0,
961
+ 494,2025-12-08,1,
962
+ 494,2025-12-09,1,
963
+ 494,2025-12-10,1,
964
+ 494,2025-12-11,1,
965
+ 494,2025-12-12,1,
966
+ 494,2025-12-13,1,TCF0008
967
+ 494,2025-12-14,1,
968
+ 494,2025-12-15,0,
969
+ 494,2025-12-16,1,
970
+ 494,2025-12-17,1,
971
+ 494,2025-12-18,1,
972
+ 494,2025-12-19,1,
973
+ 494,2025-12-20,1,
974
+ 494,2025-12-21,1,
975
+ 494,2025-12-22,0,
976
+ 494,2025-12-23,1,
977
+ 494,2025-12-24,1,
978
+ 494,2025-12-25,1,
979
+ 494,2025-12-26,1,
980
+ 494,2025-12-27,1,
981
+ 494,2025-12-28,0,
contract_list.csv ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ contract_id,契約No,顧客No,支店,件名1,件名2,請求書件名1,請求書件名2,顧客,請求先顧客,案件予定日(開始),案件予定日(終了),現場郵便番号,現場住所1,現場住所2,最寄り駅,集合時間,集合場所,必要人数,site_lat,site_lng,市区町村
2
+ TCF0001,3834,4366,栃木支店(架空),日光市 資材搬入立会い,(追加要員),日光市 資材搬入立会い,(追加要員),安全警備システム(架空),栃木設備工業(架空),2025-12-09,2025-12-12,324-5749,栃木県日光市(架空)2-80-41,,小山,8:00,栃木県日光市(架空)2-80-41,4,36.768814,139.746301,日光市
3
+ TCF0002,1663,6420,栃木支店(架空),日光市 夜間巡回警備,(追加要員),日光市 夜間巡回警備,(追加要員),真岡プラント(架空),真岡プラント(架空),2025-12-16,2025-12-16,323-2285,栃木県日光市(架空)2-78-854,,足利,8:30,栃木県日光市(架空)2-78-854,6,36.756059,139.750663,日光市
4
+ TCF0003,2892,7937,栃木支店(架空),宇都宮市 夜間巡回警備,(追加要員),宇都宮市 夜間巡回警備,(追加要員),宇都宮リフォーム(架空),安全警備システム(架空),2025-12-18,2025-12-20,327-5610,栃木県宇都宮市(架空)3-70-698,,足利,8:00,栃木県宇都宮市(架空)3-70-698,3,36.549851,139.761428,宇都宮市
5
+ TCF0004,3030,9854,栃木支店(架空),宇都宮市 夜間巡回警備,(予備日含む),宇都宮市 夜間巡回警備,(予備日含む),北関東建設(架空),関東道路サービス(架空),2025-12-11,2025-12-13,323-0972,栃木県宇都宮市(架空)2-23-88,,栃木,8:30,栃木県宇都宮市(架空)2-23-88,5,36.507513,139.931307,宇都宮市
6
+ TCF0005,2201,5906,栃木支店(架空),佐野市 交通誘導警備(工事),,佐野市 交通誘導警備(工事),,ライト土木(架空),ライト土木(架空),2025-12-07,2025-12-12,323-9949,栃木県佐野市(架空)2-25-569,,鹿沼,7:30,栃木県佐野市(架空)2-25-569,4,36.318689,139.454073,佐野市
7
+ TCF0006,5332,4741,栃木支店(架空),佐野市 通行止め対応,,佐野市 通行止め対応,,真岡プラント(架空),真岡プラント(架空),2025-12-16,2025-12-17,326-2620,栃木県佐野市(架空)4-50-184,,新鹿沼,21:00,栃木県佐野市(架空)4-50-184,4,36.349223,139.555764,佐野市
8
+ TCF0007,9896,5786,栃木支店(架空),小山市 資材搬入立会い,,小山市 資材搬入立会い,,安全警備システム(架空),安全警備システム(架空),2025-12-08,2025-12-11,323-9405,栃木県小山市(架空)5-40-264,,小山,21:00,栃木県小山市(架空)5-40-264,2,36.325283,139.824955,小山市
9
+ TCF0008,3718,336,栃木支店(架空),宇都宮市 夜間巡回警備,,宇都宮市 夜間巡回警備,,日光エンジニアリング(架空),日光エンジニアリング(架空),2025-12-13,2025-12-15,324-3468,栃木県宇都宮市(架空)7-63-131,,鹿沼,21:00,栃木県宇都宮市(架空)7-63-131,4,36.574017,139.88941,宇都宮市
10
+ TCF0009,1502,4906,栃木支店(架空),真岡市 通行止め対応,(追加要員),真岡市 通行止め対応,(追加要員),小山インフラ(架空),ライト土木(架空),2025-12-25,2025-12-25,322-8618,栃木県真岡市(架空)8-67-239,,小山,8:00,栃木県真岡市(架空)8-67-239,4,36.329005,139.910302,真岡市
11
+ TCF0010,3162,7369,栃木支店(架空),栃木市 交通誘導警備(工事),,栃木市 交通誘導警備(工事),,真岡プラント(架空),関東道路サービス(架空),2025-12-25,2025-12-25,323-0771,栃木県栃木市(架空)6-26-782,,新鹿沼,21:00,栃木県栃木市(架空)6-26-782,3,36.363468,139.785376,栃木市
12
+ TCF0011,7559,9247,栃木支店(架空),日光市 通行止め対応,(予備日含む),日光市 通行止め対応,(予備日含む),真岡プラント(架空),北関東建設(架空),2025-12-20,2025-12-21,326-3829,栃木県日光市(架空)3-30-475,,栃木,8:00,栃木県日光市(架空)3-30-475,4,36.847414,139.656067,日光市
13
+ TCF0012,4331,7921,栃木支店(架空),佐野市 交通誘導警備(工事),(追加要員),佐野市 交通誘導警備(工事),(追加要員),関東道路サービス(架空),関東道路サービス(架空),2025-12-01,2025-12-06,323-3586,栃木県佐野市(架空)1-36-50,,宇都宮,8:30,栃木県佐野市(架空)1-36-50,6,36.333225,139.677257,佐野市
14
+ TCF0013,9283,5207,栃木支店(架空),宇都宮市 年末巡回(短期),,宇都宮市 年末巡回(短期),,栃木設備工業(架空),小山インフラ(架空),2025-12-13,2025-12-16,324-4157,栃木県宇都宮市(架空)4-60-729,,宇都宮,8:30,栃木県宇都宮市(架空)4-60-729,6,36.494586,139.90397,宇都宮市
15
+ TCF0014,5591,8835,栃木支店(架空),日光市 年末巡回(短期),,日光市 年末巡回(短期),,ライト土木(��空),ライト土木(架空),2025-12-23,2025-12-28,326-4926,栃木県日光市(架空)2-73-328,,新鹿沼,8:30,栃木県日光市(架空)2-73-328,1,36.745976,139.684835,日光市
16
+ TCF0015,7401,7916,栃木支店(架空),佐野市 交通誘導警備(工事),(追加要員),佐野市 交通誘導警備(工事),(追加要員),関東道路サービス(架空),真岡プラント(架空),2025-12-04,2025-12-09,323-8477,栃木県佐野市(架空)6-72-303,,足利,21:00,栃木県佐野市(架空)6-72-303,1,36.191336,139.68611,佐野市
17
+ TCF0016,8816,9192,栃木支店(架空),栃木市 年末巡回(短期),,栃木市 年末巡回(短期),,真岡プラント(架空),小山インフラ(架空),2025-12-16,2025-12-17,323-1705,栃木県栃木市(架空)1-50-845,,新鹿沼,7:30,栃木県栃木市(架空)1-50-845,4,36.28327,139.67715,栃木市
18
+ TCF0017,3235,2887,栃木支店(架空),佐野市 年末巡回(短期),(追加要員),佐野市 年末巡回(短期),(追加要員),真岡プラント(架空),小山インフラ(架空),2025-12-21,2025-12-24,324-2939,栃木県佐野市(架空)2-9-966,,新鹿沼,8:30,栃木県佐野市(架空)2-9-966,5,36.243223,139.532604,佐野市
19
+ TCF0018,4302,2446,栃木支店(架空),鹿沼市 資材搬入立会い,(予備日含む),鹿沼市 資材搬入立会い,(予備日含む),栃木設備工業(架空),栃木設備工業(架空),2025-12-10,2025-12-13,321-1653,栃木県鹿沼市(架空)2-26-96,,栃木,8:30,栃木県鹿沼市(架空)2-26-96,6,36.540836,139.793341,鹿沼市
guard_master.csv ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ユーザー番号,従業員番号,ユーザーID,苗字,名前,苗字カナ,名前カナ,所属支店,生年月日,年齢,性別,血液型,最低血圧,最高血圧,郵便番号,住所,本籍,最寄り駅,交通手段,電話番号1,電話番号2,緊急連絡先(氏名),続柄,緊急連絡先(電話番号),確認日,緊急連絡先(氏名)2,続柄2,緊急連絡先(電話番号)2,確認日2,緊急連絡先(氏名)3,続柄3,緊急連絡先(電話番号)3,確認日3,扶養家族人数,配偶者の有無,メールアドレス,入社日,home_lat,home_lng
2
+ 1,757,u00757,加藤,愛,,,栃木支店(架空),1991-02-24,34,男,B,66,112,323-0224,栃木県真岡市(架空)4-32-261,栃木県(架空),西川田,自転車,080-4488-9411,,斎藤 翔,父,090-1082-5474,2020-04-27,高橋 大輔,子,090-5634-1676,2020-12-11,高橋 直樹,子,090-5684-1810,2021-06-28,1,無,u00757@example.com,2019-11-09,36.396493,139.943048
3
+ 2,973,u00973,伊藤,太郎,,,栃木支店(架空),1990-02-12,35,男,A,69,147,322-7708,栃木県栃木市(架空)3-86-90,栃木県(架空),鹿沼,徒歩,080-7580-6489,,高橋 花子,父,090-3668-8886,2025-12-26,吉田 直樹,父,090-7301-4963,2026-11-14,中村 大輔,母,090-6336-8803,2027-05-21,1,有,u00973@example.com,2024-12-17,36.262634,139.570179
4
+ 3,807,u00807,渡辺,太郎,,,栃木支店(架空),1998-05-27,27,女,AB,71,104,323-1414,栃木県栃木市(架空)5-47-52,栃木県(架空),雀宮,公共交通,080-5016-1249,,加藤 直樹,子,090-9571-3393,2019-06-16,佐藤 拓海,子,090-8494-6482,2019-08-30,田中 拓海,兄弟,090-1436-9024,2020-05-26,1,無,u00807@example.com,2017-11-10,36.377669,139.725841
5
+ 4,680,u00680,鈴木,直樹,,,栃木支店(架空),1984-09-22,41,女,A,92,119,325-5545,栃木県日光市(架空)4-26-388,栃木県(架空),真岡,車,080-5709-5940,,田中 麻衣,配偶者,090-4864-3955,2022-01-23,田中 結衣,親族,090-7577-8010,2022-04-23,山本 花子,父,090-2242-5820,2022-12-12,1,無,u00680@example.com,2020-04-20,36.68596,139.697512
6
+ 5,749,u00749,高橋,翔,,,栃木支店(架空),1969-10-23,56,男,O,95,131,321-8426,栃木県栃木市(架空)3-12-89,栃木県(架空),栃木,徒歩,080-4269-2230,,加藤 直樹,母,090-7187-3115,2018-12-13,田中 美咲,親族,090-3831-7362,2019-03-31,中村 彩,親族,090-1035-5164,2019-10-30,0,有,u00749@example.com,2018-07-19,36.350213,139.705849
7
+ 6,622,u00622,山本,愛,,,栃木支店(架空),2001-12-12,24,男,O,62,114,321-4483,栃木県栃木市(架空)6-18-266,栃木県(架空),佐野,公共交通,080-9117-6836,,斎藤 愛,母,090-9824-7393,2023-12-24,松本 悠斗,母,090-9665-2940,2024-03-19,山田 太郎,母,090-6683-7914,2025-02-05,2,無,u00622@example.com,2022-07-07,36.433695,139.696997
8
+ 7,437,u00437,吉田,結衣,,,栃木支店(架空),1965-01-10,60,男,O,87,125,325-9477,栃木県足利市(架空)4-26-970,栃木県(架空),小山,公共交通,080-3721-5096,,小林 太郎,子,090-3496-9997,2019-03-13,山本 直樹,母,090-2862-7633,2019-09-05,渡辺 愛,子,090-2448-9932,2020-06-19,3,有,u00437@example.com,2019-02-27,36.36926,139.437423
9
+ 8,848,u00848,加藤,拓海,,,栃木支店(架空),2000-02-13,25,男,O,94,128,324-0002,栃木県日光市(架空)7-58-761,栃木県(架空),西川田,公共交通,080-1382-1537,,斎藤 麻衣,母,090-9461-4122,2018-05-23,松本 翔,兄弟,090-7081-4070,2018-08-22,鈴木 愛,父,090-5898-1076,2019-04-18,0,有,u00848@example.com,2018-04-23,36.723936,139.667482
10
+ 9,686,u00686,渡辺,健,,,栃木支店(架空),1967-07-12,58,男,B,78,122,329-5239,栃木県日光市(架空)3-61-532,栃木県(架空),宇都宮,徒歩,080-2217-2012,,伊藤 結衣,兄弟,090-4525-9379,2024-05-17,斎藤 優子,父,090-9353-2484,2024-08-21,小林 麻衣,子,090-1494-7804,2025-06-17,3,無,u00686@example.com,2024-01-22,36.677574,139.646412
11
+ 10,659,u00659,加藤,優子,,,栃木支店(架空),2002-11-22,23,男,B,93,131,327-9254,栃木県佐野市(架空)2-91-762,栃木県(架空),今市,徒歩,080-8407-6942,,山田 翔,兄弟,090-9515-7055,2019-07-11,佐藤 美咲,母,090-3900-1090,2020-05-14,佐藤 大輔,子,090-7316-9023,2020-10-02,0,有,u00659@example.com,2018-09-18,36.278052,139.491383
12
+ 11,360,u00360,伊藤,結衣,,,栃木支店(架空),1978-07-08,47,男,O,83,125,326-2537,栃木県鹿沼市(架空)5-97-933,栃木県(架空),西川田,徒歩,080-1298-7761,,伊藤 彩,配偶者,090-7180-5608,2020-09-17,吉田 拓海,兄弟,090-9726-3658,2021-04-15,鈴木 美咲,父,090-8696-1636,2022-04-09,2,無,u00360@example.com,2020-02-21,36.626079,139.677495
13
+ 12,830,u00830,田中,麻衣,,,栃木支店(架空),1966-07-25,59,男,B,75,114,322-8712,栃木県真岡市(架空)1-45-756,栃木県(架空),今市,自転車,080-3316-6917,,佐藤 翔,父,090-4656-9549,2020-01-17,田中 大輔,子,090-9359-5528,2020-11-20,田中 優子,親族,090-2998-9791,2021-03-01,0,有,u00830@example.com,2018-04-22,36.434707,140.034606
14
+ 13,614,u00614,吉田,優子,,,栃木支店(架空),2001-09-10,24,女,B,87,115,320-3813,栃木県小山市(架空)7-77-287,栃木県(架空),雀宮,徒歩,080-4468-6947,,小林 健,兄弟,090-6110-5905,2021-11-24,吉田 結衣,親族,090-2061-9442,2022-03-02,中村 彩,兄弟,090-6961-3959,2022-09-14,3,無,u00614@example.com,2020-08-08,36.322058,139.831435
15
+ 14,987,u00987,高橋,直樹,,,栃木支店(架空),1972-05-24,53,男,O,60,143,321-1802,栃木県栃木市(架空)6-85-496,栃木県(架空),今市,車,080-4308-1910,,佐藤 太郎,兄弟,090-3148-1389,2017-07-20,山本 結衣,母,090-7977-6217,2017-12-31,吉田 麻衣,兄弟,090-3152-4326,2018-12-10,2,有,u00987@example.com,2017-05-13,36.367339,139.675238
16
+ 15,708,u00708,中村,拓海,,,栃木支店(架空),1985-08-23,40,女,AB,72,153,327-2640,栃木県日光市(架空)2-42-185,栃木県(架空),真岡,自転車,080-3228-9278,,田中 翔,配偶者,090-5439-2564,2021-08-26,渡辺 優子,父,090-3259-5653,2021-12-16,松本 直樹,親族,090-5736-5852,2022-05-13,0,有,u00708@example.com,2019-10-21,36.748378,139.76325
17
+ 16,643,u00643,佐藤,健,,,栃木支店(架空),1987-11-17,38,男,AB,85,146,325-3707,栃木県真岡市(架空)2-26-791,栃木県(架空),新鹿沼,公共交通,080-1845-9937,,中村 彩,配偶者,090-8950-5117,2022-06-12,小林 翔,兄弟,090-2245-4382,2023-04-29,山本 直樹,兄弟,090-2482-7667,2024-04-25,3,有,u00643@example.com,2022-01-10,36.414372,139.931602
18
+ 17,746,u00746,佐藤,健,,,栃木支店(架空),1964-03-12,61,男,A,67,101,326-4878,栃木県小山市(架空)4-27-538,栃木県(架空),今市,自転車,080-7117-6014,,伊藤 結衣,父,090-1667-6136,2024-12-06,田中 麻衣,父,090-3420-3836,2025-10-21,斎藤 愛,父,090-7747-6539,2026-03-29,0,無,u00746@example.com,2023-04-24,36.1963,139.742611
19
+ 18,587,u00587,松本,直樹,,,栃木支店(架空),1990-08-02,35,女,AB,80,131,328-3485,栃木県鹿沼市(架空)3-92-64,栃木県(架空),今市,徒歩,080-3776-9887,,山田 愛,母,090-9557-2008,2023-05-15,加藤 美咲,父,090-2747-7943,2023-08-31,山本 大輔,親族,090-5733-9151,2024-02-20,1,有,u00587@example.com,2021-09-27,36.490792,139.725052
20
+ 19,503,u00503,斎藤,翔,,,栃木支店(架空),1978-08-23,47,男,AB,78,150,323-9141,栃木県栃木市(架空)6-82-92,栃木県(架空),佐野,公共交通,080-4883-4463,,山本 美咲,兄弟,090-3536-2862,2022-05-11,加藤 直樹,親族,090-3623-2277,2022-09-27,山本 悠斗,兄弟,090-1703-4882,2023-04-09,1,有,u00503@example.com,2020-07-22,36.417597,139.572144
21
+ 20,429,u00429,小林,翔,,,栃木支店(架空),1963-01-07,62,女,B,95,141,321-5191,栃木県足利市(架空)7-58-71,栃木県(架空),今市,徒歩,080-6560-3043,,加藤 花子,配偶者,090-8462-8066,2017-11-03,渡辺 直樹,兄弟,090-5646-5903,2018-08-23,高橋 大輔,子,090-9667-4440,2019-04-16,2,無,u00429@example.com,2017-03-05,36.312318,139.510569
22
+ 21,591,u00591,山本,健,,,栃木支店(架空),1983-11-11,42,女,A,82,111,324-8076,栃木県栃木市(架空)5-91-404,栃木県(架空),栃木,公共交通,080-4627-5037,,中村 拓海,配偶者,090-2853-8229,2021-08-25,田中 彩,親族,090-9879-2352,2021-11-15,加藤 麻衣,母,090-3916-3272,2022-08-03,3,有,u00591@example.com,2020-02-12,36.408349,139.736376
23
+ 22,559,u00559,小林,翔,,,栃木支店(架空),1996-09-21,29,男,B,75,105,326-1001,栃木県佐野市(架空)6-96-28,栃木県(架空),西川田,車,080-1023-9099,,小林 健,子,090-2567-9356,2025-02-28,山田 愛,子,090-3244-3772,2025-06-27,松本 花子,親族,090-3368-8614,2025-12-01,3,無,u00559@example.com,2023-07-12,36.210636,139.543425
24
+ 23,837,u00837,山本,悠斗,,,栃木支店(架空),1976-02-13,49,女,A,90,123,320-4532,栃木県真岡市(架空)1-77-15,栃木県(架空),栃木,車,080-5795-1659,,松本 結衣,配偶者,090-7853-8783,2022-06-17,鈴木 彩,母,090-8739-8957,2022-11-14,斎藤 悠斗,親族,090-5228-3191,2023-05-23,0,有,u00837@example.com,2022-02-18,36.488984,139.985084
25
+ 24,687,u00687,山田,悠斗,,,栃木支店(架空),1962-11-12,63,女,B,69,143,325-2875,栃木県宇都宮市(架空)1-94-148,栃木県(架空),新鹿沼,自転車,080-8288-5258,,吉田 大輔,子,090-2044-1115,2020-09-16,松本 美咲,兄弟,090-7349-4512,2020-10-21,斎藤 太郎,親族,090-8116-5490,2021-01-21,3,有,u00687@example.com,2018-11-01,36.575095,139.899847
26
+ 25,926,u00926,渡辺,美咲,,,栃木支店(架空),2002-02-09,23,女,O,72,103,326-0308,栃木県足利市(架空)1-3-309,栃木県(架空),宇都宮,車,080-3751-3791,,山田 拓海,兄弟,090-1155-4916,2023-01-18,高橋 美咲,父,090-5356-8798,2023-12-09,田中 健,子,090-5787-4914,2024-03-20,0,有,u00926@example.com,2022-02-07,36.265107,139.418391
27
+ 26,359,u00359,鈴木,美咲,,,栃木支店(架空),1963-07-12,62,女,AB,69,111,324-9142,栃木県鹿沼市(架空)3-55-56,栃木県(架空),雀宮,徒歩,080-9736-4108,,中村 大輔,配偶者,090-4381-1951,2019-10-08,伊藤 美咲,母,090-6142-5280,2020-07-10,小林 拓海,母,090-3697-4198,2021-03-03,1,有,u00359@example.com,2019-02-16,36.492011,139.615202
28
+ 27,630,u00630,小林,優子,,,栃木支店(架空),1963-06-01,62,女,A,86,113,329-2777,栃木県足利市(架空)3-35-709,栃木県(架空),西川田,徒歩,080-9720-2190,,松本 悠斗,兄弟,090-8066-9829,2023-08-03,松本 健,父,090-5424-9061,2024-04-01,高橋 優子,兄弟,090-4310-2240,2025-02-20,2,有,u00630@example.com,2022-05-18,36.370161,139.528708
29
+ 28,417,u00417,田中,結衣,,,栃木支店(架空),1994-05-11,31,男,B,78,116,323-0261,栃木県佐野市(架空)5-64-24,栃木県(架空),足利,自転車,080-7288-9065,,高橋 拓海,配偶者,090-3690-1658,2021-10-05,斎藤 彩,父,090-4864-3373,2022-01-08,松本 優子,兄弟,090-6630-4355,2022-07-30,2,無,u00417@example.com,2021-06-20,36.314396,139.622161
30
+ 29,835,u00835,鈴木,健,,,栃木支店(架空),1980-04-17,45,女,A,81,133,320-1108,栃木県足利市(架空)3-27-594,栃木県(架空),鹿沼,自転車,080-4653-6330,,斎藤 拓海,父,090-2045-1872,2019-05-04,田中 大輔,兄弟,090-8414-6360,2019-09-26,斎藤 拓海,親族,090-3429-6240,2020-01-10,2,有,u00835@example.com,2018-09-16,36.384444,139.487413
31
+ 30,615,u00615,加藤,花子,,,栃木支店(架空),1965-02-09,60,男,A,64,132,325-1330,栃木県宇都宮市(架空)7-69-80,栃木県(架空),真岡,車,080-3175-8502,,渡辺 結衣,母,090-9640-3923,2024-03-20,斎藤 花子,母,090-3649-3635,2024-06-19,高橋 花子,兄弟,090-3089-2550,2025-05-23,0,有,u00615@example.com,2024-02-22,36.421385,139.934786
32
+ 31,554,u00554,田中,悠斗,,,栃木支店(架空),1962-03-02,63,女,O,60,148,326-5571,栃木県宇都宮市(架空)3-92-127,栃木県(架空),西川田,公共交通,080-9581-4617,,吉田 大輔,子,090-5115-9120,2021-05-21,山田 大輔,父,090-6465-7890,2022-05-12,小林 直樹,母,090-1622-7353,2022-08-25,3,無,u00554@example.com,2019-08-09,36.604659,139.768767
33
+ 32,448,u00448,中村,美咲,,,栃木支店(架空),1963-03-22,62,女,B,64,119,325-2003,栃木県真岡市(架空)9-34-525,栃木県(架空),宇都宮,公共交通,080-4351-9573,,伊藤 拓海,父,090-7438-3402,2020-12-14,松本 結衣,親族,090-9598-3281,2021-08-03,斎藤 大輔,父,090-5253-6511,2021-11-30,1,無,u00448@example.com,2019-01-02,36.435972,139.963746
34
+ 33,430,u00430,高橋,大輔,,,栃木支店(架空),1981-06-05,44,女,A,91,131,327-8165,栃木県足利市(架空)7-54-786,栃木県(架空),今市,徒歩,080-1389-9651,,吉田 翔,配偶者,090-9567-6422,2023-07-06,松本 花子,母,090-9893-9063,2024-05-26,佐藤 彩,兄弟,090-2810-8645,2025-04-12,3,有,u00430@example.com,2022-02-28,36.434956,139.476442
35
+ 34,961,u00961,田中,優子,,,栃木支店(架空),1968-02-20,57,男,O,74,126,327-4069,栃木県足利市(架空)3-76-651,栃木県(架空),真岡,公共交通,080-8866-7010,,加藤 優子,父,090-2462-1279,2022-10-22,高橋 拓海,母,090-4119-9952,2023-01-29,斎藤 愛,父,090-6585-4489,2023-07-27,1,有,u00961@example.com,2022-04-01,36.310071,139.400271
36
+ 35,494,u00494,中村,翔,,,栃木支店(架空),1965-04-03,60,男,A,80,140,325-2671,栃木県佐野市(架空)7-86-624,栃木県(架空),今市,公共交通,080-7302-8147,,山本 結衣,子,090-5893-9576,2020-01-15,吉田 太郎,親族,090-5072-2880,2020-07-25,加藤 優子,親族,090-8440-8325,2021-03-13,0,無,u00494@example.com,2018-09-09,36.281141,139.58651