Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh nền kinh tế Việt Nam phát triển và thu nhập bình quân của người dân được cải thiện, nhu cầu tiêu dùng và đòi hỏi về tính tiện lợi trong mua sắm ngày càng gia tăng. Sự mở rộng của các hoạt động thương mại dẫn tới sự xuất hiện của hàng loạt địa điểm kinh doanh, cửa hàng buôn bán. Tuy nhiên, điều này đồng thời tạo ra tình trạng quá tải thông tin, khiến người tiêu dùng gặp trở ngại khi cần xác định chính xác địa điểm cung cấp một mặt hàng cụ thể. Khó khăn này thể hiện rõ rệt nhất khi một người chuyển đến sống tại một khu vực mới hoặc đi du lịch đến một thành phố xa lạ. Xuất phát từ nhu cầu thực tiễn đó, tác giả Trần Minh đã thực hiện đề tài khóa luận tốt nghiệp kỹ sư ngành Công nghệ Thông tin (chuyên ngành Công nghệ Phần mềm) với mục tiêu phát triển ứng dụng di động tìm kiếm hàng hóa và cửa hàng mang tên "Semi" trên nền tảng Android.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định theo hai nhóm công việc cụ thể:
- Nhiệm vụ lý thuyết:
- Nghiên cứu nền tảng Google Firebase (Cloud Firestore, Realtime Database, Cloud Storage, Authentication).
- Nghiên cứu Google Maps API và Google Maps SDK dành cho hệ điều hành Android.
- Tìm hiểu Google Places API nhằm chia sẻ và mở rộng cơ sở dữ liệu địa điểm từ Google.
- Tìm hiểu Room Persistence Library và giải pháp lưu trữ cơ sở dữ liệu cục bộ trên thiết bị.
- Nhiệm vụ thực hành:
- Xây dựng ứng dụng di động "Semi" trên hệ điều hành Android với các chức năng: tìm kiếm cửa hàng/hàng hóa quanh vị trí hiện tại; lọc theo từ khóa, khoảng cách, địa chỉ và phân loại; tìm kiếm cửa hàng trong một vùng bao quanh tùy chỉnh trên bản đồ; lưu trữ cửa hàng (đánh dấu bookmark); tích hợp đăng nhập qua bên thứ ba (Google, Facebook); cho phép người dùng thêm địa điểm mới.
- Xây dựng phần mềm quản lý dành cho quản trị viên (Admin) trên hệ điều hành Windows với các chức năng: đọc và lưu trữ dữ liệu hệ thống; tương tác dữ liệu thông qua tệp tin Excel để phục vụ sao lưu (backup) và hiệu chỉnh; tải lên thông tin cửa hàng, hàng hóa, hình ảnh; kiểm duyệt dữ liệu cửa hàng do người dùng đóng góp.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và phát triển ứng dụng di động trên nền tảng Android bằng ngôn ngữ lập trình Java, kết hợp với các dịch vụ đám mây của Firebase và dịch vụ bản đồ Google Maps API.
- Phạm vi nghiên cứu: Về mặt không gian, ứng dụng được nghiên cứu thử nghiệm và thu thập dữ liệu tại các địa bàn trọng điểm thuộc Thành phố Hồ Chí Minh. Về mặt thời gian, khóa luận được thực hiện từ tháng 3/2019 đến tháng 6/2019 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
Cơ sở lý thuyết và phương pháp
Đề tài sử dụng hai nền tảng công nghệ chính từ Google là Google Maps SDK cho Android và nền tảng điện toán đám mây Firebase.
Đối với Google Maps SDK trên Android, nghiên cứu tập trung vào các thành phần cốt lõi:
- Các kiểu bản đồ hiển thị: Normal (hiển thị đường đi và địa vật nhân tạo/tự nhiên), Hybrid (ảnh vệ tinh kết hợp nhãn đường phố), Satellite (ảnh vệ tinh thuần túy), Terrain (hiển thị địa hình kèm độ cao và màu sắc), và None (chỉ hiển thị lưới tọa độ).
- Thành phần điều khiển và hiển thị: Quản lý khoảng đệm bản đồ (Map Padding) nhằm đảm bảo hiển thị đúng logo, bản quyền Google và căn chỉnh tâm camera; sử dụng lớp
UiSettings để bật/tắt các công cụ thu phóng, la bàn và thanh công cụ chỉ đường (Map Toolbar).
- Quản lý đối tượng không gian: Đối tượng Marker dùng để đánh dấu tọa độ kèm các thuộc tính (Title, Snippet, Position, Icon, Anchor, Alpha, Visible, Draggable, Rotation, Flat, ZIndex); các đối tượng hình học Polygons, Polylines, và cửa sổ thông tin InfoWindow.
- Mô hình Camera và View: Điều chỉnh vùng quan sát qua các thông số Target (tọa độ trung tâm), Tilt (góc nghiêng từ 0 đến 45 độ so với phương thẳng đứng), Bearing (góc quay camera theo chiều kim đồng hồ so với hướng Bắc) và mức Zoom từ 1 đến 20 (tương ứng phạm vi từ toàn thế giới, châu lục, thành phố, đường phố đến từng tòa nhà).
- Điểm quan tâm: Khai thác Points of Interest (POIs) và Businesses POIs để hiển thị vị trí các dịch vụ, quán ăn, khách sạn và cửa hàng.
Đối với nền tảng Firebase, tác giả khảo sát hệ thống dịch vụ bao gồm hai nhóm công cụ:
- Nhóm phát triển và kiểm thử (Develop & test your app): Realtime Database, Cloud Firestore, Authentication, Cloud Functions, Cloud Storage, Hosting, Test Lab for Android, Performance Monitoring và Crashlytics.
- Nhóm tăng trưởng và tương tác người dùng (Grow & engage your audience): Google Analytics, Firebase Cloud Messaging (FCM), Predictions, Dynamic Links, Remote Config, Invites, App Indexing, AdMob và AdWords.
Trong đó, cơ sở dữ liệu chính được sử dụng là Cloud Firestore – hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) định hướng tài liệu (document-oriented). Dữ liệu được tổ chức theo cấu trúc phân cấp gồm Collections, Documents, Subcollections và các liên kết tham chiếu (References). Hệ thống cho phép truy vấn dữ liệu được đánh chỉ mục tự động, đồng bộ hóa thời gian thực (real-time listeners) và hỗ trợ lưu cache phục vụ truy vấn ngoại tuyến (offline support).
Phương pháp nghiên cứu thực tế bao gồm:
- Phương pháp khảo sát, phân tích so sánh hiện trạng: Khảo sát đối chuẩn hai ứng dụng di động thực tế gồm Foody (ứng dụng tìm kiếm địa điểm ăn uống cộng đồng tại Việt Nam) và Maps.me (ứng dụng bản đồ ngoại tuyến sử dụng dữ liệu OpenStreetMap) nhằm rút ra các ưu, nhược điểm và xác định yêu cầu hệ thống.
- Phương pháp phân tích và mô hình hóa hệ thống: Sử dụng biểu đồ Use Case, bảng đặc tả use case, và lược đồ tuần tự (Sequence Diagram) để thiết kế các luồng xử lý nghiệp vụ.
- Nguồn dữ liệu: Dữ liệu cửa hàng và sản phẩm được lưu trữ trên Cloud Firestore; dữ liệu địa giới hành chính (tỉnh/thành, quận/huyện, phường/xã) được quản lý cục bộ bằng SQLite; dữ liệu vị trí địa lý dựa trên Google Map API và thuật toán băm tọa độ GeoHash.
Thiết kế và triển khai
Hệ thống được thiết kế dành riêng cho nền tảng Android, lập trình bằng ngôn ngữ Java và tích hợp hệ thống lưu trữ đa tầng.
1. Kiến trúc lưu trữ dữ liệu
Hệ thống kết hợp giữa cơ sở dữ liệu đám mây Cloud Firestore và cơ sở dữ liệu quan hệ cục bộ SQLite:
- SQLite: Lưu trữ danh mục địa giới hành chính (Address) trên thiết bị, giúp người dùng tra cứu nhanh cấu trúc địa chỉ gồm Thành phố, Quận/Huyện, Phường/Xã mà không phát sinh độ trễ mạng.
- Cloud Firestore: Lưu trữ trực tuyến các thực thể nghiệp vụ thông qua ba collection chính được mô hình hóa chi tiết:
| Tên Collection |
Số lượng trường |
Danh sách các trường dữ liệu chính |
Kiểu dữ liệu tương ứng |
| Store |
16 trường |
title, nameFull, address, contact, description, imageUrl, keywords, startEnd, category, utilities, numComments, numPoints, numProduct, rating, location, gridNumber |
string, map, array, number, geopoint |
| VerifyStore |
11 trường |
title, address, contact, location, description, imageUrl, category, user_id, store_id, startEnd, timeStamp |
string, map, array, number, geopoint |
| Product |
10 trường |
storeId, title, address, cost, description, type, imageURL, keywords, location, gridNumber |
string, array, number |
2. Các module xử lý trong ứng dụng
Ứng dụng Android được phân chia thành các khối chức năng độc lập:
- Module lấy dữ liệu cửa hàng: Truy vấn danh sách cửa hàng từ Firestore dựa theo bộ lọc phân loại hoặc khoảng cách địa lý.
- Module lấy dữ liệu hàng hóa: Truy xuất các mặt hàng kèm theo đơn giá, hình ảnh và định danh cửa hàng tương ứng (
storeId).
- Module lấy dữ liệu trong giao diện bản đồ: Tích hợp Google Maps SDK để thể hiện vị trí các Marker cửa hàng trong phạm vi camera quan sát; áp dụng thuật toán GeoHash để chia lưới và tìm kiếm các cửa hàng nằm trong ô vuông có bán kính từ tâm dao động từ 65m đến 2000m.
- Module thêm cửa hàng: Cho phép người dùng nhập thông tin địa chỉ, số điện thoại, mô tả, giờ hoạt động, chọn vị trí trực tiếp trên bản đồ và tải hình ảnh lên Firebase Storage, sau đó lưu bản ghi vào collection
VerifyStore.
3. Thiết kế giao diện và xử lý tương tác
Hệ thống xây dựng 12 màn hình giao diện chính với sơ đồ chuyển đổi tuần tự:
- Màn hình hiển thị cửa hàng/hàng hóa: Sử dụng
RecyclerView kết hợp thanh điều hướng Navigation bar, các nút Button và TextView để chọn nhanh danh mục hoặc thiết lập bộ lọc.
- Màn hình cửa hàng quanh đây: Tích hợp
GoogleMap hiển thị vị trí thiết bị và các nút điều khiển bán kính tìm kiếm hình vuông.
- Màn hình đánh dấu (Bookmark): Hiển thị danh sách các cửa hàng đã được lưu vào bộ nhớ.
- Các màn hình bổ trợ: Màn hình thông tin người dùng, màn hình chọn phân loại, màn hình tùy chọn khoảng cách/địa chỉ, màn hình tìm kiếm theo từ khóa, màn hình chi tiết cửa hàng/hàng hóa, màn hình vị trí bản đồ, màn hình thêm cửa hàng (chọn tọa độ và hình ảnh) và màn hình đăng nhập.
- Luồng tương tác nghiệp vụ được mô hình hóa qua 7 lược đồ tuần tự: tìm kiếm cửa hàng, tìm kiếm hàng hóa, đăng nhập, đăng xuất, chỉ đường đến cửa hàng qua Google Maps, lưu cửa hàng và đánh giá cửa hàng.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Chương 1 trình bày chi tiết nền tảng công nghệ phục vụ xây dựng đồ án. Phần đầu giới thiệu Google Maps SDK trên Android, bao gồm quy trình kết nối dịch vụ, các chế độ hiển thị bản đồ, cấu hình Map Padding, các nút công cụ mặc định, cấu trúc hiển thị Businesses POIs, cách thiết lập Marker và điều khiển thông số Camera (Target, Tilt, Bearing, Zoom từ 1 đến 20). Phần thứ hai phân tích hệ sinh thái Firebase của Google với 18 dịch vụ thành phần, tập trung sâu vào cơ chế hoạt động của Cloud Firestore: mô hình cơ sở dữ liệu NoSQL hướng tài liệu, khả năng đồng bộ thời gian thực, lưu trữ ngoại tuyến và cấu trúc lồng ghép subcollection.
Chương 2: Khảo sát hiện trạng và xác định yêu cầu
Chương này đánh giá thực trạng nhu cầu thị trường và tiến hành phân tích hai ứng dụng tiêu biểu:
- Foody: Có ưu điểm là dữ liệu phong phú, phân loại chi tiết, cộng đồng lớn; nhược điểm là mang tính thương mại hóa cao, làm giảm độ khách quan trong đánh giá và không thuần túy phục vụ tìm kiếm hàng hóa/cửa hàng.
- Maps.me: Có ưu điểm xử lý bản đồ nhanh, hỗ trợ bản đồ ngoại tuyến tốt; nhược điểm là dữ liệu phân loại cửa hàng chưa đa dạng và giao diện bản đồ phức tạp đối với người dùng thông thường.
Dựa trên khảo sát, tác giả xây dựng bảng yêu cầu hệ thống và các tiêu chuẩn chất lượng kỹ thuật:
| Nhóm yêu cầu |
Nội dung quy định |
Tiêu chuẩn kỹ thuật cụ thể |
| Chức năng nghiệp vụ |
Tra cứu hàng hóa, cửa hàng |
Lọc theo phân loại, từ khóa, địa chỉ, hoặc bán kính xung quanh (< 10km) |
| Chức năng vị trí |
Định vị và dẫn đường |
Hiển thị bản đồ ô vuông từ tâm 65m – 2000m; chuyển tiếp chỉ đường sang Google Maps |
| Lưu trữ & tài khoản |
Quản lý dữ liệu người dùng |
Lưu bookmark; đăng nhập bên thứ 3 (Facebook, Google); thêm cửa hàng mới |
| Yêu cầu hệ thống |
Sao lưu và phân tán dữ liệu |
Dữ liệu lưu trữ tập trung trên Cloud server, không lưu cục bộ trên máy người dùng |
| Chất lượng (Phi chức năng) |
Tốc độ tìm kiếm |
Thời gian trả kết quả tìm kiếm tối đa không quá 2 giây |
| Chất lượng (Phi chức năng) |
Độ trễ xử lý giao diện |
Độ trễ phản hồi của ứng dụng không quá 1 giây |
| Chất lượng (Phi chức năng) |
Tính tiện dụng thao tác |
Số bước thao tác để hoàn tất một tính năng không quá 5 thao tác |
Chương 3: Phân tích và mô hình hoá yêu cầu
Chương 3 xác định hai tác nhân chính của hệ thống: Người dùng (User) và Quản trị viên (Admin). Sơ đồ Use Case tổng quát liên kết các chức năng tra cứu, đánh dấu, đăng nhập, thêm cửa hàng của User và chức năng kiểm duyệt, cập nhật dữ liệu của Admin. Tác giả thực hiện đặc tả chi tiết 10 ca sử dụng (Use case) gồm: tìm kiếm cửa hàng theo các lựa chọn, tìm kiếm cửa hàng theo từ khóa, tìm kiếm cửa hàng theo vùng trên bản đồ, tìm kiếm hàng hóa theo lựa chọn, tìm kiếm hàng hóa theo từ khóa, đăng nhập, đăng xuất, chỉ đường đến cửa hàng, lưu cửa hàng và thêm cửa hàng. Mỗi ca sử dụng đều được xác định rõ điều kiện tiên quyết (như kết nối mạng, bật định vị GPS) và trình tự các bước thực hiện.
Chương 4: Thiết kế ứng dụng
Chương 4 tập trung vào giải pháp kỹ thuật cụ thể:
- Thiết kế cơ sở dữ liệu: Xây dựng lược đồ dữ liệu Firestore với các collection
Store (16 thuộc tính), VerifyStore (11 thuộc tính), Product (10 thuộc tính), kết hợp bảng dữ liệu SQLite lưu trữ cây địa chỉ hành chính.
- Thiết kế giao diện: Xây dựng sơ đồ luồng chuyển đổi giữa 12 màn hình, mô tả chi tiết chức năng của từng thành phần giao diện (Button, TextView, RecyclerView, GoogleMap, Marker, Navigation bar) và sơ đồ biến cố tương ứng.
- Thiết kế xử lý: Xây dựng 7 lược đồ tuần tự mô tả chi tiết tương tác giữa User, giao diện ứng dụng, hệ thống xử lý nội bộ và máy chủ cơ sở dữ liệu Firebase.
Chương 5: Cài đặt
Chương này trình bày môi trường hiện thực ứng dụng trên hệ điều hành Android. Cấu trúc ứng dụng được chia thành các gói thư viện và bốn module chính: module lấy dữ liệu cửa hàng, module lấy dữ liệu hàng hóa, module xử lý giao diện bản đồ và module tiếp nhận cửa hàng mới. Trong phần thuật toán, tác giả trình bày việc ứng dụng thuật toán GeoHash để chuyển đổi tọa độ kinh độ và vĩ độ thành chuỗi ký tự, hỗ trợ việc lập chỉ mục không gian và tối ưu hóa tốc độ truy vấn phạm vi trên cơ sở dữ liệu.
Chương 6: Kiểm thử và so sánh
Chương 6 xây dựng kế hoạch kiểm thử các chức năng nghiệp vụ của ứng dụng Semi trên thiết bị di động. Đồng thời, tác giả lập bảng so sánh đối chuẩn sản phẩm đã cài đặt với ứng dụng Foody và Maps.me về các khía cạnh: tính năng tra cứu thuần túy về hàng hóa, khả năng tương tác bản đồ ngoại tuyến/trực tuyến, tính thuận tiện trong giao diện và tính minh bạch của thông tin địa điểm.
Kết quả và đóng góp
Khóa luận đã hoàn thành các mục tiêu đề ra với những kết quả thực tế:
- Xây dựng hoàn chỉnh ứng dụng di động "Semi" chạy trên nền tảng Android, kết nối trực tiếp với dịch vụ cơ sở dữ liệu đám mây Cloud Firestore và bộ nhớ Cloud Storage.
- Thực hiện đầy đủ các chức năng tra cứu: tìm kiếm cửa hàng và hàng hóa theo tên, từ khóa, phân loại hàng, khoảng cách bán kính (< 10km), địa chỉ hành chính cụ thể, hoặc quét theo vùng hiển thị hình vuông trên bản đồ với bán kính từ 65m đến 2000m.
- Tích hợp thành công chức năng định vị GPS, điều hướng và chỉ đường sang ứng dụng Google Maps có sẵn trên thiết bị.
- Cài đặt hệ thống xác thực người dùng thông qua Google Login và Facebook Login; chức năng lưu trữ danh sách cửa hàng yêu thích (Bookmark) trên thiết bị.
- Cung cấp tính năng thêm cửa hàng từ phía người dùng kèm cơ chế lưu trữ đệm tại collection
VerifyStore.
- Thiết kế ứng dụng quản trị trên Windows hỗ trợ nhập xuất dữ liệu qua tệp Excel, tải lên thông tin cửa hàng, hàng hóa, hình ảnh và kiểm duyệt địa điểm do người dùng đóng góp.
Đóng góp của đề tài thể hiện ở việc xây dựng một giải pháp chuyên biệt cho việc tra cứu hàng hóa gắn liền với cửa hàng thực tế, khắc phục tình trạng thiếu thông tin về mặt hàng tại các địa điểm kinh doanh nhỏ lẻ. Đề tài đã kết hợp mô hình dữ liệu NoSQL đám mây với cơ sở dữ liệu SQLite cục bộ để giảm tải truy vấn mạng, đồng thời áp dụng thuật toán GeoHash nhằm nâng cao tốc độ định vị không gian.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài:
- Phạm vi dữ liệu thử nghiệm ban đầu mới chỉ giới hạn tại một số khu vực trọng điểm của Thành phố Hồ Chí Minh, chưa phủ rộng toàn bộ các tỉnh thành.
- Dữ liệu địa điểm và hàng hóa ban đầu chưa thật sự phong phú và phụ thuộc nhiều vào quy trình kiểm duyệt thủ công của quản trị viên qua bảng
VerifyStore.
- Ứng dụng quản trị viên trên Windows mới đáp ứng các thao tác xử lý cơ bản qua tệp tin Excel, chưa tự động hóa hoàn toàn việc xác minh tính chính xác của địa điểm thực tế.
Hướng phát triển tiếp theo được tác giả xác định:
- Mở rộng phạm vi thu thập dữ liệu cửa hàng và hàng hóa ra các quận, huyện khác tại Thành phố Hồ Chí Minh và các tỉnh thành lân cận.
- Ứng dụng sâu hơn Google Places API để tự động đồng bộ và khai thác kho dữ liệu địa điểm sẵn có của Google, mở rộng nhanh quy mô cơ sở dữ liệu.
- Hoàn thiện và tối ưu hóa việc lưu trữ cơ sở dữ liệu cục bộ bằng Room Persistence Library theo kế hoạch kỹ thuật.
- Nâng cấp ứng dụng quản trị, xây dựng thêm các thuật toán gợi ý tìm kiếm thông minh và cải tiến giao diện người dùng trên Android.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo phù hợp cho sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm đang thực hiện các đồ án tốt nghiệp hoặc đề tài nghiên cứu về ứng dụng di động dựa trên vị trí (Location-Based Services - LBS).
Tài liệu cung cấp hướng dẫn chi tiết về phương pháp tích hợp Google Maps SDK vào Android (quản lý Marker, Camera, Map Padding, UI controls) và kỹ thuật thiết kế cơ sở dữ liệu NoSQL trên Cloud Firestore. Đặc biệt, phần phân tích thiết kế hệ thống với hệ thống bảng đặc tả 10 use case, cấu trúc 3 collection Firestore (Store, VerifyStore, Product) và các lược đồ tuần tự là mẫu tham khảo hữu ích cho việc xây dựng tài liệu kỹ thuật phần mềm chuẩn quy trình.
Câu hỏi thường gặp
1. Ứng dụng Semi cung cấp những cơ chế tìm kiếm cửa hàng và hàng hóa nào?
Ứng dụng cho phép tìm kiếm theo bốn cơ chế chính: tìm kiếm theo từ khóa văn bản; tìm kiếm theo danh mục phân loại cửa hàng hoặc mặt hàng; tìm kiếm theo phạm vi khu vực (theo bán kính cụ thể dưới 10km hoặc theo địa chỉ hành chính có tối thiểu cấp quận/huyện); và tìm kiếm trực tiếp trên bản đồ Google Maps trong phạm vi một ô vuông có bán kính từ tâm dao động từ 65m đến 2000m.
2. Cơ sở dữ liệu của ứng dụng được tổ chức như thế nào?
Hệ thống sử dụng mô hình lưu trữ kép: cơ sở dữ liệu đám mây NoSQL Cloud Firestore dùng để lưu trữ dữ liệu nghiệp vụ phân tán gồm ba collection (Store chứa 16 trường thông tin, VerifyStore chứa 11 trường thông tin kiểm duyệt, và Product chứa 10 trường thông tin sản phẩm); kết hợp với cơ sở dữ liệu quan hệ SQLite đặt cục bộ trên máy người dùng để lưu trữ danh mục địa chỉ hành chính, giúp tăng tốc độ chọn địa điểm và giảm thiểu truy vấn mạng.
3. Các chỉ tiêu kỹ thuật phi chức năng về hiệu năng của ứng dụng Semi được quy định ra sao?
Hệ thống quy định ba chỉ số chất lượng chính: thời gian tìm kiếm và trả kết quả hiển thị tối đa là 2 giây; độ trễ phản ứng và xử lý giao diện của ứng dụng không quá 1 giây; và số bước thao tác người dùng cần thực hiện để hoàn thành một tính năng không vượt quá 5 thao tác.
4. Quy trình đóng góp cửa hàng mới từ phía người dùng diễn ra như thế nào?
Người dùng bắt buộc phải đăng nhập vào hệ thống (thông qua tài khoản Facebook hoặc Google). Sau đó, tại màn hình cá nhân, người dùng chọn chức năng thêm cửa hàng, nhập các thông tin (tên, địa chỉ, số điện thoại, mô tả, giờ hoạt động, chọn vị trí trên bản đồ, ảnh đại diện). Dữ liệu này được đẩy vào collection VerifyStore trên Cloud Firestore. Quản trị viên sử dụng phần mềm trên Windows để kiểm tra, duyệt thông tin trước khi chuyển chính thức sang collection Store.
5. Điểm khác biệt chính giữa ứng dụng Semi với Foody và Maps.me là gì?
So với Foody (vốn tập trung vào địa điểm ăn uống mang tính cộng đồng thương mại hóa), Semi tập trung giải quyết bài toán tra cứu hàng hóa gắn liền với cửa hàng thực tế và thông tin tiện ích phi thương mại. So với Maps.me (ứng dụng bản đồ ngoại tuyến phức tạp), Semi đơn giản hóa giao diện tương tác, tập trung vào bản đồ hiển thị bán kính trực quan (65m – 2000m) và hỗ trợ phân loại hàng hóa rõ ràng hơn.
Kết luận
Khóa luận tốt nghiệp "Xây dựng ứng dụng tìm kiếm hàng hoá / cửa hàng" của sinh viên Trần Minh đã giải quyết trọn vẹn bài toán hỗ trợ người tiêu dùng định vị địa điểm mua sắm thông qua ứng dụng di động "Semi". Đề tài kết hợp thành công công nghệ Google Maps SDK, giải thuật GeoHash và nền tảng điện toán đám mây Firebase NoSQL Cloud Firestore, mang lại giải pháp tìm kiếm linh hoạt theo vị trí, khoảng cách và danh mục sản phẩm. Nghiên cứu đạt kết quả tốt về mặt kỹ thuật phần mềm, có tính ứng dụng thực tiễn cao và sở hữu tiềm năng mở rộng dữ liệu trong tương lai.