{"id":28671,"date":"2026-09-02T07:09:15","date_gmt":"2026-09-02T07:09:15","guid":{"rendered":"https:\/\/umang.pk\/2026\/09\/02\/%d9%81%d9%84%d9%b9%d8%b1-%d9%85%db%8c%da%ba-%d9%81%d9%86%da%a9%d8%b4%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84%d8%b1%d8%a7%d8%a6%d8%b2%db%8c%d8%b4%d9%86-%d8%a2%d8%b2%d8%a7%d8%af-%d8%a7%d9%88\/"},"modified":"2026-09-02T07:09:15","modified_gmt":"2026-09-02T07:09:15","slug":"%d9%81%d9%84%d9%b9%d8%b1-%d9%85%db%8c%da%ba-%d9%81%d9%86%da%a9%d8%b4%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84%d8%b1%d8%a7%d8%a6%d8%b2%db%8c%d8%b4%d9%86-%d8%a2%d8%b2%d8%a7%d8%af-%d8%a7%d9%88","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/09\/02\/%d9%81%d9%84%d9%b9%d8%b1-%d9%85%db%8c%da%ba-%d9%81%d9%86%da%a9%d8%b4%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84%d8%b1%d8%a7%d8%a6%d8%b2%db%8c%d8%b4%d9%86-%d8%a2%d8%b2%d8%a7%d8%af-%d8%a7%d9%88\/","title":{"rendered":"\u0641\u0644\u0679\u0631 \u0645\u06cc\u06ba \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646: \u0622\u0632\u0627\u062f \u0627\u0648\u0631 \u062a\u0648\u0633\u06cc\u0639 \u067e\u0630\u06cc\u0631 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0627\u0648\u0631 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062c\u0648\u0691\u0646\u0627 \u06c1\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0679\u06cc\u0645 \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u06a9\u0627 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0688\u06be\u0627\u0646\u0686\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 20 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0644\u0648\u06af\u0648\u06ba \u06a9\u06cc \u0627\u06cc\u06a9 \u0628\u0691\u06cc \u0679\u06cc\u0645 \u06c1\u0648 \u062c\u0648 \u0633\u0628 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062d\u0635\u06c1 \u0688\u0627\u0644 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u061f \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688\u0628\u06cc\u0633 \u06a9\u0648 \u062f\u0628\u0644\u06cc \u067e\u062a\u0644\u06cc \u0627\u0648\u0631 \u06a9\u0645\u067e\u06cc\u06a9\u0679 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062d\u062a\u0627\u0637 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0633\u0648\u0686 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u06c1\u0645\u0648\u0627\u0631 \u0634\u0631\u0627\u06a9\u062a \u06a9\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0627\u0648\u0631 \u0639\u0645\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0641\u0648\u0644\u0688\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a\u060c \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u060c \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u06be\u06cc \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0648 \u0622\u067e \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0633 \u0627\u0633\u06cc \u0637\u0631\u062d \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u06cc\u06a9 lib \u0641\u0648\u0644\u0688\u0631\u060c \u0686\u0646\u062f \u0627\u0633\u06a9\u0631\u06cc\u0646\u06cc\u06ba\u060c \u0634\u0627\u06cc\u062f \u0627\u06cc\u06a9 \u0645\u0627\u0688\u0644 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0633\u0631\u0648\u0633 \u0641\u0627\u0626\u0644 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06cc\u067e \u0628\u06be\u06cc\u062c\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06c1\u0631 \u06a9\u0648\u0626\u06cc \u062e\u0648\u0634 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u06a9\u0648 \u0628\u0691\u0627 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0646\u0626\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u067e\u06be\u06cc\u0644 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u062c\u0648 \u06a9\u0628\u06be\u06cc \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u062a\u06be\u0627 \u0648\u06c1 \u0628\u06be\u0648\u0644\u0628\u0644\u06cc\u06cc\u0627 \u0628\u0646 \u06af\u06cc\u0627\u06d4 \u0627\u06cc\u06a9 \u0686\u06cc\u0632 \u0628\u062f\u0644\u0648 \u06a9\u0686\u06be \u0627\u0648\u0631 \u0679\u0648\u0679 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06a9\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06c1\u0627\u06ba \u0631\u06c1\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0627\u0688\u0644 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba 300 \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0633\u0631\u0648\u0633 \u0641\u0627\u0626\u0644 6,000 \u0644\u0627\u0626\u0646\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u0626\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u0648 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u06a9\u0626\u06cc \u06c1\u0641\u062a\u06d2 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u06c1\u0627\u06ba \u0627\u0648\u0631 \u06a9\u06cc\u0627 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0646\u0638\u0645 \u0648 \u0636\u0628\u0637 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u0627\u062e\u062a\u06cc \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4 \u0627\u06cc\u067e \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u0633\u06d2 \u062a\u0634\u06a9\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u0679\u0648\u0679\u06d2 \u0628\u063a\u06cc\u0631 \u062a\u0631\u0642\u06cc \u06a9\u0648 \u062c\u0630\u0628 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0627\u06cc\u06a9 \u062a\u0646\u0638\u06cc\u0645\u06cc \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u062a\u0628\u0627\u06c1\u06cc \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0646\u06c1 \u062a\u0648 \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u06c1 \u06c1\u06cc \u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06cc\u0627 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0627 \u0645\u062a\u0628\u0627\u062f\u0644\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u0648 \u0644\u06d2 \u06a9\u0631 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0641\u0646\u06a9\u0634\u0646 \u0628\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u0633\u06d2\u060c \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627 \u06c1\u0631 \u062d\u0635\u06c1 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u062c\u0627\u0646\u0686 \u0627\u0648\u0631 \u0628\u063a\u06cc\u0631 \u0645\u062f\u0627\u062e\u0644\u062a \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u062a\u0648\u0633\u06cc\u0639 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0622\u0631\u0679\u06cc\u06a9\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u062c\u0648 \u0644\u06cc\u0626\u0631 \u0641\u0631\u0633\u0679 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u067e\u06cc\u062f\u0627 \u06c1\u0648\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0688\u06cc\u0632\u0627\u0626\u0646 \u062f\u0631\u0627\u0635\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0642\u06cc\u0645\u062a\u06cc \u0627\u0634\u06cc\u0627\u0621 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0686\u06be \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644\u060c \u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0633\u0628 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0627\u06a9\u0679\u06be\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u06d2 \u0648\u0627\u0642\u0641 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0688\u0627\u0631\u0679 \u067e\u0631 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u0646\u0627\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0622\u0628\u062c\u06cc\u06a9\u0679 \u0627\u0648\u0631\u06cc\u0646\u0679\u0688 \u067e\u0631\u0648\u06af\u0631\u0627\u0645\u0646\u06af \u06a9\u06cc\u0627 \u06c1\u06d2: \u06a9\u0644\u0627\u0633\u0632\u060c \u0648\u0631\u0627\u062b\u062a\u060c \u0627\u0646\u0679\u0631\u0641\u06cc\u0633\u061f<\/p>\n<\/li>\n<li>\n<p>\u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0645\u06cc\u06ba \u067e\u0631\u062a\u0648\u06ba \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2: \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 UI \u06a9\u0648 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u0633\u06d2 \u0627\u0644\u06af \u06a9\u0631\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0688\u0627\u0631\u0679 \u0645\u06cc\u06ba \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u067e\u0631\u0648\u06af\u0631\u0627\u0645\u0646\u06af: \u0641\u06cc\u0648\u0686\u0631\u0632 \u0627\u0648\u0631 \u0627\u0633\u06cc\u0646\u06a9\/\u0627\u0646\u062a\u0638\u0627\u0631<\/p>\n<\/li>\n<\/ul>\n<p>\u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06cc\u0627 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0633\u06cc \u067e\u06cc\u0634\u06af\u06cc \u062a\u062c\u0631\u0628\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u0636\u0645\u0648\u0646 \u062f\u0648\u0646\u0648\u06ba \u0645\u062a\u0639\u0644\u0642\u06c1 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-what-feature-modularization-actually-is\">\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u06cc\u0679\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06cc \u062a\u06c1\u0648\u06ba \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0645\u0634\u0642 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u062a\u0645\u0627\u0645 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0631 \u0686\u06cc\u0632 \u0634\u0627\u0645\u0644 \u06c1\u06d2: \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644\u060c \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644\u060c \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc\u060c \u0627\u0648\u0631 UI\u06d4 \u06cc\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u067e\u0648\u0631\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u0639\u0645\u0648\u062f\u06cc \u0679\u06a9\u0691\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0627\u0641\u0639\u0627\u0644 \u06a9\u0648 \u062f\u0648\u0633\u0631\u06d2 \u0627\u0641\u0639\u0627\u0644 \u0633\u06d2 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06a9\u06cc\u0644\u0627 \u06a9\u06be\u0691\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2 \u062c\u0633 \u0637\u0631\u062d \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u06cc\u067e\u0633 \u06a9\u0648 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u0638\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u06c1\u0627\u06ba \u062a\u0645\u0627\u0645 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u0648\u0688 \u0627\u06cc\u06a9 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0645\u0627\u0645 \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062a\u0645\u0627\u0645 UI \u062a\u06cc\u0633\u0631\u06d2 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0642\u0637\u0639 \u0646\u0638\u0631 \u0627\u0633 \u0633\u06d2 \u06a9\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u06a9\u0633 \u0641\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u06cc\u0679\u06cc \u0627\u06cc\u06a9 \u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u067e\u0631\u062a\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0648\u06c1 \u0627\u0635\u0648\u0644 \u062c\u0648 \u0627\u0646 \u06a9\u06d2 \u062a\u0639\u0627\u0645\u0644 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u067e\u0631 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06c1\u0645\u06cc\u06ba \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u062a\u06c1\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06cc\u060c \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f UI \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646 \u0633\u06a9\u062a\u06d2\u060c \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0645\u062a\u0639\u06cc\u0646 \u062d\u062f\u0648\u062f \u0633\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u06cc \u0637\u0631\u0641 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 DDD \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0688\u0648\u0645\u06cc\u0646\u0632 \u06a9\u06cc \u0645\u0627\u0688\u0644\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0630\u062e\u06cc\u0631\u06c1 \u0627\u0644\u0641\u0627\u0638 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u06a9\u0648 \u06a9\u06cc\u067e\u0686\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062f\u0627\u0631\u0648\u06ba\u060c \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679\u060c \u0627\u06cc\u06af\u0631\u06cc\u06af\u06cc\u0679\u0633\u060c \u0688\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0633\u0632\u060c \u0627\u0648\u0631 \u0628\u0627\u0624\u0646\u0688\u0688 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u0648 \u0679\u0648\u0644\u0632 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0627\u0646 \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0644\u06cc\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0648 \u06cc\u06a9\u062c\u0627 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06d2 \u0644\u06cc\u0626\u0631\u0646\u06af \u0631\u0648\u0644\u0632 \u0627\u0648\u0631 \u0688\u06cc \u0688\u06cc \u0688\u06cc \u06a9\u06cc \u0645\u0627\u0688\u0644\u0646\u06af \u0627\u0644\u0641\u0627\u0638 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0641\u0646\u06a9\u0634\u0646\u0644 \u0633\u0637\u062d \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0641\u06cc\u0686\u0631 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a\u060c \u0627\u0633 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631\u060c \u0627\u0633 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0644\u06cc\u0626\u0631\u060c \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u0627\u0633 \u0628\u0627\u062a \u067e\u0631 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0633 \u06a9\u06cc \u067e\u0631\u062a\u06cc\u06ba \u06a9\u0633\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u06cc\u0633\u06d2 \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 DDD \u06a9\u0627 \u062a\u0635\u0648\u0631 \u0627\u0633 \u0628\u0627\u062a \u067e\u0631 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06d2 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u06a9\u0633 \u0637\u0631\u062d \u0645\u0646\u0638\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u062a\u06cc\u062c\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u06a9\u0648\u0688\u0628\u06cc\u0633 \u06a9\u0627 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u062d\u0635\u06c1 \u063a\u06cc\u0631 \u0645\u0639\u06cc\u0646\u06c1 \u0645\u062f\u062a \u062a\u06a9 \u0628\u0691\u06be \u0646\u06c1\u06cc\u06ba \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0633 \u06a9\u06d2 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06cc\u0627 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0628\u0691\u0627 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-problem-with-layer-first-organization\">\u067e\u0631\u062a-\u067e\u06c1\u0644\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u06d2 \u0686\u06cc\u0644\u0646\u062c\u0632<\/h2>\n<p>\u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u06cc\u0679\u06cc \u06a9\u06cc\u0648\u06ba \u0627\u06c1\u0645 \u06c1\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u06c1\u0648\u06af\u0627 \u06a9\u06c1 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0645\u062a\u0628\u0627\u062f\u0644 \u06a9\u06cc\u0633\u0627 \u0646\u0638\u0631 \u0622\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06cc \u067e\u06c1\u0644\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u06ba\u060c \u0641\u0648\u0644\u0688\u0631 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u06a9\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">lib\/\n  domain\/\n    employee.dart\n    payment.dart\n    product.dart\n    notification.dart\n    user.dart\n    ... 47 more files\n\n  application\/\n    get_employee_usecase.dart\n    process_payment_usecase.dart\n    get_products_usecase.dart\n    send_notification_usecase.dart\n    ... 83 more use cases\n\n  infrastructure\/\n    employee_repository_impl.dart\n    payment_repository_impl.dart\n    product_datasource.dart\n    notification_service_impl.dart\n    ... 91 more implementations\n\n  presentation\/\n    employee_page.dart\n    payment_page.dart\n    product_list_page.dart\n    ... 200 more screens and widgets\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0686\u06be\u0648\u0679\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0627\u0686\u06be\u0627 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0631\u0645\u06cc\u0627\u0646\u06d2 \u062f\u0631\u062c\u06d2 \u067e\u0631\u060c \u062f\u0631\u0627\u0691\u06cc\u06ba \u0646\u0645\u0648\u062f\u0627\u0631 \u06c1\u0648\u0646\u06d2 \u0644\u06af\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631\u060c \u06cc\u06c1 \u0648\u0627\u0642\u0639\u06cc \u062a\u06a9\u0644\u06cc\u0641 \u062f\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0686\u0627\u0631 \u0627\u0644\u06af \u0627\u0644\u06af \u0679\u0627\u067e \u0644\u06cc\u0648\u0644 \u0641\u0648\u0644\u0688\u0631\u0632 \u0645\u06cc\u06ba \u0679\u0686 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u0645\u0644\u0627\u0632\u0645 \u06c1\u0633\u062a\u06cc \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u06a9\u06cc\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0641\u0648\u0644\u0688\u0631\u060c \u0627\u067e\u0646\u06d2 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0641\u0648\u0644\u0688\u0631\u060c \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 UI \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u06cc\u06c1 \u0641\u0648\u0644\u0688\u0631 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062f\u0648\u0633\u0631\u06d2 \u062a\u0645\u0627\u0645 \u0641\u0646\u06a9\u0634\u0646\u0632 \u0633\u06d2 \u0627\u0644\u06af \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u0641\u0648\u0644\u0688\u0631 \u06a9\u0648 \u0634\u06cc\u0626\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0630\u06c1\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u067e\u0648\u0631\u06d2 \u06a9\u0648\u0688\u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0628\u06a9\u06be\u0631\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u06a9\u0691\u0648\u06ba \u06a9\u0648 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u0626\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0627\u0633\u0679\u0627\u0641 \u0641\u0646\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u067e\u0648\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0646\u06c1\u06cc\u06ba \u0686\u0627\u0631 \u0645\u062e\u062a\u0644\u0641 \u067e\u0648\u0632\u06cc\u0634\u0646\u06cc\u06ba \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u0627 \u0645\u0634\u06a9\u0644 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u067e\u0631\u0632\u06d2 \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u0641\u0648\u0644\u0688\u0631\u0632 \u0627\u0648\u0631 \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u062f\u0648\u0633\u0631\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646 \u0637\u0631\u06cc\u0642\u0648\u06ba \u0633\u06d2 \u0628\u0627\u0646\u0679\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0648\u0627\u0636\u062d \u062d\u062f\u0648\u062f \u06a9\u0648 \u06a9\u06be\u06cc\u0646\u0686\u0646\u0627 \u0645\u0634\u06a9\u0644 \u0628\u0646\u0627 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0641\u0646\u06a9\u0634\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0627\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0631\u06a9\u06be \u06a9\u0631 \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-building-blocks-clean-architecture-meets-ddd\">\u0628\u0644\u0688\u0646\u06af \u0628\u0644\u0627\u06a9\u0633: \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0688\u06cc \u0688\u06cc \u0688\u06cc \u0633\u06d2 \u0645\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0641\u0648\u0644\u0688\u0631 \u06a9\u06d2 \u0688\u06be\u0627\u0646\u0686\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0688 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0627\u0648\u0631 \u0688\u06cc \u0688\u06cc \u0688\u06cc \u062f\u0648\u0646\u0648\u06ba \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u06cc\u0679\u06cc \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06a9\u0631\u062f\u0627\u0631 \u0627\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06c1\u0645\u06cc\u06ba \u062f\u0648\u0646\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc\u0648\u06ba \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-clean-architecture-contributes\">\u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06cc\u0627 \u062a\u0639\u0627\u0648\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u062a\u06c1\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0633\u062e\u062a \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062a\u06c1\u06c1 \u0628\u06cc\u0631\u0648\u0646\u06cc \u062a\u06c1\u06c1 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0688\u0648\u0645\u06cc\u0646\u0632 \u0633\u0628 \u0633\u06d2 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062a\u06c1\u06c1 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u067e\u0631\u062a \u0688\u0648\u0645\u06cc\u0646 \u06a9\u0648 \u0644\u067e\u06cc\u0679 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u062a\u06c1\u06c1 \u0633\u0628 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u06cc \u062a\u06c1\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba\u060c \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u0626\u06cc \u0686\u06cc\u0632\u06cc\u06ba:<\/p>\n<p>\u06a9\u06c1 <strong>\u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a<\/strong> \u06c1\u0633\u062a\u06cc\u060c \u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679\u060c \u0627\u0648\u0631 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4 Flutter\u060c HTTP \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba\u060c \u0645\u0642\u0627\u0645\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c \u06cc\u0627 \u0628\u06cc\u0631\u0648\u0646\u06cc \u067e\u06cc\u06a9\u062c\u0648\u06ba \u067e\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062e\u0627\u0644\u0635 \u0688\u0627\u0631\u0679 \u06c1\u06d2\u060c \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u0627\u0633 \u0633\u06d2 \u0628\u0627\u0644\u06a9\u0644 \u0627\u0644\u06af \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u062a\u06cc \u06c1\u06d2 \u06cc\u0627 \u06a9\u06cc\u0633\u06d2 \u0644\u06af\u0627\u0626\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0631\u062a<\/strong> \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0633\u0632 \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679 \u0688\u0648\u0645\u06cc\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0635\u0631\u0641 \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba \u0627\u062f\u0627\u0631\u0648\u06ba \u0627\u0648\u0631 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0645\u06cc\u06ba HTTP\u060c SQLite\u060c \u06cc\u0627 Riverpod \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <strong>\u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a<\/strong> \u0688\u0648\u0645\u06cc\u0646 \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u06d2 \u0679\u06be\u0648\u0633 \u0646\u0641\u0627\u0630 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba HTTP \u06a9\u0644\u0627\u0626\u0646\u0679\u0633\u060c \u0645\u0642\u0627\u0645\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u062e\u062f\u0645\u0627\u062a \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06ba\u06d4 \u06cc\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u0644\u06cc\u0626\u0631 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0688\u0648\u0645\u06cc\u0646 \u0644\u06cc\u0626\u0631 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u0627\u0633 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <strong>\u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a<\/strong> UI (\u0648\u062c\u06cc\u0679\u0633\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u062d\u06cc\u062b\u06cc\u062a) \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0631\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0631\u06cc\u0627\u0633\u062a \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06cc \u06cc\u06c1 \u0633\u0645\u062a \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0633\u06d2 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u062a\u0648\u0691\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 HTTP \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u0648 Dio \u0633\u06d2 HTTP \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u0688\u0648\u0645\u06cc\u0646 \u06c1\u0633\u062a\u06cc \u06a9\u0648 \u0686\u06be\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0631\u06cc\u0627\u0633\u062a\u06cc \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0648 Riverpod \u0633\u06d2 BLoC \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0627\u06cc\u06a9 \u06a9\u06cc\u0633 \u06a9\u0648 \u0686\u06be\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-domain-driven-design-contributes\">\u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u062a\u0639\u0627\u0648\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>DDD \u0688\u0648\u0645\u06cc\u0646 \u0644\u06cc\u0626\u0631\u0632 \u06a9\u0648 \u0645\u0646\u0627\u0633\u0628 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0630\u062e\u06cc\u0631\u06c1 \u0627\u0644\u0641\u0627\u0638 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u06c1\u06cc\u06ba <strong>\u062d\u0642\u06cc\u0642\u062a<\/strong> ID \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0688\u0648\u0645\u06cc\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679\u06d4 \u0627\u0633 \u06a9\u06cc \u0627\u06cc\u06a9 \u0634\u0646\u0627\u062e\u062a \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u0627\u0633\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u062f\u06cc\u06af\u0631 \u0627\u062f\u0627\u0631\u0648\u06ba \u0633\u06d2 \u0645\u0645\u062a\u0627\u0632 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0644\u0627\u0632\u0645 \u06c1\u0633\u062a\u06cc \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u0627\u0633 \u06a9\u06d2 \u0645\u0644\u0627\u0632\u0645 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u0633\u06d2 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u06c1\u06cc \u0646\u0627\u0645 \u06a9\u06d2 \u062f\u0648 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u0627\u0628 \u0628\u06be\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u062f\u0627\u0631\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0646 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u06c1\u0633\u062a\u06cc \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06cc \u062d\u0627\u0644\u062a \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0628\u062f\u0644\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u067e \u0627\u0633 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0642\u0648\u0627\u0639\u062f \u0644\u0627\u06af\u0648 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0648\u06c1 \u0631\u06cc\u0627\u0633\u062a \u06a9\u06cc\u0633\u06d2 \u0628\u062f\u0644 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679<\/strong> \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0627\u06cc\u06a9 \u0679\u06a9\u0691\u06d2 \u06a9\u0648 \u0644\u067e\u06cc\u0679\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062f\u0631\u0633\u062a\u06af\u06cc \u06a9\u0648 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 EmployeeId \u0627\u06cc\u06a9 \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06c1\u06d2\u060c \u0628\u0627\u0644\u06a9\u0644 \u0627\u06cc \u0645\u06cc\u0644 \u0627\u06cc\u0688\u0631\u06cc\u0633 \u06cc\u0627 \u0631\u0642\u0645 \u06a9\u06cc \u0637\u0631\u062d\u06d4 \u0642\u06cc\u0645\u062a\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0646\u0627\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u0631 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0688\u06cc\u0679\u0627 \u063a\u0644\u0637 \u06c1\u06d2 \u062a\u0648\u060c \u0688\u0648\u0645\u06cc\u0646 \u0645\u06cc\u06ba \u063a\u0644\u0637 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u062f\u0627\u062e\u0644 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u062a\u062e\u0644\u06cc\u0642 \u067e\u0631 \u0627\u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u0688\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0633<\/strong> \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0642\u062f\u0631\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u06c1\u0633\u062a\u06cc \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u0645\u062a\u0639\u062f\u062f \u0627\u062f\u0627\u0631\u0648\u06ba \u067e\u0631 \u0645\u062d\u06cc\u0637 \u06c1\u06cc\u06ba \u06cc\u0627 \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0627\u0633 \u0637\u0631\u062d \u0633\u06d2 \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0648 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u06c1\u0633\u062a\u06cc \u0645\u06cc\u06ba \u0641\u0679 \u0646\u06c1 \u06c1\u0648\u060c \u062a\u0648 \u0627\u0633 \u0645\u0646\u0637\u0642 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0688\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0633 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u0630\u062e\u06cc\u0631\u06c1<\/strong> \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0627\u06cc\u06a9 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u062c\u0648 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a \u0679\u06be\u0648\u0633 \u0646\u0641\u0627\u0630 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0627 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646 \u0633\u06a9\u06d2 \u06af\u0627 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u06a9\u0648\u0646 \u0633\u0627 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06cc\u0627 API \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-entities-value-objects-and-dtos-in-a-modular-feature\">\u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a\u060c \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679\u060c \u0627\u0648\u0631 DTOs<\/h2>\n<p>\u0627\u0646 \u062a\u06cc\u0646 \u0627\u0642\u0633\u0627\u0645 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u0627 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u063a\u0644\u0637 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644 \u063a\u0644\u0637 \u067e\u0631\u062a \u067e\u0631 \u067e\u06c1\u0646\u0686 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h3 id=\"heading-value-objects\">\u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679<\/h3>\n<p>\u0627\u06cc\u06a9 \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0627\u06cc\u06a9 \u0679\u06a9\u0691\u06d2 \u06a9\u0648 \u0644\u067e\u06cc\u0679\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u06c1\u0645\u06cc\u0634\u06c1 \u062f\u0631\u0633\u062a \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u063a\u0644\u0637 \u0688\u06cc\u0679\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u063a\u0644\u0637 \u0688\u06cc\u0679\u0627 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<pre><code class=\"language-dart\">class EmployeeId {\n  final String value;\n\n  EmployeeId(this.value) {\n    if (value.isEmpty) {\n      throw DomainException('Employee ID cannot be empty');\n    }\n    if (value.length < 4) {\n      throw DomainException('Employee ID must be at least 4 characters');\n    }\n  }\n\n  @override\n  bool operator ==(Object other) =>\n      other is EmployeeId && other.value == value;\n\n  @override\n  int get hashCode => value.hashCode;\n\n  @override\n  String toString() => value;\n}\n<\/code><\/pre>\n<pre><code class=\"language-dart\">class Money {\n  final double amount;\n  final String currency;\n\n  Money({required this.amount, required this.currency}) {\n    if (amount < 0) {\n      throw DomainException('Amount cannot be negative');\n    }\n    if (currency.isEmpty) {\n      throw DomainException('Currency cannot be empty');\n    }\n  }\n\n  Money add(Money other) {\n    if (currency != other.currency) {\n      throw DomainException('Cannot add different currencies');\n    }\n    return Money(amount: amount + other.amount, currency: currency);\n  }\n\n  @override\n  String toString() => '$currency ${amount.toStringAsFixed(2)}';\n}\n<\/code><\/pre>\n<p>\u0642\u06cc\u0645\u062a\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0646\u0627\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u0631 \u06c1\u06cc\u06ba\u06d4 \u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0622\u0626\u0679\u0645 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 <code>EmployeeId<\/code> \u0627\u0648\u0631 <code>Money<\/code> \u0645\u0630\u06a9\u0648\u0631\u06c1 \u0628\u0627\u0644\u0627 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u063a\u0644\u0637 \u0646\u06c1\u06cc\u06ba <code>EmployeeId<\/code> \u06cc\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u0645\u06cc\u06ba \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc \u0645\u0648\u062c\u0648\u062f \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0645\u0646\u0641\u06cc \u0646\u06c1\u06cc\u06ba <code>Money<\/code> \u06cc\u06c1 \u0645\u0648\u062c\u0648\u062f \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06af\u0627\u0631\u0688\u0632 \u062e\u0648\u062f \u06c1\u06cc \u0642\u0633\u0645 \u0645\u06cc\u06ba \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-entities\">\u06c1\u0633\u062a\u06cc<\/h3>\n<p>\u0627\u06cc\u06a9 \u06c1\u0633\u062a\u06cc \u0627\u06cc\u06a9 \u0688\u0648\u0645\u06cc\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 ID \u06c1\u06d2 \u0627\u0648\u0631 \u0631\u06cc\u0627\u0633\u062a \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">class Employee {\n  final EmployeeId id;\n  final String name;\n  DateTime? clockInTime;\n  DateTime? clockOutTime;\n\n  Employee({\n    required this.id,\n    required this.name,\n  });\n\n  void clockIn(DateTime time) {\n    if (clockInTime != null && clockOutTime == null) {\n      throw DomainException('Cannot clock in: already clocked in');\n    }\n    clockInTime = time;\n    clockOutTime = null;\n  }\n\n  void clockOut(DateTime time) {\n    if (clockInTime == null) {\n      throw DomainException('Cannot clock out: not clocked in');\n    }\n    if (time.isBefore(clockInTime!)) {\n      throw DomainException('Clock out time cannot be before clock in time');\n    }\n    clockOutTime = time;\n  }\n\n  bool get isClockedIn => clockInTime != null && clockOutTime == null;\n\n  Duration? get hoursWorked {\n    if (clockInTime == null || clockOutTime == null) return null;\n    return clockOutTime!.difference(clockInTime!);\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u06cc \u0631\u06cc\u0627\u0633\u062a\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <code>clockIn<\/code> \u0627\u0648\u0631 <code>clockOut<\/code> \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0633\u06cc\u0679\u0631 \u0646\u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0645\u0644\u0627\u0632\u0645 \u06a9\u0644\u0627\u06a9 \u0622\u0624\u0679 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u062f\u0648 \u0628\u0627\u0631 \u06af\u06be\u0691\u06cc \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u062c\u0627 \u0633\u06a9\u062a\u0627\u060c \u0628\u0627\u0644\u06a9\u0644 \u0627\u0633\u06cc \u0637\u0631\u062d \u062c\u06cc\u0633\u06d2 \u0648\u06c1 \u06a9\u0644\u0627\u06a9 \u0627\u0646 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06af\u06be\u0691\u06cc \u0646\u06c1\u06cc\u06ba \u0646\u06a9\u0627\u0644 \u0633\u06a9\u062a\u0627\u06d4 \u06cc\u06c1 \u0627\u0635\u0648\u0644 \u0627\u0633 \u0627\u062f\u0627\u0631\u06d2 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u0633\u06d2 \u0648\u06c1 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0646\u06c1 \u06a9\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u06a9\u06cc\u0633\u060c \u0648\u06cc\u062c\u06cc\u0679 \u06cc\u0627 \u0630\u062e\u06cc\u0631\u06c1 \u067e\u0631\u06d4<\/p>\n<h3 id=\"heading-dtos\">\u0688\u06cc \u0679\u06cc \u0627\u0648<\/h3>\n<p>\u0688\u06cc\u0679\u0627 \u0679\u0631\u0627\u0646\u0633\u0641\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0630\u0631\u0627\u0626\u0639 \u0633\u06d2 \u062e\u0627\u0645 \u0688\u06cc\u0679\u0627 \u067e\u0627\u0633 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 API \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0642\u0637\u0627\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 JSON \u067e\u06d2 \u0644\u0648\u0688\u0632\u06d4 DTO \u06a9\u06d2 \u067e\u0627\u0633 \u06a9\u0648\u0626\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644 \u06cc\u0627 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0627\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062d\u062f\u0648\u062f \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">class EmployeeDTO {\n  final String id;\n  final String name;\n  final String? clockInTime;\n  final String? clockOutTime;\n\n  const EmployeeDTO({\n    required this.id,\n    required this.name,\n    this.clockInTime,\n    this.clockOutTime,\n  });\n\n  factory EmployeeDTO.fromJson(Map<string dynamic=\"\"> json) {\n    return EmployeeDTO(\n      id: json['id'] as String,\n      name: json['name'] as String,\n      clockInTime: json['clock_in_time'] as String?,\n      clockOutTime: json['clock_out_time'] as String?,\n    );\n  }\n\n  Employee toDomain() {\n    final employee = Employee(\n      id: EmployeeId(id),\n      name: name,\n    );\n\n    if (clockInTime != null) {\n      employee.clockIn(DateTime.parse(clockInTime!));\n    }\n    if (clockOutTime != null) {\n      employee.clockOut(DateTime.parse(clockOutTime!));\n    }\n\n    return employee;\n  }\n}\n<\/string><\/code><\/pre>\n<p>\u0688\u06cc \u0679\u06cc \u0627\u0648\u0632 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u06c1\u06cc\u06ba\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u0627\u062f\u0627\u0631\u06d2 JSON \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0688\u0648\u0645\u06cc\u0646 \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 JSON \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u0645\u0639\u0644\u0648\u0645\u06d4 \u06a9\u06c1 <code>toDomain()<\/code> \u0637\u0631\u06cc\u0642\u06d2 \u062e\u0627\u0645 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0646\u0627\u0633\u0628 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0648\u0627\u0644\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u067e\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-business-rules-and-where-they-live\">\u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u0627\u0648\u0631 \u0631\u06c1\u0627\u0626\u0634<\/h2>\n<p>\u0645\u0627\u0688\u06cc\u0648\u0644\u0631 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644 \u0688\u0648\u0645\u06cc\u0646 \u0644\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062a\u0631\u062c\u06cc\u062d \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062c\u0648 \u0686\u06cc\u0632 \u067e\u0648\u0631\u06d2 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u0648 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u0645\u0639\u0627\u06c1\u062f\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679<\/strong> \u062c\u0648\u06c1\u0631\u06cc\u060c \u0636\u0631\u0648\u0631\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06d2 \u0627\u06cc \u0645\u06cc\u0644 \u0627\u06cc\u0688\u0631\u06cc\u0633 \u0645\u06cc\u06ba @ \u06a9\u06cc \u0639\u0644\u0627\u0645\u062a \u0634\u0627\u0645\u0644 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0631\u0642\u0645 \u0645\u0646\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06cc\u06d4 \u0645\u0644\u0627\u0632\u0645 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u062e\u0627\u0644\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06cc\u06d4 \u06cc\u06c1 \u0627\u0635\u0648\u0644 \u062e\u0648\u062f \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u06c1\u0633\u062a\u06cc<\/strong> \u0631\u06cc\u0627\u0633\u062a\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba\u06d4 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u062f\u0648 \u0628\u0627\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u0646\u06c1\u06cc\u06ba \u062f\u06d2 \u0633\u06a9\u062a\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0631\u0642\u0645 \u06a9\u06cc \u0648\u0627\u067e\u0633\u06cc \u0645\u0644 \u0686\u06a9\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06c1\u0645 \u0622\u067e \u06a9\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u0645\u06a9\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06a9\u0627\u0645 \u0645\u06a9\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0633\u06a9\u062a\u0627\u06d4 \u0627\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u06cc\u06ba \u06c1\u0633\u062a\u06cc \u06a9\u06cc \u0631\u06cc\u0627\u0633\u062a\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0646 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0627\u062f\u0627\u0631\u0648\u06ba \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0688\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0633<\/strong> \u0627\u06cc\u0633\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0645\u062a\u0639\u062f\u062f \u0627\u062f\u0627\u0631\u0648\u06ba \u067e\u0631 \u0645\u062d\u06cc\u0637 \u06c1\u0648\u06ba \u06cc\u0627 \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06d4 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u0627\u067e\u0646\u06cc \u0686\u06be\u0679\u06cc \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062e\u0648\u062f \u0645\u0646\u0638\u0648\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0648\u0631 \u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0686\u06cc\u06a9\u0633 \u0633\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0642\u0648\u0627\u0639\u062f \u0645\u062a\u0639\u062f\u062f \u0627\u062f\u0627\u0631\u0648\u06ba \u067e\u0631 \u0645\u062d\u06cc\u0637 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0642\u062f\u0631\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u06c1\u0633\u062a\u06cc \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u062a\u06d2\u06d4 \u0627\u0646 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0688\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0633\u0632 \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0635\u0648\u0644 \u0633\u0627\u062f\u06c1 \u0627\u0648\u0631 \u0645\u0637\u0644\u0642 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a \u0645\u06cc\u06ba \u06c1\u06d2\u06d4 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0631\u062a \u0688\u0648\u0645\u06cc\u0646 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06d2 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a \u0646\u062a\u0627\u0626\u062c \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06cc\u0627 \u062a\u0631\u0645\u06cc\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u062d\u062f \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u0646\u0638\u0627\u0645 \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u062c\u0627 \u06a9\u0631 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2\u06d4 \u0622\u067e \u0648\u06cc\u062c\u06cc\u0679 \u067e\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u06a9\u06d2 \u0627\u0633\u06d2 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06c1\u0645\u06cc\u0634\u06c1 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0648\u0627\u062d\u062f \u0637\u0631\u06cc\u0642\u06c1 \u062e\u0648\u062f \u0688\u0648\u0645\u06cc\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-exception-handling-and-safe-state-propagation\">\u0645\u0633\u062a\u062b\u0646\u06cc\u0670 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u0631\u06cc\u0627\u0633\u062a\u06cc \u062a\u0628\u0644\u06cc\u063a<\/h2>\n<p>\u0627\u06af\u0631 \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a\u060c \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0627\u0635\u0648\u0644 \u06a9\u06cc \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 <code>DomainException<\/code>. \u06cc\u06c1 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u0633\u06d2 \u06c1\u0648\u062a\u06cc \u06c1\u0648\u0626\u06cc \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u062a\u06a9 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0627\u0633\u06d2 UI \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0628\u0635\u06cc\u0631\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062a\u0648\u0691\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633\u06d2 \u0627\u06cc\u06a9 \u0645\u062a\u0639\u06cc\u0646 \u062d\u062f \u067e\u0631 \u067e\u06a9\u0691\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0645\u062d\u0641\u0648\u0638 \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 UI \u0631\u06cc\u0646\u0688\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06a9\u0645\u0644 \u0628\u06c1\u0627\u0624 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-dart\">\/\/ domain layer \u2014 throws when rules are violated\nclass Employee {\n  void clockIn(DateTime time) {\n    if (clockInTime != null && clockOutTime == null) {\n      throw DomainException('Cannot clock in: already clocked in');\n    }\n    clockInTime = time;\n  }\n}\n<\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ application layer \u2014 catches domain exceptions and returns Result\nclass ClockInUseCase {\n  final EmployeeRepository _repository;\n\n  ClockInUseCase(this._repository);\n\n  Future<result appexception=\"\">> execute(\n    String employeeId,\n    DateTime time,\n  ) async {\n    try {\n      final employee = await _repository.findById(EmployeeId(employeeId));\n\n      if (employee == null) {\n        return Result.failure(AppException.notFound('Employee not found'));\n      }\n\n      employee.clockIn(time);\n      await _repository.save(employee);\n\n      return Result.success(employee);\n    } on DomainException catch (e) {\n      return Result.failure(AppException.businessRule(e.message));\n    } catch (e) {\n      return Result.failure(AppException.unknown(e.toString()));\n    }\n  }\n}\n<\/result><\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ presentation layer \u2014 converts result into UI state\n@riverpod\nclass EmployeeNotifier extends _$EmployeeNotifier {\n  @override\n  AsyncValue<employee> build() => const AsyncData(null);\n\n  Future<void> clockIn(String employeeId) async {\n    state = const AsyncLoading();\n\n    final result = await ref\n        .read(clockInUseCaseProvider)\n        .execute(employeeId, DateTime.now());\n\n    result.fold(\n      onSuccess: (employee) => state = AsyncData(employee),\n      onFailure: (error) => state = AsyncError(error, StackTrace.current),\n    );\n  }\n}\n<\/void><\/employee><\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ widget \u2014 renders state, owns nothing\nclass EmployeeClockInWidget extends ConsumerWidget {\n  @override\n  Widget build(BuildContext context, WidgetRef ref) {\n    final state = ref.watch(employeeNotifierProvider);\n\n    return state.when(\n      data: (employee) => employee != null\n          ? ClockInSuccess(employee: employee)\n          : const ClockInForm(),\n      loading: () => const LoadingIndicator(),\n      error: (error, _) => ErrorMessage(message: error.toString()),\n    );\n  }\n}\n<\/code><\/pre>\n<p>\u0628\u06c1\u0627\u0624 \u0644\u06a9\u06cc\u0631\u06cc \u0627\u0648\u0631 \u067e\u06cc\u0634 \u0642\u06cc\u0627\u0633\u06cc \u06c1\u06d2\u06d4<\/p>\n<ol>\n<li>\n<p>\u06cc\u0648\u0632\u0631 \u0627\u0646 \u067e\u0679 \u0679\u0631\u06af\u0631\u0632 \u06a9\u06cc\u0633\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06c1\u0645\u0627\u0631\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0645\u0639\u0627\u0645\u0644\u06d2 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0627\u0633\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0688\u0648\u0645\u06cc\u0646\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u06a9\u0633\u06cc \u0627\u0635\u0648\u0644 \u06a9\u06cc \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u0627\u06cc\u06a9 DomainException \u067e\u06be\u06cc\u0646\u06a9 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0627 \u0645\u0639\u0627\u0645\u0644\u06c1 \u0627\u0633\u06d2 \u067e\u06a9\u0691\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0646\u0648\u0679\u06cc\u0641\u0627\u0626\u0631 \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u0648 AsyncError \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0648\u06cc\u062c\u06cc\u0679 \u0627\u06cc\u06a9 \u063a\u0644\u0637\u06cc \u067e\u06cc\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u06a9\u0633\u06cc \u0628\u06be\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0631\u0639\u0627\u06cc\u062a \u0633\u06d2 \u0628\u0686\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u0648\u0631 \u0648\u06cc\u062c\u0679 \u06a9\u0633\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u0686\u06be\u0648\u062a\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-folder-structure\">\u0641\u0648\u0644\u0688\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a<\/h2>\n<p>\u0627\u0646 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0641\u0648\u0644\u0688\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a \u0642\u062f\u0631\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">lib\/\n  shared\/\n    core\/\n      errors\/\n        domain_exception.dart\n        app_exception.dart\n      result\/\n        result.dart\n      di\/\n        injection.dart\n      utils\/\n        date_utils.dart\n\n  features\/\n    employee\/\n      domain\/\n        entities\/\n          employee.dart\n        value_objects\/\n          employee_id.dart\n        repositories\/\n          employee_repository.dart\n        services\/\n          attendance_domain_service.dart\n        exceptions\/\n          employee_exceptions.dart\n\n      application\/\n        use_cases\/\n          clock_in_usecase.dart\n          clock_out_usecase.dart\n          get_employee_usecase.dart\n\n      infrastructure\/\n        datasources\/\n          employee_remote_datasource.dart\n          employee_local_datasource.dart\n        repositories\/\n          employee_repository_impl.dart\n        dtos\/\n          employee_dto.dart\n\n      presentation\/\n        notifier\/\n          employee_notifier.dart\n          employee_notifier.g.dart\n        state\/\n          employee_state.dart\n        pages\/\n          employee_dashboard_page.dart\n          clock_in_page.dart\n        widgets\/\n          employee_card.dart\n          clock_in_button.dart\n\n    payment\/\n      domain\/\n        entities\/\n          payment.dart\n        value_objects\/\n          money.dart\n          payment_reference.dart\n        repositories\/\n          payment_repository.dart\n        services\/\n          payment_verification_service.dart\n\n      application\/\n        use_cases\/\n          initiate_payment_usecase.dart\n          verify_payment_usecase.dart\n          refund_payment_usecase.dart\n\n      infrastructure\/\n        datasources\/\n          payment_remote_datasource.dart\n        repositories\/\n          payment_repository_impl.dart\n        dtos\/\n          payment_dto.dart\n\n      presentation\/\n        notifier\/\n          payment_notifier.dart\n          payment_notifier.g.dart\n        pages\/\n          payment_page.dart\n          payment_confirmation_page.dart\n        widgets\/\n          payment_summary_card.dart\n\n  main.dart\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>shared\/core<\/code> \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u0635\u0631\u0641 \u0648\u06c1\u06cc \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0641\u0646\u06a9\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0634\u06cc\u0626\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u06cc\u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645\u060c \u0646\u062a\u0627\u0626\u062c \u06a9\u06cc \u0642\u0633\u0645\u06cc\u06ba\u060c \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632\u060c \u0627\u0648\u0631 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u06a9\u06d2 \u0627\u0641\u0627\u062f\u06cc\u062a\u06d4 \u0628\u0627\u0642\u06cc \u0633\u0628 \u06a9\u0686\u06be \u0627\u0641\u0639\u0627\u0644 \u0645\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u062e\u0635\u0648\u0635\u06cc\u062a \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0639\u0645\u0648\u062f\u06cc \u0679\u06a9\u0691\u0627 \u06c1\u06d2\u06d4 \u0641\u06cc\u0686\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u062a\u06cc\u06ba \u0627\u0633 \u0641\u06cc\u0686\u0631 \u06a9\u06d2 \u0641\u0648\u0644\u0688\u0631 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u0648\u062c\u0648\u062f \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0639\u0645\u0644\u06d2 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u0628\u06cc\u0631\u0648\u0646\u06cc \u0633\u0641\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u06d4 <code>features\/employee<\/code> \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06cc\u0627 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u06d4<\/p>\n<h2 id=\"heading-real-world-example-one-the-employee-feature\">\u062d\u0642\u06cc\u0642\u06cc \u0632\u0646\u062f\u06af\u06cc \u06a9\u06cc \u0645\u062b\u0627\u0644 1: \u0645\u0644\u0627\u0632\u0645 \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644<\/h2>\n<p>\u0645\u0644\u0627\u0632\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0622\u067e \u06a9\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0642\u0648\u062a \u06a9\u06d2 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06cc \u062d\u0627\u0636\u0631\u06cc \u06a9\u06d2 \u067e\u0648\u0631\u06d2 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0627\u0645 \u067e\u0631 \u0622\u0646\u0627\u060c \u06a9\u0627\u0645 \u0686\u06be\u0648\u0691\u0646\u0627\u060c \u0634\u0641\u0679 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645\u060c \u062d\u0627\u0636\u0631\u06cc \u06a9\u0627 \u0631\u06cc\u06a9\u0627\u0631\u0688\u06d4<\/p>\n<h3 id=\"heading-the-domain\">\u0688\u0648\u0645\u06cc\u0646<\/h3>\n<pre><code class=\"language-dart\">\/\/ value objects\nclass EmployeeId {\n  final String value;\n\n  EmployeeId(this.value) {\n    if (value.isEmpty) throw DomainException('Employee ID cannot be empty');\n  }\n}\n\nclass ShiftDuration {\n  final Duration duration;\n\n  ShiftDuration(this.duration) {\n    if (duration.isNegative) {\n      throw DomainException('Shift duration cannot be negative');\n    }\n    if (duration.inHours > 16) {\n      throw DomainException('Shift duration cannot exceed 16 hours');\n    }\n  }\n}\n<\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ entity\nclass Employee {\n  final EmployeeId id;\n  final String name;\n  final String teamId;\n  DateTime? clockInTime;\n  DateTime? clockOutTime;\n\n  Employee({\n    required this.id,\n    required this.name,\n    required this.teamId,\n  });\n\n  void clockIn(DateTime time) {\n    if (isClockedIn) {\n      throw DomainException('Employee is already clocked in');\n    }\n    clockInTime = time;\n    clockOutTime = null;\n  }\n\n  void clockOut(DateTime time) {\n    if (!isClockedIn) {\n      throw DomainException('Employee is not clocked in');\n    }\n    if (time.isBefore(clockInTime!)) {\n      throw DomainException('Clock out time cannot be before clock in time');\n    }\n\n    final shift = ShiftDuration(time.difference(clockInTime!));\n    clockOutTime = time;\n  }\n\n  bool get isClockedIn => clockInTime != null && clockOutTime == null;\n\n  Duration? get currentShiftDuration {\n    if (!isClockedIn) return null;\n    return DateTime.now().difference(clockInTime!);\n  }\n}\n<\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ repository interface \u2014 in the domain layer\nabstract class EmployeeRepository {\n  Future<employee> findById(EmployeeId id);\n  Future<list>> findByTeam(String teamId);\n  Future<void> save(Employee employee);\n}\n<\/void><\/list><\/employee><\/code><\/pre>\n<h3 id=\"heading-the-application-layer\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0631\u062a<\/h3>\n<pre><code class=\"language-dart\">class ClockInUseCase {\n  final EmployeeRepository _repository;\n\n  ClockInUseCase(this._repository);\n\n  Future<result appexception=\"\">> execute(String employeeId) async {\n    try {\n      final id = EmployeeId(employeeId);\n      final employee = await _repository.findById(id);\n\n      if (employee == null) {\n        return Result.failure(\n          AppException.notFound('Employee $employeeId not found'),\n        );\n      }\n\n      employee.clockIn(DateTime.now());\n      await _repository.save(employee);\n\n      return Result.success(employee);\n    } on DomainException catch (e) {\n      return Result.failure(AppException.businessRule(e.message));\n    } catch (e) {\n      return Result.failure(AppException.unknown(e.toString()));\n    }\n  }\n}\n\nclass ClockOutUseCase {\n  final EmployeeRepository _repository;\n\n  ClockOutUseCase(this._repository);\n\n  Future<result appexception=\"\">> execute(String employeeId) async {\n    try {\n      final id = EmployeeId(employeeId);\n      final employee = await _repository.findById(id);\n\n      if (employee == null) {\n        return Result.failure(\n          AppException.notFound('Employee $employeeId not found'),\n        );\n      }\n\n      employee.clockOut(DateTime.now());\n      await _repository.save(employee);\n\n      return Result.success(employee);\n    } on DomainException catch (e) {\n      return Result.failure(AppException.businessRule(e.message));\n    } catch (e) {\n      return Result.failure(AppException.unknown(e.toString()));\n    }\n  }\n}\n<\/result><\/result><\/code><\/pre>\n<h3 id=\"heading-the-infrastructure-layer\">\u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a<\/h3>\n<pre><code class=\"language-dart\">class EmployeeDTO {\n  final String id;\n  final String name;\n  final String teamId;\n  final String? clockInTime;\n  final String? clockOutTime;\n\n  const EmployeeDTO({\n    required this.id,\n    required this.name,\n    required this.teamId,\n    this.clockInTime,\n    this.clockOutTime,\n  });\n\n  factory EmployeeDTO.fromJson(Map<string dynamic=\"\"> json) {\n    return EmployeeDTO(\n      id: json['id'] as String,\n      name: json['name'] as String,\n      teamId: json['team_id'] as String,\n      clockInTime: json['clock_in_time'] as String?,\n      clockOutTime: json['clock_out_time'] as String?,\n    );\n  }\n\n  Employee toDomain() {\n    final employee = Employee(\n      id: EmployeeId(id),\n      name: name,\n      teamId: teamId,\n    );\n\n    if (clockInTime != null) {\n      employee.clockIn(DateTime.parse(clockInTime!));\n    }\n    if (clockOutTime != null) {\n      employee.clockOut(DateTime.parse(clockOutTime!));\n    }\n\n    return employee;\n  }\n\n  Map<string dynamic=\"\"> toJson() {\n    return {\n      'id': id,\n      'name': name,\n      'team_id': teamId,\n      'clock_in_time': clockInTime,\n      'clock_out_time': clockOutTime,\n    };\n  }\n}\n\nclass EmployeeRepositoryImpl implements EmployeeRepository {\n  final EmployeeRemoteDataSource _remote;\n\n  EmployeeRepositoryImpl(this._remote);\n\n  @override\n  Future<employee> findById(EmployeeId id) async {\n    final dto = await _remote.fetchEmployee(id.value);\n    return dto?.toDomain();\n  }\n\n  @override\n  Future<list>> findByTeam(String teamId) async {\n    final dtos = await _remote.fetchTeamEmployees(teamId);\n    return dtos.map((dto) => dto.toDomain()).toList();\n  }\n\n  @override\n  Future<void> save(Employee employee) async {\n    final dto = EmployeeDTO(\n      id: employee.id.value,\n      name: employee.name,\n      teamId: employee.teamId,\n      clockInTime: employee.clockInTime?.toIso8601String(),\n      clockOutTime: employee.clockOutTime?.toIso8601String(),\n    );\n    await _remote.updateEmployee(dto);\n  }\n}\n<\/void><\/list><\/employee><\/string><\/string><\/code><\/pre>\n<h3 id=\"heading-the-presentation-layer\">\u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a<\/h3>\n<pre><code class=\"language-csharp\">@riverpod\nclass EmployeeNotifier extends _$EmployeeNotifier {\n  @override\n  AsyncValue<employee> build() => const AsyncData(null);\n\n  Future<void> clockIn(String employeeId) async {\n    state = const AsyncLoading();\n\n    final result = await ref\n        .read(clockInUseCaseProvider)\n        .execute(employeeId);\n\n    result.fold(\n      onSuccess: (employee) => state = AsyncData(employee),\n      onFailure: (error) => state = AsyncError(error, StackTrace.current),\n    );\n  }\n\n  Future<void> clockOut(String employeeId) async {\n    state = const AsyncLoading();\n\n    final result = await ref\n        .read(clockOutUseCaseProvider)\n        .execute(employeeId);\n\n    result.fold(\n      onSuccess: (employee) => state = AsyncData(employee),\n      onFailure: (error) => state = AsyncError(error, StackTrace.current),\n    );\n  }\n}\n<\/void><\/void><\/employee><\/code><\/pre>\n<pre><code class=\"language-csharp\">class EmployeeDashboardPage extends ConsumerWidget {\n  final String employeeId;\n\n  const EmployeeDashboardPage({required this.employeeId, super.key});\n\n  @override\n  Widget build(BuildContext context, WidgetRef ref) {\n    final state = ref.watch(employeeNotifierProvider);\n\n    return Scaffold(\n      appBar: AppBar(title: const Text('Employee Dashboard')),\n      body: state.when(\n        data: (employee) => employee != null\n            ? EmployeeDashboardContent(\n                employee: employee,\n                onClockIn: () => ref\n                    .read(employeeNotifierProvider.notifier)\n                    .clockIn(employeeId),\n                onClockOut: () => ref\n                    .read(employeeNotifierProvider.notifier)\n                    .clockOut(employeeId),\n              )\n            : const EmptyDashboard(),\n        loading: () => const Center(child: CircularProgressIndicator()),\n        error: (error, _) => ErrorView(message: error.toString()),\n      ),\n    );\n  }\n}\n<\/code><\/pre>\n<p>\u0648\u06cc\u062c\u06cc\u0679 \u06a9\u0644\u0627\u06a9\u0646\u0632\u060c EmployeeId \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679\u060c \u06cc\u0627 DomainExceptions \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2\u06d4 \u0631\u06cc\u0627\u0633\u062a \u06a9\u0648 \u067e\u06cc\u0634 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u0637\u0644\u0627\u0639 \u062f\u06c1\u0646\u062f\u06c1 \u06a9\u0648 \u0633\u0648\u0646\u067e\u06cc\u06ba\u06d4 \u0628\u0627\u0642\u06cc \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0627\u06ba \u0646\u06cc\u0686\u06d2 \u06a9\u06cc \u062a\u06c1\u0648\u06ba \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-real-world-example-two-the-payment-feature\">\u062d\u0642\u06cc\u0642\u06cc \u0632\u0646\u062f\u06af\u06cc \u06a9\u06cc \u0645\u062b\u0627\u0644 2: \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062a\u0642\u0631\u06cc\u0628<\/h2>\n<p>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0641\u0646\u06a9\u0634\u0646 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u067e\u0648\u0631\u06d2 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u0634\u0631\u0648\u0639\u0627\u062a\u060c \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af\u060c \u062a\u0635\u062f\u06cc\u0642\u060c \u0627\u0648\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc \u0633\u06d2 \u0646\u0645\u0679\u0646\u06d2 \u06a9\u06d2\u06d4 \u06cc\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0688\u0648\u0645\u06cc\u0646 \u06c1\u06d2 \u062c\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0645\u0627\u0688\u0644 \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u0628\u06c1\u062a \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-domain\">\u0688\u0648\u0645\u06cc\u0646<\/h3>\n<pre><code class=\"language-csharp\">enum PaymentStatus {\n  pending,\n  processing,\n  completed,\n  failed,\n  refunded,\n}\n\nclass PaymentReference {\n  final String value;\n\n  PaymentReference(this.value) {\n    if (value.isEmpty) {\n      throw DomainException('Payment reference cannot be empty');\n    }\n    if (!RegExp(r'^[A-Z0-9]{8,16}$').hasMatch(value)) {\n      throw DomainException('Invalid payment reference format');\n    }\n  }\n}\n\nclass Payment {\n  final PaymentReference reference;\n  final Money amount;\n  final String payerId;\n  final String recipientId;\n  PaymentStatus status;\n  String? failureReason;\n  DateTime? processedAt;\n\n  Payment({\n    required this.reference,\n    required this.amount,\n    required this.payerId,\n    required this.recipientId,\n    this.status = PaymentStatus.pending,\n  });\n\n  void startProcessing() {\n    if (status != PaymentStatus.pending) {\n      throw DomainException(\n        'Cannot process payment: current status is ${status.name}',\n      );\n    }\n    status = PaymentStatus.processing;\n  }\n\n  void complete() {\n    if (status != PaymentStatus.processing) {\n      throw DomainException(\n        'Cannot complete payment: current status is ${status.name}',\n      );\n    }\n    status = PaymentStatus.completed;\n    processedAt = DateTime.now();\n  }\n\n  void fail(String reason) {\n    if (status != PaymentStatus.processing) {\n      throw DomainException(\n        'Cannot fail payment: current status is ${status.name}',\n      );\n    }\n    status = PaymentStatus.failed;\n    failureReason = reason;\n  }\n\n  void refund() {\n    if (status != PaymentStatus.completed) {\n      throw DomainException(\n        'Cannot refund payment: only completed payments can be refunded',\n      );\n    }\n    status = PaymentStatus.refunded;\n  }\n\n  bool get canBeRefunded => status == PaymentStatus.completed;\n  bool get isTerminal =>\n      status == PaymentStatus.completed ||\n      status == PaymentStatus.failed ||\n      status == PaymentStatus.refunded;\n}\n<\/code><\/pre>\n<p>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0627\u062f\u0627\u0631\u06c1 \u062a\u0645\u0627\u0645 \u062f\u0631\u0633\u062a \u0631\u06cc\u0627\u0633\u062a\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0646 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u067e\u0631 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2 \u0648\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc\u06ba\u06d4 \u0646\u0627\u0645\u06a9\u0645\u0644 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0627\u06ba \u0648\u0627\u067e\u0633 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc\u06ba\u06d4 \u0627\u0648\u0631 \u0646\u0627\u06a9\u0627\u0645 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0627\u06ba \u0645\u06a9\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0642\u0648\u0627\u0639\u062f \u06c1\u0633\u062a\u06cc \u067e\u0631 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0631\u06cc\u0627\u0633\u062a \u06a9\u06cc \u06c1\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-application-layer\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0631\u062a<\/h3>\n<pre><code class=\"language-csharp\">class InitiatePaymentUseCase {\n  final PaymentRepository _repository;\n\n  InitiatePaymentUseCase(this._repository);\n\n  Future<result appexception=\"\">> execute({\n    required String reference,\n    required double amount,\n    required String currency,\n    required String payerId,\n    required String recipientId,\n  }) async {\n    try {\n      final payment = Payment(\n        reference: PaymentReference(reference),\n        amount: Money(amount: amount, currency: currency),\n        payerId: payerId,\n        recipientId: recipientId,\n      );\n\n      payment.startProcessing();\n      await _repository.save(payment);\n\n      return Result.success(payment);\n    } on DomainException catch (e) {\n      return Result.failure(AppException.businessRule(e.message));\n    } catch (e) {\n      return Result.failure(AppException.unknown(e.toString()));\n    }\n  }\n}\n\nclass VerifyPaymentUseCase {\n  final PaymentRepository _repository;\n  final PaymentVerificationService _verificationService;\n\n  VerifyPaymentUseCase(this._repository, this._verificationService);\n\n  Future<result appexception=\"\">> execute(String reference) async {\n    try {\n      final ref = PaymentReference(reference);\n      final payment = await _repository.findByReference(ref);\n\n      if (payment == null) {\n        return Result.failure(\n          AppException.notFound('Payment $reference not found'),\n        );\n      }\n\n      final isVerified = await _verificationService.verify(payment);\n\n      if (isVerified) {\n        payment.complete();\n      } else {\n        payment.fail('Verification failed');\n      }\n\n      await _repository.save(payment);\n      return Result.success(payment);\n    } on DomainException catch (e) {\n      return Result.failure(AppException.businessRule(e.message));\n    } catch (e) {\n      return Result.failure(AppException.unknown(e.toString()));\n    }\n  }\n}\n<\/result><\/result><\/code><\/pre>\n<h3 id=\"heading-the-presentation-layer\">\u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a<\/h3>\n<pre><code class=\"language-csharp\">@riverpod\nclass PaymentNotifier extends _$PaymentNotifier {\n  @override\n  AsyncValue<payment> build() => const AsyncData(null);\n\n  Future<void> initiatePayment({\n    required String reference,\n    required double amount,\n    required String currency,\n    required String payerId,\n    required String recipientId,\n  }) async {\n    state = const AsyncLoading();\n\n    final result = await ref.read(initiatePaymentUseCaseProvider).execute(\n          reference: reference,\n          amount: amount,\n          currency: currency,\n          payerId: payerId,\n          recipientId: recipientId,\n        );\n\n    result.fold(\n      onSuccess: (payment) => state = AsyncData(payment),\n      onFailure: (error) => state = AsyncError(error, StackTrace.current),\n    );\n  }\n\n  Future<void> verifyPayment(String reference) async {\n    state = const AsyncLoading();\n\n    final result = await ref\n        .read(verifyPaymentUseCaseProvider)\n        .execute(reference);\n\n    result.fold(\n      onSuccess: (payment) => state = AsyncData(payment),\n      onFailure: (error) => state = AsyncError(error, StackTrace.current),\n    );\n  }\n}\n<\/void><\/void><\/payment><\/code><\/pre>\n<pre><code class=\"language-csharp\">class PaymentPage extends ConsumerWidget {\n  const PaymentPage({super.key});\n\n  @override\n  Widget build(BuildContext context, WidgetRef ref) {\n    final state = ref.watch(paymentNotifierProvider);\n\n    return Scaffold(\n      appBar: AppBar(title: const Text('Payment')),\n      body: state.when(\n        data: (payment) {\n          if (payment == null) return const PaymentForm();\n          return PaymentStatusView(payment: payment);\n        },\n        loading: () => const Center(child: CircularProgressIndicator()),\n        error: (error, _) => PaymentErrorView(message: error.toString()),\n      ),\n    );\n  }\n}\n<\/code><\/pre>\n<h2 id=\"heading-cross-feature-communication\">\u0627\u0646\u0679\u0631 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0648\u0627\u0635\u0644\u0627\u062a<\/h2>\n<p>\u0622\u0632\u0627\u062f \u0627\u0641\u0639\u0627\u0644 \u06a9\u0648 \u0644\u0627\u0645\u062d\u0627\u0644\u06c1 \u0645\u0648\u0627\u0635\u0644\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0644\u0627\u0632\u0645 \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u06a9\u0648 \u06cc\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06c1\u0648\u0626\u06cc \u06c1\u06d2\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u067e\u06d2 \u0631\u0648\u0644 \u06a9\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0639\u0645\u0644\u06d2 \u06a9\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0645\u0637\u0644\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u0679\u0631 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062e\u0648\u062f \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-1-features-never-import-directly-from-each-others-internal-layers\">1. \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06cc \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062a\u06c1\u0648\u06ba \u0633\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0646\u06c1\u06cc\u06ba \u06a9\u06be\u06cc\u0646\u0686\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0645\u0644\u0627\u0632\u0645 \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u0627\u0633 \u0633\u06d2 \u0646\u06c1\u06cc\u06ba \u0622\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba: <code>features\/payment\/domain\/entities\/payment.dart<\/code>. \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u062f\u0631\u0622\u0645\u062f\u0627\u062a \u0633\u062e\u062a \u062c\u0648\u0691\u06d2 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u06cc\u0679\u06cc \u06a9\u06d2 \u0645\u0642\u0635\u062f \u06a9\u0648 \u0634\u06a9\u0633\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-2-shared-domain-concepts-live-in-sharedcore\">2. \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2: <code>shared\/core<\/code>.<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0645\u0644\u0627\u0632\u0645 \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: <code>UserId<\/code> \u06cc\u0627 <code>Money<\/code> \u0642\u062f\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679\u060c \u062a\u0635\u0648\u0631 \u0632\u0646\u062f\u06c1 \u06c1\u06d2 <code>shared\/core\/domain<\/code> \u062f\u0648\u0646\u0648\u06ba \u0627\u0641\u0639\u0627\u0644 \u0648\u06c1\u0627\u06ba \u0633\u06d2 \u0644\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-3-cross-feature-communication-happens-through-defined-interfaces\">3. \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0648\u0627\u0635\u0644\u062a \u0645\u062a\u0639\u06cc\u0646 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u067e\u06d2 \u0631\u0648\u0644 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u06d4 <code>EmployeeService<\/code> \u0645\u062a\u0639\u06cc\u0646 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 <code>shared\/core<\/code>. \u0639\u0645\u0644\u06d2 \u06a9\u06cc \u062a\u0642\u0631\u06cc\u0628 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u062c\u06be\u06d2 \u0646\u06c1\u06cc\u06ba \u0645\u0639\u0644\u0648\u0645 \u06a9\u06c1 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u06a9\u06cc\u0627 \u0641\u0639\u0627\u0644\u06cc\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc \u06af\u0626\u06cc \u062a\u06be\u06cc\u06d4<\/p>\n<h3 id=\"heading-4-events-and-domain-notifications-use-a-shared-event-bus\">4. \u0627\u06cc\u0648\u0646\u0679 \u0627\u0648\u0631 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u06cc\u0648\u0646\u0679 \u0628\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0634\u0627\u0626\u0639 \u06a9\u06cc \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4 <code>PaymentCompleted<\/code> \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0641\u0646\u06a9\u0634\u0646 \u062c\u0633 \u06a9\u0648 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u0627\u0633 \u0627\u06cc\u0648\u0646\u0679 \u06a9\u0648 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u0646 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0633\u0646\u0646\u06d2 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0633\u06d2 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-patterns-that-enhance-modularization\">\u0646\u0645\u0648\u0646\u06d2 \u062c\u0648 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0679\u06cc \u06a9\u0648 \u0628\u0691\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/h2>\n<p>\u06a9\u0686\u06be \u0688\u06cc\u0632\u0627\u0626\u0646 \u067e\u06cc\u0679\u0631\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u067e\u0631\u0648\u0679\u0648\u0679\u0627\u0626\u067e \u067e\u06cc\u0679\u0631\u0646<\/strong> \u06cc\u06c1 \u0645\u0644\u0627\u0632\u0645 \u0641\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u0645\u0644\u0627\u0632\u0645 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u06ba \u0645\u062e\u062a\u0644\u0641 \u06a9\u0631\u062f\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0644\u0627\u0632\u0645 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679 \u0645\u0644\u0627\u0632\u0645 \u06a9\u06cc \u06a9\u0644\u0648\u0646\u0646\u06af \u0627\u0633\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u0645\u062b\u0627\u0644 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0644\u0648\u0646 \u06a9\u06cc \u0631\u06cc\u0627\u0633\u062a\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0646 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-csharp\">class Employee {\n  Employee clone() {\n    return Employee(\n      id: EmployeeId('${id.value}_copy_${DateTime.now().millisecondsSinceEpoch}'),\n      name: name,\n      teamId: teamId,\n    );\n  }\n}\n<\/code><\/pre>\n<p><strong>\u0633\u0646\u06af\u0644\u0679\u0646 \u067e\u06cc\u0679\u0631\u0646<\/strong> \u06cc\u06c1 \u062f\u0631\u0627\u0635\u0644 \u0645\u0646\u0641\u0631\u062f \u0688\u0648\u0645\u06cc\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u062a\u0648\u062b\u06cc\u0642 \u0634\u062f\u06c1 \u0635\u0627\u0631\u0641 \u0633\u0646\u06af\u0644\u0679\u0646 \u06c1\u06d2\u06d4 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0633\u06cc\u0634\u0646 \u0633\u0646\u06af\u0644\u0679\u0646 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06c1\u06cc\u06ba\u06d4 <code>shared\/core<\/code> \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u06a9\u0631\u0627\u0633 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0630\u062e\u06cc\u0631\u06c1 \u067e\u06cc\u0679\u0631\u0646<\/strong> \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0627\u0641\u0639\u0627\u0644 \u06a9\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u062a\u062c\u0631\u06cc\u062f \u06a9\u06cc \u0631\u06cc\u0691\u06be \u06a9\u06cc \u06c1\u0688\u06cc \u06c1\u06d2\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u0631\u062a \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u067e\u0631\u062a \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u06a9\u06cc\u0627 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u0628\u0635\u0631 \u067e\u06cc\u0679\u0631\u0646\u060c<\/strong> \u0688\u0648\u0645\u06cc\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0633\u062e\u062a \u062c\u0648\u0691\u06d2 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u0648\u0627\u0635\u0644\u062a \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u0648 \u0634\u0627\u0626\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u0627\u06c1\u0645 \u062d\u0627\u0644\u062a\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0641\u0646\u06a9\u0634\u0646\u0632 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u06cc\u0648\u0646\u0679 \u0628\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633 \u06a9\u0648 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-scaling-to-large-teams\">\u0628\u0691\u06cc \u0679\u06cc\u0645\u0648\u06ba \u062a\u06a9 \u067e\u06cc\u0645\u0627\u0646\u06c1<\/h2>\n<p>\u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0628\u0691\u06be\u062a\u06cc \u06c1\u06d2 \u0641\u06cc\u0686\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0642\u06cc\u0645\u062a\u06cc \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06c1\u0645\u0627\u0631\u06d2 \u067e\u0627\u0633 10 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u0645\u062e\u062a\u0644\u0641 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06c1\u0631 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u062e\u0648\u062f \u0645\u062e\u062a\u0627\u0631 \u0646\u0648\u0639\u06cc\u062a \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u06d2 \u0645\u0633\u062a\u0642\u0644 \u062a\u0646\u0627\u0632\u0639\u0627\u062a \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 30 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06cc\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u0627\u06cc\u06a9 \u0639\u0644\u06cc\u062d\u062f\u06c1 \u0688\u0627\u0631\u0679 \u067e\u06cc\u06a9\u062c \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0639\u0645\u0644\u06d2 \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: <code>packages\/employee<\/code>. \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062a\u0642\u0631\u06cc\u0628 \u06c1\u06d2 <code>packages\/payment<\/code>. \u0648\u06c1 \u0627\u0634\u062a\u0631\u0627\u06a9 \u067e\u0631 \u0628\u06be\u0631\u0648\u0633\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>packages\/core<\/code> \u067e\u06cc\u06a9\u062c \u06c1\u0631 \u067e\u06cc\u06a9\u062c \u0645\u06cc\u06ba \u0645\u0646\u0641\u0631\u062f \u0645\u0648\u0627\u062f \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>pubspec.yaml<\/code>\u0622\u067e \u0627\u067e\u0646\u06cc \u062c\u0627\u0646\u0686 \u062e\u0648\u062f \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 \u0648\u0631\u0698\u0646\u0632 \u06a9\u0648 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u0638\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u0627 \u0627\u06af\u0644\u0627 \u0645\u0631\u062d\u0644\u06c1 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0637\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0641\u0631\u0633\u0679 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>50 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u067e\u0648\u0631\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u0645\u0627\u0644\u06a9 \u0628\u0646 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u06cc \u0627\u06cc\u06a9 \u0679\u06cc\u0645 \u06a9\u06cc \u0645\u0644\u06a9\u06cc\u062a\u06d4 <code>packages\/employee<\/code>. \u06cc\u06c1 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06cc \u0645\u0644\u06a9\u06cc\u062a \u06c1\u06d2\u06d4 <code>packages\/payment<\/code>. \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0627\u0641\u0639\u0627\u0644 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0639\u0627\u06c1\u062f\u06c1 <code>packages\/core<\/code>\u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 API \u06a9\u06cc \u062d\u062f \u0628\u0646 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0679\u06cc\u0645\u06cc\u06ba \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0641\u06cc\u0686\u0631 \u067e\u06cc\u06a9\u062c \u06a9\u06d2 \u0646\u0626\u06d2 \u0648\u0631\u0698\u0646 \u062c\u0627\u0631\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06cc \u0679\u06cc\u0645\u06cc\u06ba \u0627\u0633 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u062c \u06c1\u0645 \u062c\u0633 \u0641\u0648\u0644\u0688\u0631 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u06c1\u0645\u0627\u0631\u06d2 50 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u0627\u06cc\u06a9 \u067e\u06cc\u06a9\u06cc\u062c \u067e\u0631 \u0645\u0628\u0646\u06cc \u0645\u0648\u0646\u0648 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0645\u06cc\u06ba \u062a\u0648\u0633\u06cc\u0639 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0635\u0648\u0631 \u0646\u06c1\u06cc\u06ba \u0628\u062f\u0644\u062a\u0627\u06d4 \u0633\u0631\u062d\u062f\u06cc\u06ba \u0648\u0627\u0636\u062d \u06c1\u0648 \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u0641\u06cc\u0686\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u0641\u0648\u0644\u0688\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a \u06a9\u06cc \u0686\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc \u06a9\u0627 \u0641\u06cc\u0635\u0644\u06c1 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u0645\u0639\u06cc\u0627\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u0648\u062a\u06c1 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u062a\u0631\u0642\u06cc \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06d2 \u0644\u06cc\u0626\u0631\u0646\u06af \u0631\u0648\u0644\u0632 \u0627\u0648\u0631 \u0688\u06cc \u0688\u06cc \u0688\u06cc \u06a9\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644\u0646\u06af \u0627\u0644\u0641\u0627\u0638 \u06a9\u0648 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0641\u0646\u06a9\u0634\u0646\u0644 \u0644\u06cc\u0648\u0644 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0627\u067e\u0646\u06d2 \u0688\u0648\u0645\u06cc\u0646\u060c \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0642\u0648\u0627\u0639\u062f\u060c \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc\u060c \u0627\u0648\u0631 UI \u06a9\u0627 \u0645\u0627\u0644\u06a9 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0633\u0627\u0648 \u06cc\u0627 \u067e\u06be\u06cc\u0644\u0627\u0624 \u0646\u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u067e\u0648\u0631\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0633\u0645\u062c\u06be\u06d2 \u0628\u063a\u06cc\u0631 \u06c1\u0631 \u0641\u06cc\u0686\u0631 \u06a9\u0648 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062c\u0627\u0646\u0686 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0644\u0627\u0632\u0645 \u06a9\u0627 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0633\u06cc \u0627\u062f\u0627\u0631\u06d2 \u067e\u0631 \u062d\u0627\u0636\u0631\u06cc \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0627\u0641\u0639\u0627\u0644 \u06a9\u0633\u06cc \u06c1\u0633\u062a\u06cc \u067e\u0631 \u0679\u0631\u0627\u0646\u0632\u06cc\u06a9\u0634\u0646 \u0627\u0633\u0679\u06cc\u0679 \u0679\u0631\u0627\u0646\u0632\u06cc\u0634\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u063a\u0644\u0637 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0688\u0648\u0645\u06cc\u0646 \u0645\u06cc\u06ba \u062f\u0627\u062e\u0644 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0648\u06cc\u0644\u06cc\u0648 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u0633\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u062a\u06a9 \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u067e\u06be\u06cc\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0627\u06cc\u06a9 \u06c1\u06cc \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u0627 \u0646\u0645\u0648\u0646\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u06cc\u0633\u06d2 \u06c1\u06cc \u0639\u0645\u0644\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0626\u06d2 \u062a\u0642\u0627\u0636\u06d2 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633\u0679\u0627\u0641 \u0641\u0648\u0644\u0688\u0631 \u06a9\u06be\u0648\u0644\u06cc\u06ba \u0627\u0648\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u0648\u06c1\u06cc \u0631\u06c1\u06d2 \u06af\u06cc\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0645\u06cc\u06ba \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0646\u06cc\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0634\u0627\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u0627 \u0641\u0648\u0644\u0688\u0631 \u06a9\u06be\u0648\u0644\u06cc\u06ba \u0627\u0648\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u06a9\u0631\u06cc\u06ba\u06d4 \u0639\u0645\u0644\u06d2 \u06a9\u06d2 \u06a9\u0627\u0645 \u0648\u06c1\u06cc \u0631\u06c1\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u0679\u06cc\u0646\u0688 \u0644\u0648\u0646 \u06a9\u0627 \u0627\u0635\u0644 \u0645\u0637\u0644\u0628 \u06cc\u06c1\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0635\u0631\u0641 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0641\u0648\u0644\u0688\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0639\u0645\u0648\u062f\u06cc \u0679\u06a9\u0691\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u067e\u0646\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0627 \u0645\u0627\u0644\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u0633\u06cc \u06a9\u0648\u0626\u06cc \u0686\u06cc\u0632 \u0634\u06cc\u0626\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u062c\u0633 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0631\u0627\u0626\u0632\u06cc\u0634\u0646 \u06c1\u06d2\u06d4 \u0627\u0633 \u0637\u0631\u062d \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0633 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u0648 \u062a\u0648\u0691\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u06cc\u06a9 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0633\u06d2 \u067e\u0686\u0627\u0633 \u062a\u06a9 \u0633\u06a9\u06cc\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0648\u0688\u0646\u06af \u06a9\u0627 \u0645\u0632\u06c1 \u0644\u06cc\u06ba !!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0679\u06cc\u0645 \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u06a9\u0627 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0688\u06be\u0627\u0646\u0686\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 20 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0644\u0648\u06af\u0648\u06ba \u06a9\u06cc \u0627\u06cc\u06a9 \u0628\u0691\u06cc \u0679\u06cc\u0645 \u06c1\u0648 \u062c\u0648 \u0633\u0628 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062d\u0635\u06c1 \u0688\u0627\u0644 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u061f \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688\u0628\u06cc\u0633 \u06a9\u0648 \u062f\u0628\u0644\u06cc \u067e\u062a\u0644\u06cc \u0627\u0648\u0631 \u06a9\u0645\u067e\u06cc\u06a9\u0679 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-28671","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=28671"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28671\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=28671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=28671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=28671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}