TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP GIẢI PHÁP HOÀN TẤT ĐƠN HÀNG FULFILLMENT Công ty thực tập Vietful JSC Người phụ trách Nguyễn Hữu Đức Thực tập sinh Dương Minh[.]
Trang 2Hiện nay, kênh bán hàng phát triển rất đa dạng, tạo điều kiện để nhiều doanh nghiệp tiếp cận nhiều hơn tới khách hàng
Tuy nhiên, việc phân phối sản phẩm của mình trên nhiều kênh khác nhau nhưng lại không có kinh nghiệm quản lý đa kênh gây ra nhiều khó khăn cho doanh nghiệp trong quản lý
kho hàng Xuất phát từ nhu cầu của các đơn vị bán lẻ, VietFul cho ra đời dịch vụ hoàn tất đơn hàng Fulfillment
Năm 2022 là một năm bùng nổ của ngành thương mại điện tử sau 2 năm chịu ảnh hưởng
vô cùng nghiêm trọng của đại dịch Covid, người tiêu dùng đã chuyển mình từ mua sắm trực tiếp sang mua sắm trực tuyến Đồng thời cũng đem lại nhiều cơ hội cũng như nhiều thách thức cho các nhà bán hàng thương mại điện tử có thể nâng cao hình ảnh thương hiệu và tăng doanh thu
Từ đó “Giải pháp hoàn tất đơn hàng của Vietful” được quan tâm nhiều hơn và được nhiều
khách hàng lựa chọn để vận hành bán hàng thương mại điện tử đạt được hiệu quả cao nhất
Sau ba năm học tập trên trường, với mong muốn có thêm kinh nghiệm làm việc thực tế, cũng như muốn được tìm hiểu, bổ sung kiến thức và làm việc trong một môi trường chuyên nghiệp, em lên kế hoạch cho một khóa thực tập trong học kì Sau khi được một người anh giới thiệu về công ty anh đang làm và giải pháp mà product anh đang xây đựng thật sự rất ấn tượng
nên em quyết định chọn Công ty Vietful JSC - một môi trường lý tưởng, hiện đại, chuyên
nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 3LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty Vietful JSC đã tạo điều kiện cho em có cơ hội được
thực tập tại công ty
Qua 2 tháng thực tập và đến hiện tại đã trở thành nhân viên chính thức của công ty trong vai trò là một Frontend Developer Với sự hướng dẫn nhiệt tình của anh mentor Nguyễn Hữu Đức, sinh viên thực tập như em đã có thể tiếp thu được những kiến thức quan trọng và cần thiết cho quá trình phát triển ứng dụng web cũng như các kiến thức nền tảng để làm việc ở công ty và định hướng cho bản thân một cách chuyên nghiệp
Cùng với những kinh nghiệm quý báu về chuyên môn trong phát triển ứng dụng web là những kiến thức để làm việc nhóm – kỹ năng mềm cực kỳ quan trọng trong ngành công nghệ thông tin cũng như các kiến thức về Logistic Anh Phan Thanh Bình và anh Đặng Nguyễn Quốc Hào đã dạy em những kỹ thuật cần thiết trong giao tiếp và truyền đạt cho em những kinh nghiệm của các anh trong quá trình làm việc và tinh thần trách nhiệm với công việc và với đồng đội Các anh đã tạo cho em nhiều cơ hội để ứng dụng những kiến thức đó ngay vào thực tế để xây dựng dự án thực tiễn, nâng cao trình độ, cũng như tốc độ lập trình và trí thức thêm một bậc
Em rất biết ơn và em muốn gửi lời cảm ơn sâu sắc đến các anh chị trong công ty đã dành thời gian, công sức của mình để hướng dẫn, chỉ dạy và giúp em có thể hoàn thành được quá trình thực tập theo dự định của mình
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Dương Minh Sang
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
Chương 1: Giới thiệu công ty thực tập 6
1 Giới thiệu công ty Vietful 6
2 Sản phẩm của công ty 6
Hệ thống Quản lý Kho hàng thông minh WMS 6
Hệ thống Quản lý Bán hàng đa kênh Multi-Channel 8
3 Một số hình ảnh công ty 9
Chương 2: Nội dung thực tập 12
1 Tìm hiểu công ty, cách vận hành và các kỹ năng cơ bản cần thiết 12
2 Nghiên cứu Framework Angular và các công cụ làm việc 13
2.1 Framework Angular 13
2.2 Các công cụ làm việc 18
3 Trainning về Mô hình Agile-Scrum 21
4 Thực hiện dự án 25
Chương 3: Tổng kết 25
1 Thành quả thu được 25
2 Cải thiện trong thời gian tới 25
3 Cảm nhận của bản thân về công ty 26
Chương 4: Tài liệu tham khảo 26
Trang 6Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty Vietful
Tên đơn vị: Công ty Cổ phần Vietful (Vietful JSC)
Thời gian làm việc: Thứ 2 đến thứ 6: 08h30 – 18h00
Sứ mệnh: VietFul không chỉ cung cấp dịch vụ phần mềm kho thông minh (SaaS) mà
còn cùng đồng hành với khách hàng (chủ kho) trong vai trò tư vấn công nghệ, để mang lại dịch vụ kho Fulfillment tốt nhất đến cho các chủ hàng hóa (Seller)
2 Sản phẩm của công ty
Hệ thống Quản lý Kho hàng thông minh WMS
Trang 7WARENA được phát triển dựa trên nền tảng công nghệ vận hành kho Fulfillment By
Amazon (FBA) nhằm tối ưu hóa và quản lý đơn hàng từ khâu lấy hàng nhà cung cấp, kiểm tra hàng, lưu kho, xuất kho và vận chuyển đến tay khách hàng Sự ra đời của
VietFul giúp giải quyết mọi vấn đề của các doanh nghiệp đang vận hành kho theo
cấp
Hỗ trợ xử lý đơn hàng, tổng hợp các đơn bán hàng trên file excel
tổng
Quản lý tất cả đơn nhập hàng từ các đơn vị cung
cấp
Trang 8Hệ thống Quản lý Bán hàng đa kênh Multi-Channel
MOMENA LÀ giải pháp đồng bộ bán hàng tại 1 nơi từ nhiều kênh như Website,
Facebook, Instagram, sàn TMĐT, đến cửa hàng mang tới cho bạn một hệ thống quy trình hoàn hảo để vận hành và quản lý bán hàng hiệu quả
Quản lý đơn hàng: Công nghệ quản lý kho được tích hợp sẵn với đơn vị vận chuyển,
được xây dựng dịch vụ tự giao hàng TMS/Last-mile
Quản lý khách hàng: Hồ sơ của mọi khách hàng và nhà cung cấp sẽ được lưu trữ đầy đủ
và chi tiết trên hệ thống
Quản lý vận chuyển: Hỗ trợ xử lý đơn hàng, tổng hợp các đơn bán hàng trên file excel
tổng
Quản lý nhập xuất: Quản lý tất cả đơn nhập hàng từ các đơn vị cung cấp
Trang 93 Một số hình ảnh công ty
Chuyến đi đầu tiên của VietFul trong năm 2022
Một buổi họp với đối tác
Trang 10Viettel Post khai trương thành công kho Fulfillment TMDT đầu tiên ở HCM VietFul hân hạnh được đồng hành cùng Viettel để mang lại dịch vụ FFM hiệu quả nhất và chi phí thấp nhất
Trang 11Happy hour cuối tuần của team Vietful
Lớp học giao tiếp tiếng Anh của công ty vào buổi tối
Trang 12Đợt thực tập điễn ra trong 2 tháng cũng là khoảng thời gian thử việc Đó là 2 tháng khó khăn nhất khi bước vào công ty Mục tiêu đặt ra là nhanh chóng hòa nhập với môi trường làm việc mới, hiểu được cách làm việc, các quy trình để bắt tay vào làm các task một cách nhanh nhất
có thể
1 Tìm hiểu công ty, cách vận hành và các kỹ năng cơ bản cần thiết
Thời gian: 3 ngày
Training về business của công ty, chi tiết về Product của công ty, tầm nhìn và chiến lược công ty hướng đến Các kiến thức cơ bản về logistic cũng được training dần trong quá trình làm việc
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, các bước cần thực hiện trước khi bắt đầu vào làm, trong quá trình làm việc và khi kết thúc một ngày làm việc
Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc Cũng trong thời gian này, các anh hướng dẫn thực tập sinh tìm hiểu các công cụ phục vụ cho từng mục đích cụ thể khi làm việc Hầu hết các công cụ đều là sản phẩm lưu hành nội bộ công ty, ngoài ra còn có các ứng dụng, phần mềm hỗ trợ như Google Meet – phục vụ cho mục đích gặp và trao đổi trực tiếp trong bối cảnh WFH, Gitlab để quản lý task mình làm
Kết quả:
Hiểu thêm về công ty Vietful, quá trình thành lập và phát triển cho đến hiện tại Cách vận hành trong công ty, cách phối hợp với nhau giữa các thành viên Có thêm các kỹ năng về việc quản lý dự án, tinh thần trách nhiệm, kỹ năng giao tiếp qua các công cụ do công ty cung cấp
Trang 132 Nghiên cứu Framework Angular và các công cụ làm việc
Song song với những việc tìm hiểu công ty, cách vận hành và các kỹ năng cơ bản cần thiết thì việc làm quen với source code, các quy tắc, các công cụ và ngôn ngữ là vô cùng quan trọng Trong thời gian học tập ở trường đại học, em đã có tìm hiểu các Frontend Library và
Framework, một trong số đó là Angular nên việc nắm bắt kiến thức và đọc code cũnng khá nhanh Việc cần làm là tìm hiểu thêm những kiến thức nâng cao để áp dụng vào Product
Trong quá trình làm những task mới, em luôn chủ động tìm hiểu vấn đề trước rồi mới đặt ra những câu hỏi cho anh mentor Được sự hướng dẫn và chỉ dạy của anh Đức và các anh trong công ty, em đã dần làm quen với những kiến thức mới, cũng như cách làm việc nên đã dần đi vào công việc một cách trơn tru hơn mà không mất quá nhiều thời gian
2.1 Framework Angular
Thời gian: 1 tuần
Nội dung:
Angular là một javascript framework do google phát triển để xây dựng các Single Page
Application (SPA) bằng JavaScript, HTML và TypeScript Angular cung cấp các tính năng tích hợp cho animation, http service và có các tính năng như auto-complete,
navigation, toolbar, menus, … Code được viết bằng TypeScript , biên dịch thành
JavaScript và hiển thị tương tự trong trình duyệt
Component:
Components là một khối code trong app Angular Nó là sự kết hợp của bộ template html
và nhúng kèm code TypeScript (hoặc Javascript) Các components là độc lập với nhau và độc lập với hệ thống Nó có thể được cài vào hoặc tháo ra khỏi hệ thống dễ dàng Một component có thể hiểu như một control trên màn hình hiển thị, gồm giao diện html và code logic xử lý sự kiện đi kèm control đó Một component cũng có thể to lớn như là cả 1 màn hình chứa nhiều control hoặc một nhóm nhiều màn hình Tức là là một component cũng có thể chứa và gọi được nhiều component khác nối vào
Cấu trúc của Component:
Trang 14Từ khóa @Component sẽ giúp định nghĩa bộ khung html cho nó Và bên dưới là một class CategoryListComponent dùng để viết code logic Trong định nghĩa bộ khung html, chúng ta có một số thuộc tính cần chú ý sau đây:
khóa hello-ng-world được đặt tên cho component này Khi cần gọi component này ra ở màn hình html cha, ta sẽ gọi bằng html tag <app-category-list></app-category-list> Gọi như vậy thì component con sẽ được render ra component cha.**
html cho component này
đơn giản
Binding
Angular có cách code Binding (kết nối giữa html và data) dữ liệu theo kiểu 2 chiều, nghĩa
là html input thay đổi thì biến javascript sẽ ngay lập tức nhận được giá trị trả về và ngược lại, giá trị trong js thay đổi thì ngay lập tức màn hình html thay đổi theo.Để bind một chuỗi ra ngoài màn hình html thì rất đơn giản sử dụng 2 dấu ngoặc nhọn {{TenBien}} Ví
dụ chúng ta có một Component đơn giản như sau:
Trang 15Để gắn 1 sự kiện của control html với một hàm javascript, ta viết như sau:
Khi chúng ta muốn (click) tức là muốn bind sự kiện click chuột của người dùng ở control
này gọi là goBack()
ngModule
Trang 16components, directives, pipes, v.v
Module có thể được biên dịch (compile) dưới dạng ahead-of-time (AoT) Nghĩa là biên dịch ra mã thực thi để hiện ra luôn trên trình duyệt không cần vẽ vời gì từ đầu Hãy tưởng tượng component có html và js viết riêng, khi load trang thì 2 thứ này mới nhào nặn chung để hiển thị html+data lên màn hình AoT là thứ html+data đã nhào sẵn
Module cũng có thể gọi module con và bắt tay được với các module khác
Ví dụ về module chúng ta có thể bắt gặp ngay ở trong category.module.ts
Các thuộc tính của module được định nghĩa như sau:
imports: Định nghĩa sự phụ thuộc (Dependency) của module này, module phụ thuộc sẽ được load trước rồi module này mới load
declarations: Định nghĩa tất cả các component sẽ được dùng trong module này Nếu chưa định nghĩa thì các component trong module sẽ không thể gọi nhau vì không tìm thấy nhao
bootstrap: Mỗi ứng dụng Angular đều cần một module gốc, module này sẽ có một
component gốc chứa layout gốc sẽ được render ra ở file index.html
Service
Để tạo ra một service thì chúng ta cần import và mô tả một class với từ
khóa @injectable lấy từ @angular /core module
Trang 17Nếu muốn dùng chung service mà không muốn khao báo nhiều lần,component nào cũng
phải tiêm nó vào.Thì lúc này có thể khai báo service ở phần providers của component
2 Cài đặt Route cho ứng dụng Angular
Để cài đặt toàn bộ Router cho một ứng dụng Angular thì chúng ta cần tạo ra một đối tượng JSON chứa các thuộc tính như sau:
path: Đường dẫn URL của component hiện tại
Trang 18 redirectTo: Chuyển hướng đến URL này nếu URL ở path không trùng Ví dụ, khi người dùng gõ URL linh tinh, chúng ta muốn chuyển hướng và load trang Home hoặc trang báo lỗi 404 thì cần ghi rõ URL trang Home hoặc 404 vào redirectTo
pathMatch: Cài đặt xem chế độ kiểm tra url là như thế nào khi giá trị là full thì nghĩa
là toàn bộ url từ đầu đến cuối sẽ phải chính xác như trong bộ JSON Router Còn khi giá trị là prefix thì chuỗi đầu tiên của url (dấu sược đầu tiên) sẽ được kiểm tra Mặc định nếu không nói gì thì prefix sẽ được chọn Hãy xem đoạn code ví dụ về Router bên dưới:
Trang 19Được training về các kỹ thuật liên quan đến việc sử dụng Git một cách hiệu quả trên IDE Android Studio cùng với các kiến thức căn bản liên quan
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay DVCS nghĩa là hệ thống giúp mỗi máy tính có thể lưu trữ nhiều phiên bản khác nhau của một mã nguồn được nhân bản (clone) từ một kho chứa mã nguồn (repository), mỗi thay đổi vào mã nguồn trên máy tính sẽ có thể ủy thác (commit) rồi đưa lên máy chủ nơi đặt kho chứa chính Và một máy tính khác (nếu họ có quyền truy cập) cũng có thể clone lại mã nguồn từ kho chứa hoặc clone lại một tập hợp các thay đổi mới nhất trên máy tính kia Trong Git, thư mục làm việc trên máy tính gọi là Working Tree
Trang 20các phiên bản của những lần thay đổi vào mã nguồn và có thể dễ dàng khôi phục lại dễ dàng mà không cần copy lại mã nguồn rồi cất vào đâu đó Và một người khác có thể xem các thay đổi của bạn ở từng phiên bản, họ cũng có thể đối chiếu các thay đổi của bạn rồi gộp phiên bản của bạn vào phiên bản của họ Cuối cùng là tất cả có thể đưa các thay đổi vào mã nguồn của mình lên một kho chứa mã nguồn
Cơ chế lưu trữ phiên bản của Git là nó sẽ tạo ra một “ảnh chụp” (snapshot) trên mỗi tập tin và thư mục sau khi commit, từ đó nó có thể cho phép bạn tái sử dụng lại một ảnh chụp nào đó mà bạn có thể hiểu đó là một phiên bản Đây cũng chính là lợi thế của Git so với các DVCS khác khi nó không “lưu cứng” dữ liệu mà sẽ lưu với dạng
snapshot
Master: là nhánh chính, run trên production
Dev: là nhánh replica cho nhánh master cộng với các nhánh feature đang được
phát triển
Feature: được tách từ nhánh dev, chức năng sau khi được phát triển sẽ được
merge vào dev trước khi merge vào master
Trang 21Thực hiện:
Tham gia đầy đủ buổi training của công ty
Áp dụng tốt vào quá trình deliver dự án
Kết quả:
Hiểu và thành thạo kỹ năng sử dụng Git và Gitlab
Phối hợp tốt với mọi người trong làm việc nhóm trên Git
3 Trainning về Mô hình Agile-Scrum
Thời gian: 2 ngày và đi song song với thực hành trong suốt quá trình làm việc
Nội dung:
Được training về các kiến thức chung và tìm hiểu về việc áp dụng mô hình vào quy trình
làm việc nhóm trong quá trình thực tập Đây là mô hình làm việc mà công ty Vietful đã
apply vào sử dụng trên mọi product của công ty
Agile giúp các nhà phát triển có thể nhận dạng, điều chỉnh các vấn đề và khiếm
khuyết một cách nhanh chóng
Các điểm mạnh của Agile là:
Trang 22không phụ thuộc lẫn nhau, nên những thay đổi được thực hiện rất dễ dàng, ở bất kỳ giai đoạn nào của dự án
o Không cần phải nắm mọi thông tin ngay từ đầu: Phù hợp với những dự án chưa xác định được mục tiêu cuối cùng rõ ràng, vì việc này không quá cần thiết trong giai đoạn đầu
o Bàn giao nhanh hơn: Việc chia nhỏ dự án cho phép đội ngũ có thể tiến hành kiểm tra theo từng phần, xác định và sửa chữa vấn đề nhanh hơn, nhờ đó việc bàn giao công việc
sẽ nhất quán và thành công hơn
o Chú ý đến phản hồi của khách hàng và người dùng: Cả khách hàng và người dùng cuối đều có cơ hội để đóng góp các ý kiến và phản hồi, từ đó họ sẽ có ảnh hưởng một cách mạnh mẽ và tích cực tới sản phẩm cuối cùng
o Cải tiến liên tục: Agile khuyến khích thành viên trong đội ngũ làm việc và khách hàng cung cấp phản hồi của mình, khi đó các giai đoạn khác nhau của sản phẩm cuối có thể được kiểm tra và cải thiện lại nhiều lần nếu cần
Trong ngành công nghiệp phần mềm, phương thức sản xuất phần mềm có một vai trò vô cùng quan trọng, nó quyết định cấu trúc tổ chức, quy trình phát triển, khả năng thành công của các dự án Trong những năm gần đây Agile- Scrum nổi lên và thay thế mô hình thác nước
(Waterfall) truyền thống như một phương thức tổ chức sản xuất ưu việt được nhiều công ty phần mềm áp dụng và thành công Quản lý dự án theo nguyên tắc Agile nổi lên như một sự thay thế tối ưu cho bất kỳ dự án nào
Định nghĩa mô hình Agile: Khái niệm Agile (viết tắt của Agile Software Development) có
nghĩa là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt Nguyên tắc phát triển mô hình là phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng
Rất nhiều nơi định nghĩa Agile như một phương pháp Thực chất, Agile giống như một phương pháp luận, một triết lý dựa trên hơn nguyên tắc phân đoạn vòng lặp (iterative) và tăng trưởng (incremental)
Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các ngành khác như