Skip to content

Đo lường đa địa điểm (Xếp hạng Geo-Grid)

Tổng quan

MụcNội dung
Trạng thái🔵 Đề xuất
Issue-
Phụ trách-

Bố trí các điểm đo theo dạng lưới (tối đa 49 điểm) trong khu vực chỉ định, gọi Google Places API với cùng một từ khóa từ mỗi điểm để lấy xếp hạng, và trực quan hóa bằng bản đồ nhiệt trên bản đồ. Đặt mục tiêu đạt mức dịch vụ tương đương MEO Dashboard byGMO.

MụcNội dung
Tham chiếu (benchmark)MEO Dashboard byGMO (theo mô tả "Đo lường xếp hạng đa địa điểm" trên trang chính thức: tối đa 49 điểm / khoảng cách 100m〜10km có thể thay đổi / xuất file PNG + EXCEL)
Phương thức đoGoogle Places API (New) Text Search — chuyển locationBias.circle theo từng điểm đo
KPI chínhAGR / ATGR / SoLV (chuẩn quốc tế) + ghi kèm tên gọi nội địa
Trực quan hóaBản đồ nhiệt + chỉ số tổng hợp + so sánh kỳ + xuất CSV/PNG
Đối tượngMAPPY (đầu tiên) → GCOR / PIPIT triển khai tiếp theo
Phí APIDuy trì $0 (Basic SKU với Field Mask chỉ chứa places.id)

Nội dung đề xuất

Bối cảnh & vấn đề

  • Phiên bản Places API hiện tại chỉ đo 1 điểm tại địa chỉ cửa hàng (đã vận hành chính thức từ kỳ tổng hợp lần 2 ngày 17/4)
  • Tìm kiếm địa phương của Google phụ thuộc mạnh vào vị trí hiện tại của người tìm (hiệu ứng Proximity) — trường hợp trước cửa hàng đang xếp hạng 3 nhưng cách 2km thì ngoài phạm vi sẽ không nhìn thấy nếu chỉ đo 1 điểm
  • Với các ngành kinh doanh kiểu di động (vệ sinh, ống nước, y tế tại nhà...), khách không đến cửa hàng, nên xếp hạng tại 1 điểm địa chỉ cửa hàng không phản ánh thực tế
  • Khách hàng yêu cầu rõ "hiển thị xếp hạng trực quan trên bản đồ" và "lấy dịch vụ của GMO làm tham chiếu"
  • Trên thị trường nội địa, các công cụ thương mại hóa đo đa địa điểm chỉ chiếm khoảng 3〜4 phần trên 15〜30 công cụ — vẫn còn khoảng trống
  • MEO Dashboard byGMO do GMO TECH cung cấp đứng No.1 thị phần doanh số trong nước 3 năm liên tiếp theo khảo sát ITR (nguồn: GMO IR) — thực tế là tiêu chuẩn tham chiếu nội địa

Giải pháp đề xuất

Chuyển locationBias của Google Places API theo từng điểm đo để gọi API và lưu xếp hạng tại mỗi điểm. Trên màn hình bản đồ hiển thị bản đồ nhiệt và các chỉ số tổng hợp (AGR / ATGR / SoLV).

Tính năng chính:

  • Cấu hình lưới có thể chọn 3×3 / 5×5 / 7×7, khoảng cách có thể thay đổi 100m〜10km (thiết kế đạt cùng số điểm 49 với GMO ở cấu hình 7×7)
  • Mỗi điểm đo chỉ định động locationBias.circle.center(lat,lng) + radius
  • 1 điểm đo = 1 bản ghi, mở rộng tương thích bảng mappy_place_search_rankings
  • Bản đồ nhiệt sử dụng phân màu theo dải xếp hạng + lớp phủ số (kế thừa định dạng GMO)
  • Bổ sung tên gọi nội địa cho KPI chuẩn quốc tế (ví dụ: SoLV → "Tỷ lệ đạt Top 3") để khác biệt hóa
  • Phí API duy trì Basic SKU ($0), chi phí tăng chỉ ở phía hạ tầng (Fargate / DB / S3)

Danh sách chức năng

#Tên chức năngMô tảƯu tiên
1UI cài đặt lướiChọn điểm trung tâm / N×N / khoảng cách (100m〜10km) / từ khóa đoCao
2Sinh tọa độ điểm đoTính (lat, lng) của từng điểm từ điểm trung tâm + thông số lướiCao
3Gọi API đa địa điểmChuyển locationBias theo từng điểm và chạy Text SearchCao
4Chia nhỏ batchChia nhỏ thực thi để cấu hình 7×7 không vượt timeout 6hCao
5Mở rộng DB schemaThêm grid_point_id / lat / lng / grid_indexCao
6Hiển thị bản đồ nhiệtPin màu xếp hạng + lớp phủ số trên Google MapsCao
7Hiển thị chỉ số tổng hợpAGR / ATGR / SoLV + tên gọi nội địaCao
8So sánh kỳHiển thị song song bản đồ nhiệt 2 thời điểm / tóm tắt biến độngTrung bình
9Xuất CSV / PNGBảng số kết quả lưới + ảnh bản đồTrung bình
10Mở rộng GCP đa projectĐối phó burst rate limit, chạy song song 5〜6 projectCao
11GIF Time-lapse (mở rộng)Xuất animation bản đồ nhiệt trong kỳThấp

Vấn đề thiết kế

Đặc tả lưới

LướiĐiểm đoMục đích sử dụngSố request/ngày (tham khảo)
3×39Trung tâm đô thị, khu thương mại hẹpKhoảng 250.000 request
5×525Tiêu chuẩn (cân bằng)Khoảng 690.000 request
7×749Cùng số điểm GMO (49 điểm) / khu thương mại rộngKhoảng 1.350.000 request

※ Tính theo Tổng (từ khóa × cửa hàng × hệ thống)/ngày = khoảng 27.656 case (thực tế 13/4) × N

Kiểm chứng hoạt động của locationBias (bắt buộc trong PoC)

  • locationBias của Places API là gợi ý, không phải bộ lọc. Kết quả có thể bao gồm cả các vị trí cách xa tọa độ chỉ định
  • Không đảm bảo trùng khớp hoàn toàn với "xếp hạng Google Maps khi người dùng thực sự tìm từ vị trí đó"
  • Các công cụ quốc tế (Local Falcon / Geogrid.dev) chủ yếu sử dụng scraping Google SERP có UULE. Đo đa địa điểm bằng Places API trực tiếp ít tiền lệ trong ngành
  • → Trong PoC cần đo thực tế 3〜5 cửa hàng × 5〜10 từ khóa × 25 điểm để kiểm chứng sự chênh lệch xếp hạng giữa các điểm có hợp lý không (tỷ lệ trùng khớp với phương thức UULE)

Ước tính khối lượng xử lý & thời gian

LướiSố request/batchThời gian dự kiến (3 GCP project / 12 thread)
3×3248.904 requestKhoảng 3〜4 giờ
5×5691.400 requestKhoảng 9〜12 giờ
7×71.355.144 requestKhoảng 17〜20 giờ (vượt timeout 6h của Fargate)

→ Để chạy được cấu hình 7×7 bắt buộc:

  1. Mở rộng GCP project lên 5〜6 cái (QPM 3.000〜3.600 / thực tế 50〜60 req/s)
  2. Chia batch theo vùng địa lý hoặc theo khung giờ (mỗi job ≤ 6h)
  3. Phân tách trigger EventBridge (ví dụ: phân chia 4 job theo dải store_id)

Đề xuất mở rộng DB schema

Dựa trên bảng mappy_place_search_rankings hiện tại, thêm bảng cha chứa thông tin điểm đo:

sql
-- Cấu hình lưới điểm đo
CREATE TABLE mappy_grid_definitions (
  id              BIGINT PRIMARY KEY AUTO_INCREMENT,
  gbp_location_id BIGINT NOT NULL,
  grid_size       TINYINT NOT NULL,                -- 3,5,7
  spacing_meters  INT NOT NULL,                    -- 100〜10000
  center_lat      DECIMAL(10,7) NOT NULL,
  center_lng      DECIMAL(10,7) NOT NULL,
  created_at      DATETIME,
  updated_at      DATETIME,
  INDEX idx_location (gbp_location_id)
);

-- Xếp hạng theo từng điểm đo
CREATE TABLE mappy_grid_search_rankings (
  id              BIGINT PRIMARY KEY AUTO_INCREMENT,
  grid_def_id     BIGINT NOT NULL,
  grid_index      SMALLINT NOT NULL,               -- 0〜48 (7×7)
  point_lat       DECIMAL(10,7) NOT NULL,
  point_lng       DECIMAL(10,7) NOT NULL,
  keyword_id      BIGINT NOT NULL,
  place_id        VARCHAR(255),
  ranking         SMALLINT NOT NULL,               -- 0=ngoài phạm vi / 1-60 / 997=error
  ranking_status  VARCHAR(20),
  search_at       DATETIME,
  source          VARCHAR(20) DEFAULT 'grid_api',
  INDEX idx_grid_kw (grid_def_id, keyword_id, search_at)
);

Định nghĩa KPI (chuẩn quốc tế + tên gọi nội địa)

Ký hiệuĐịnh nghĩa quốc tếTên gọi nội địa (đề xuất)Cách tính
AGRAverage Grid RankXếp hạng trung bình (chỉ trong phạm vi)Trung bình của các pin có xếp hạng 1〜20
ATGRAverage Total Grid RankXếp hạng trung bình toàn bộTrung bình toàn bộ pin (ngoài phạm vi tính là 21)
SoLVShare of Local VoiceTỷ lệ đạt Top 3Tỷ lệ pin đạt xếp hạng 1〜3 trong toàn bộ pin (%)

Cấu trúc chi phí (ước tính hàng tháng)

Tiền đề tính toán (dựa trên đo thực tế hiện có)

MụcGiá trị
Số case batch/ngày hiện tại27.656 case (đo thực tế 13/4/2026)
Thời gian thực thi/ngày hiện tạiKhoảng 92 phút (= 1,53 giờ)
Cấu hình Fargate1 vCPU + 2 GB (places_api_def hiện có)
Khu vựcap-northeast-1 (Tokyo)
Đơn giá FargatevCPU $0,05056/h + RAM $0,00553/GB-h = $0,06162/h

Chi phí AWS tăng thêm hàng tháng

Mục1 điểm (hiện tại)3×3 (9 điểm)5×5 (25 điểm)7×7 (49 điểm)
Thời gian Fargate/ngày1,5 giờKhoảng 3,5 giờKhoảng 10,5 giờKhoảng 18,5 giờ
Chi phí Fargate/thángKhoảng $2,8Khoảng $6,5Khoảng $19Khoảng $34
RDS tăng dung lượng/tháng
(200 B/rec × 49 lần × giữ 3 tháng)
+khoảng $0,6+khoảng $1,7+khoảng $3,3
Log S3/tháng
(DEBUG 49 lần, Lifecycle chuyển IA sau 30 ngày)
+khoảng $0,3+khoảng $0,7+khoảng $1,5
Data transfer OUT
(Fargate → GCP)
Rất nhỏ+khoảng $1+khoảng $2,5+khoảng $4,5
Tổng tăng AWS/thángMốc cơ sở+khoảng $8〜10+khoảng $24〜30+khoảng $43〜50

GCP (Places API) hàng tháng

MụcƯớc tính
Đơn giá Text Search IDs Only SKU$0 (Basic SKU = miễn phí)
Số request/tháng ở 7×7Khoảng 40,65 triệu request
Phí API$0 (miễn phí kể cả khi đo đa địa điểm)
Bổ sung GCP project (3 → 5〜6)$0 (tạo project, kích hoạt API đều miễn phí)

Phía GCP hoàn toàn $0 kể cả với 7×7. Yếu tố khác biệt hóa lớn so với các công cụ quốc tế (Local Falcon $25〜, BrightLocal $39〜/tháng).

Frontend: Google Maps JavaScript API

MụcƯớc tính
Đơn giá Maps JavaScript API$7 / 1.000 lần load (đã tính $200/tháng credit miễn phí)
Số load trong hạn mức miễn phíKhoảng 28.500 lần/tháng
Dự kiến (200 khách hàng × 20 lần/tháng = 4.000 load)$0 (trong hạn mức miễn phí)
Khi sử dụng nhiều (1.000 khách hàng × 50 lần/tháng = 50.000 load)Khoảng $150/tháng (phần vượt hạn mức)

→ Khi sử dụng quy mô lớn, cần xem xét chuyển sang Embed iframe / Static Maps API / chiến lược cache.

Tóm tắt: Chi phí tăng thêm hàng tháng

LướiTăng AWSGCPFrontendTổng (tháng)
1 điểm (hiện tại)$0$0Mốc cơ sở
3×3 (9 điểm)+khoảng $10$0$0〜Khoảng ¥1.500/tháng
5×5 (25 điểm)+khoảng $30$0$0〜Khoảng ¥4.500/tháng
7×7 (49 điểm)+khoảng $50$0$0〜Khoảng ¥7.500/tháng

Điểm thuyết minh cho khách hàng

  • Trên đây là mức tăng cho toàn bộ batch của tất cả cửa hàng, không phải mỗi khách hàng 1 đơn vị
  • So với mức phí hàng tháng của các đối thủ chính (vài nghìn〜vài chục nghìn yên/cửa hàng), chi phí thực tế phía hạ tầng nhỏ đến mức gần như có thể bỏ qua
  • Có thể hiện thực hóa tính năng tương đương GMO với "phí API $0" và "hạ tầng +khoảng ¥7.500/tháng"
  • Dự kiến đảm bảo lợi nhuận gộp đủ với phí tính cho khách hàng (ví dụ: option ¥300〜500/tháng/cửa hàng)

Các điểm chưa chắc chắn & cần xác nhận trong PoC

  1. Overhead khởi động khi chia nhỏ batch Fargate (4 song song = start/stop ×4 → +5〜10 phút)
  2. Chi phí I/O của RDS (phí IOPS khi ghi gấp 49 lần. gp3 ảnh hưởng nhỏ, io1 ảnh hưởng lớn)
  3. CloudWatch Logs ingest (DEBUG gấp 49 lần phải trả thêm $0,50/GB. Cần kiểm soát log level)
  4. Liệu giới hạn tốc độ phía GCP có cho phép hoàn thành 7×7 trong ngày hay không (hiện tại 74% thời gian là đợi rate)

Mối liên hệ với dự án & implementation hiện có

  • Mở rộng, không thay thế Lấy ranking qua Places API hiện tại. Đo 1 điểm (hiện có) và đo đa địa điểm (dự án này) chạy song song
  • Khi kết hợp với dự án hiện có #1-2 Mở rộng giới hạn từ khóa, mỗi location sẽ thành 15 KW × 49 điểm = 735 case/cửa hàng/ngày — cần điều chỉnh thứ tự tùy kết quả PoC
  • Xem xét bổ sung giá trị mới (ví dụ: 3 = grid_api) cho mappy_gbp_locations.data_source

Mock màn hình

多地点順位チェック

18
--
21
20
24
18
--
24
12
18
7
20
16
18
--
16
3
3
4
20
24
14
13
2
1
3
7
20
--
14
7
2
3
18
21
18
18
14
13
16
12
--
24
18
--
14
--
24
18
1〜3 位4〜10 位11〜20 位21〜60 位圏外
※ 中心に自店舗が表示されます。斜め方向は対角線距離(約 √2 倍)になります。
集約指標
平均順位
(AGR)
12.5
総平均
(ATGR)
15.2
上位3率
(SoLV)
14%
順位一覧
#135.6580, 139.70161
#235.6580, 139.69612
#335.6625, 139.70162
#435.6535, 139.69613
#535.6535, 139.70163
#635.6580, 139.70713
#735.6625, 139.70713
#835.6535, 139.70714

Tham chiếu màn hình thực tế của GMO

Mock này được tạo sau khi xem trực tiếp ảnh chụp màn hình tại trang chính thức MEO Dashboard byGMO "Đo lường xếp hạng đa địa điểm". Cấu trúc layout (header + filter + bản đồ + danh sách bên phải + nút download) và bảng màu (5 dải: top xanh / giữa vàng / cuối cam·đỏ / ngoài phạm vi xám) kế thừa quan sát từ màn hình thực tế của GMO. Ngưỡng dải xếp hạng (ví dụ: 1〜3 / 4〜10) được thiết kế lại theo đặc tả của công ty.

Cấu trúc màn hình (theo màn hình thực tế GMO)

Khu vựcNội dungĐối chiếu với màn hình GMO
HeaderTiêu đề + nút downloadKhớp
Hàng filterTên doanh nghiệp / Từ khóa tìm kiếm / Kích thước lưới / Khoảng cáchGMO chỉ có "Tên doanh nghiệp + Từ khóa". Mở rộng của công ty: cho phép thay đổi kích thước lưới · khoảng cách trên frontend
Bản đồ (trung tâm)Pin N×N (vòng tròn có số xếp hạng) trên Google Maps, 5 dải màu, trung tâm = cửa hàngKhớp (49 pin + số xếp hạng + gradient 4〜5 màu)
Panel bên phảiKPI (AGR / ATGR / SoLV) + danh sách xếp hạngGMO chỉ có danh sách xếp hạng. Khác biệt hóa của công ty: hiển thị rõ chỉ số tổng hợp
Ghi chú bản đồ"Cửa hàng hiển thị ở trung tâm" "Khoảng cách chéo là đường chéo (×√2)"Khớp (kế thừa nguyên ghi chú trên màn hình chính thức)
DownloadCSV / PNGKhớp (GMO là EXCEL + PNG)

Ước tính công (dựa trên AI)

Cơ cấu nhân sự

Vai tròSố ngườiNội dung phụ trách
Thiết kế1 ngườiXác nhận yêu cầu → Thiết kế PoC → Chỉ thị AI tạo tài liệu thiết kế → Review → Chỉ thị sản xuất
Sản xuất1 ngườiChỉ thị AI tạo theo ISSUE → Code review → Kiểm thử → Deploy

Chi tiết công

Giai đoạn 1: Kiểm chứng kỹ thuật PoC (tổng 5,0 người-ngày)

#Hạng mục công việcRetry AIReviewCông (người-ngày)Phụ trách
1Xác nhận yêu cầu, tài liệu thiết kế PoC2 lần0,5 ngày/lần1,0Thiết kế
2Triển khai script kiểm chứng locationBias (5×5 = 25 điểm)2 lần0,5 ngày/lần1,0Sản xuất
3Đo thực tế 3〜5 cửa hàng × 5〜10 từ khóa, thu thập dữ liệu1 lần0,5 ngày/lần1,0Sản xuất
4Phân tích kết quả (chênh lệch xếp hạng giữa các điểm, 1 điểm vs đa điểm, đối chiếu với UULE)2 lần0,5 ngày/lần1,0Thiết kế
5Soạn báo cáo PoC, chia sẻ với khách hàng1 lần0,5 ngày/lần1,0Thiết kế

Giai đoạn 2: Chốt đặc tả & thiết kế (tổng 3,0 người-ngày)

#Hạng mục công việcRetry AIReviewCông (người-ngày)Phụ trách
6Chốt đặc tả lưới, tên KPI, wireframe UI2 lần0,5 ngày/lần1,0Thiết kế
7Thiết kế DB schema (grid_definitions / grid_search_rankings)2 lần0,5 ngày/lần1,0Thiết kế
8Thiết kế chia nhỏ batch (cấu hình 7×7 / multi GCP project)2 lần0,5 ngày/lần1,0Thiết kế

Giai đoạn 3: Implementation chính & triển khai thương mại hạn chế (tổng 12,0 người-ngày)

#Hạng mục công việcRetry AIReviewCông (người-ngày)Phụ trách
9DB migration (2 bảng mới + mở rộng cột source)1 lần0,5 ngày/lần0,5Sản xuất
10Logic sinh tọa độ điểm đo + implement chia batch3 lần0,5 ngày/lần2,0Sản xuất
11Mở rộng GCP project lên 5〜6 cái, cấp key, cấu hình env1 lần0,5 ngày/lần1,0Sản xuất
12Lambda / EventBridge phân tách (trigger theo vùng)2 lần0,5 ngày/lần1,0Sản xuất
13Màn hình bản đồ nhiệt (liên kết Google Maps, vẽ pin)3 lần0,5 ngày/lần3,0Sản xuất
14API tổng hợp KPI + hiển thị trên màn hình2 lần0,5 ngày/lần1,5Sản xuất
15Xuất CSV / PNG1 lần0,5 ngày/lần1,0Sản xuất
16Kiểm thử tích hợp (cửa hàng PoC → triển khai hạn chế)2 lần0,5 ngày/lần1,5Sản xuất
17Deploy, xác nhận hoạt động, tài liệu vận hành1 lần0,5 ngày/lần0,5Sản xuất

Tổng cộng: 20,0 người-ngày (PoC 5,0 + Thiết kế 3,0 + Implementation 12,0)

Điều kiện tiên quyết & ràng buộc

  • Phí API giữ ở Basic SKU ($0). Khi bổ sung places.displayName v.v. vào Field Mask, cần xét lại phí riêng
  • Để vận hành 7×7 thực tế, bắt buộc có 5〜6 GCP project + chia batch
  • Nếu PoC cho thấy locationBias không đủ phụ thuộc vào vị trí, cần xem xét chuyển sang phương thức lấy SERP qua UULE (thêm 5〜8 người-ngày)
  • Khi chạy song song với dự án #1-2 Mở rộng giới hạn từ khóa, khối lượng nhân lên (15 KW × 49 điểm), cần điều chỉnh thứ tự release
  • GIF Time-lapse (tính năng mở rộng) nằm ngoài phạm vi dự án này, sẽ xử lý ở dự án tiếp theo

Vấn đề cần xác nhận với khách hàng

  1. Mức ưu tiên mục tiêu chính: ①Nâng cao năng lực đề xuất qua trực quan hóa khu vực kinh doanh ②Tiếp cận khách hàng kiểu service area ③Giá trị bổ sung cho khách hàng hiện có
  2. Đặc tả lưới: Tương đương GMO 7×7 với khoảng cách biến đổi / Bắt đầu cố định 5×5 / Chuyển đổi theo giai đoạn — chọn phương án nào
  3. Đối tượng khách hàng: Tính năng cho toàn bộ khách hàng / Option theo plan (phí cộng thêm)
  4. Thời điểm release: Có ràng buộc nào về mùa cao điểm / quyết toán không
  5. Cửa hàng PoC: Khách hàng có thể chọn 3〜5 cửa hàng × 5〜10 từ khóa không

Lịch trình

タスク担当日数5/255/265/275/285/295/305/316/16/26/36/46/56/66/76/86/96/106/116/126/136/146/156/166/176/186/196/206/216/226/23
Thiết kế PoCGĐ1 PoC1d
Implement PoC (25 điểm)GĐ1 PoC1d
Đo thực tế PoCGĐ1 PoC1d
Phân tích kết quảGĐ1 PoC1d
Báo cáo PoCGĐ1 PoC1d
Chốt đặc tả · KPI · UIGĐ2 Thiết kế1d
Thiết kế DB schemaGĐ2 Thiết kế1d
Thiết kế chia batchGĐ2 Thiết kế1d
DB migrationGĐ3 Implementation1d
Sinh điểm đo, chia batchGĐ3 Implementation2d
Mở rộng GCP projectGĐ3 Implementation1d
Lambda/EventBridgeGĐ3 Implementation1d
Màn hình bản đồ nhiệtGĐ3 Implementation3d
API · màn hình KPIGĐ3 Implementation2d
Xuất CSV/PNGGĐ3 Implementation1d
Kiểm thử tích hợpGĐ3 Implementation2d
Deploy, xác nhậnGĐ3 Implementation1d