সরবরাহকারী মূল্য তালিকা ও চুক্তি ব্যবস্থাপনার জন্য একটি ওয়েব অ্যাপ তৈরি করুন
ধাপে ধাপে পরিকল্পনা: সরবরাহকারী মূল্য তালিকা ও চুক্তি ব্যবস্থাপনায় একটি ওয়েব অ্যাপ গড়ে তোলা — ইম্পোর্ট, ভ্যালিডেশন, অনুমোদন, নবায়ন, অডিট ট্রেইল এবং নিরাপদ ব্যবহারকারী অ্যাক্সেস সহ।

অ্যাপটি কী সমস্যা সমাধান করবে (আর কার জন্য)
অধিকাংশ সরবরাহকারী মূল্য ও চুক্তির বিশৃঙ্খলা একই রকম দেখায়: মূল্য তালিকা ইমেইল করা স্প্রেডশিটে থাকে, “final_FINAL” পিডিএফ শেয়ারড ড্রাইভে পড়ে যায়, এবং কেউ পুরোপুরি নিশ্চিত নয় কোন শর্তগুলো বর্তমান। ফলাফলগুলো পূর্বানুমিত—অর্ডারে পুরনো দাম ব্যবহার, সরবরাহকারীদের সঙ্গে অপ্রয়োজনীয় বিবাদ, এবং অনুচিতভাবে মিস হওয়া নবায়ন।
ব্যবসায়িক সমস্যাগুলো যা ঠিক করতে হবে
একটি ভালো ওয়েব অ্যাপ হওয়া উচিত সরবরাহকারী মূল্য তালিকা এবং চুক্তি-এর জন্য একটি কেন্দ্রীয় সত্যসূত্র স্থাপন করা এবং পরিবর্তনগুলোকে শেষ-কৃত পর্যন্ত ট্রেস করা। এটি কমাবে:
- স্প্রেডশিট, ERP, এবং ইনবক্সের মাঝে ম্যানুয়াল কপি-পেস্ট
- পুরোনো ভার্শন থেকে সৃষ্ট মূল্য ত্রুটি
- মিস হওয়া নবায়ন এবং নোটিশ পিরিয়ড
- সর্বশেষ স্বাক্ষরিত ডকুমেন্ট বা সংশোধনী খুঁজতে সময় খরচ
অ্যাপটি কার জন্য
সিস্টেম ডিজাইন করুন সেসব মানুষের চারপাশে যারা প্রতি সপ্তাহে মূল্য এবং শর্ত নিয়ে কাজ করে:
- Procurement: মূল্য তালিকা ইম্পোর্ট করে, আপডেট নিয়ে আলোচনা করে, কার্যকর তারিখ ট্র্যাক করে
- Finance/AP: চালানকৃত দাম যাচাই করে, মুদ্রা, ইউনিট, কর/ফি চেক করে
- Legal/Compliance: স্বাক্ষরিত চুক্তি, সংশোধনী, প্রয়োজনীয় ধারা সংরক্ষণ করে
- Approvers (management): মূল্য/শর্ত পরিবর্তন পর্যালোচনা ও অনুমোদন করে
- Admins: ব্যবহারকারী, রোল, সরবরাহকারী মাস্টার ডেটা, টেমপ্লেট পরিচালনা করে
সাফল্যের মেট্রিক্স যা দেখায় এটি কাজ করছে
শুরুর দিকে কয়েকটি পরিমেয় লক্ষ্যের উপর ফোকাস করুন:
- মূল্য আপডেট প্রকাশের সময় (উদাহরণ: ২ দিন থেকে ২ ঘন্টায় নামানো)
- ইম্পোর্ট ত্রুটি হার এবং প্রতিটি আপলোডে ম্যানুয়াল সংশোধনের সংখ্যা
- নবায়ন রিমাইন্ডার হিট রেট (% চুক্তি যা নোটিশ ডেডলাইনের আগে অনুস্মারক পেয়েছে)
- মূল্য অসমতা হার (চালান/PO মিসম্যাচ যা দাম বৈধতার সাথে সম্পর্কিত)
"ডান শেষ" মানে কী: প্রথম রিলিজ বনাম পরে
প্রথম রিলিজে লক্ষ্য করুন কেন্দ্রিক সরবরাহকারী রেকর্ড, মূল্য তালিকা ইম্পোর্ট ও ভ্যালিডেশন, চুক্তি সংরক্ষণ মূল তারিখসহ, মৌলিক অনুমোদন, সার্চ, এবং একটি অডিট ট্রেইল।
পরে যোগ করুন গভীর ERP ইন্টিগ্রেশন, ধারা লাইব্রেরি, স্বয়ংক্রিয় চালান মিলিং, মাল্টি-এন্টিটি সমর্থন, এবং উন্নত রিপোর্টিং ড্যাশবোর্ড।
প্রয়োজনীয়তা এবং ওয়ার্কফ্লো ম্যাপিং
স্ক্রিন বা টেবিল খসড়া আঁকার আগে, ম্যাপ করুন কীভাবে বাস্তবে ঘটে: সরবরাহকারী একটি মূল্য তালিকা পাঠানোর মুহূর্ত থেকে কেউ সেটাতে অর্ডার দেয়ার মুহূর্ত পর্যন্ত। এটি সাধারণ "ডকুমেন্ট রেপোজিটরি" তৈরি করা থেকে রোধ করবে যখন প্রকৃতপক্ষে আপনার দরকার একটি নিয়ন্ত্রিত মূল্য নির্ধারণ ব্যবস্থা।
বর্তমান ওয়ার্কফ্লো ম্যাপ করুন (as-is)
প্রকৃত কোনো উদাহরণ নিয়ে Procurement, Finance, এবং Legal-এর সাথে হাঁটুন। প্রতিটি ধাপে হ্যান্ডঅফ এবং আর্টিফ্যাক্ট ধরুন:
- মূল্য তালিকা গ্রহণ (ইমেইল, পোর্টাল, স্প্রেডশিট, EDI) → গ্রহণের তারিখ ও উৎস লগ করুন
- পর্যালোচনা ও দর-দরিদ্দা → প্রশ্ন, কাউন্টার-অফার, সম্মত পরিবর্তন রেকর্ড করুন
- মূল্য ও শর্ত অনুমোদন → সিদ্ধান্ত গ্রহণের পয়েন্ট ও প্রয়োজনীয় স্বাক্ষর চিহ্নিত করুন
- চুক্তি স্বাক্ষর ও সংরক্ষণ → শর্তগুলোকে কার্যকর মূল্য তালিকার সাথে লিংক করুন
- অপারেট ও নবায়ন → মেয়াদসমাপ্তি, মূল্য পরিবর্তন, এবং ব্যতিক্রম মনিটর করুন
একটি সাধারণ swimlane ডায়াগ্রাম (Supplier → Buyer/Procurement → Legal → Finance → Operations) প্রায়ই যথেষ্ট।
মূল সিদ্ধান্ত ও ভূমিকা শনাক্ত করুন (কে কি করতে পারে)
ব্যবসায়িক ফলাফল বদলে দেওয়া সিদ্ধান্তগুলো তালিকাভুক্ত করুন এবং পরিষ্কার মালিক নির্ধারণ করুন:
- কে নতুন মূল্য তালিকা অনুমোদন করতে পারবে বনাম চুক্তি সংশোধনী কে অনুমোদন করবে?
- কারা মূল্য ক্ষেত্র (মুদ্রা, ইউনিট, MOQ, লিড টাইম) সম্পাদনা করতে পারবে, এবং কারা শুধুমাত্র পরিবর্তনের অনুরোধ করতে পারবে?
- কারা সংবেদনশীল চুক্তি শর্ত (পেমেন্ট টার্ম, দায় সীমা) দেখতে পারবে, এবং কারা সীমাবদ্ধ করা উচিত?
সাথেই নোট করুন কোথায় অনুমোদন থ্রেশহোল্ড আলাদা (উদাহরণ: >5% বর্ধন হলে ফাইন্যান্স অনুমোদন প্রয়োজন) যাতে পরে সেই নিয়মগুলো কোডে এনকোড করা যায়।
প্রয়োজনীয় আউটপুট নির্ধারণ করুন (মানুষ কী করতে চায়)
শুরুতেই সঠিক প্রশ্নগুলো লিখে রাখুন যা অ্যাপটির উত্তর দিতে হবে:
- “আইটেম X-এর সরবরাহকারী Y থেকে আজ কার্যকর বর্তমান দাম কত?”
- “কোন চুক্তি পরবর্তী 60/90 দিনে মেয়াদোত্তীর্ণ হবে, এবং নবায়নের মালিক কে?”
- “কোথায় আমাদের ব্যতিক্রম আছে: মেয়াদোত্তীর্ণ দামের ব্যবহার, অনুপস্থিত MOQ, মুদ্রা মিল নেই?”
এই আউটপুটগুলো ড্রাইভ করবে ডেটা ফিল্ড, সার্চ, এবং রিপোর্ট — উল্টো দিক থাকবে না।
ব্যথা পয়েন্ট এবং এজ কেস আগে ধরুন
ক্রয় ডেটা খারাপ গঠনের হয়। সাধারণ ব্যতিক্রমগুলো স্পষ্টভাবে ডকুমেন্ট করুন:
- আংশিক আপডেট (সরবরাহকারী ২০টি SKU আপডেট করে, পুরো ক্যাটালগ নয়)
- একাধিক মুদ্রা এবং FX অনুমান
- MOQ, প্যাক সাইজ, ইউনিট (each বনাম case), এবং রাউন্ডিং
- ওভারল্যাপিং কার্যকর তারিখ বা ব্যাকডেটেড সংশোধনী
এই তালিকাকে ইম্পোর্ট ও অনুমোদনের গ্রহণযোগ্যতার মানদণ্ড হিসেবে বিবেচনা করুন, যাতে সিস্টেম বাস্তবতাকে সমর্থন করে এবং ওয়ার্ক অ্যারাউন্ড চাপায় না।
উচ্চ-স্তরের আর্কিটেকচার এবং মডিউল ব্রেকডাউন
সরবরাহকারী মূল্য তালিকা ও চুক্তির জন্য একটি ভাল আর্কিটেকচার ট্রেন্ডি প্যাটার্ন নয় বরং সমন্বয় হ্রাস করা এবং বৃদ্ধি সম্ভাব্যতা রাখা।
নির্মাণের দৃষ্টিভঙ্গি: সহজ থেকে শুরু করে ইচ্ছাপূর্ণভাবে উন্নয়ন
বহু দলের জন্য (১–৬ ইঞ্জিনিয়ার) শ্রেষ্ঠ শুরু হল মডুলার মনোলিথ: একটি ডিপ্লয়েবল অ্যাপ স্পষ্টভাবে পৃথক মডিউল ও বাউন্ডারি সহ। দ্রুত ডেভেলপমেন্ট, সহজ বাগ খোঁজা, এবং কম অপারেশনাল আন্দোলন।
পরবর্তীতে সেবা ভাগ করুন কেবল পরিস্কার কারণে—যেমন ভারি ইম্পোর্ট ওয়ার্কলোড আলাদাভাবে স্কেল করতে হবে, একাধিক দল সমান্তরালে কাজ করছে, বা কঠোর আইসোলেশন প্রয়োজন। সাধারণ পথ: মডুলার মনোলিথ → ইম্পোর্ট/প্রসেসিং ও ডকুমেন্ট ওয়ার্কলোড ব্যাকগ্রাউন্ড ওয়ার্কার হিসেবে বের করা → প্রয়োজনে উচ্চ-ট্রাফিক ডোমেইন সার্ভিস হিসেবে পৃথক করা।
প্রটোটাইপ ত্বরান্বিত করতে (স্ক্রিন, ওয়ার্কফ্লো, রোল-বেসড অ্যাক্সেস) আপনি Koder.ai-এর মতো প্ল্যাটফর্ম ব্যবহার করতে পারেন যা React + Go + PostgreSQL বেসলাইন জেনারেট করে একটি স্ট্রাকচার্ড চ্যাট স্পেক থেকে, তারপর দ্রুত ইটারেট করা যায়। প্রোকিউরমেন্ট টিমদের জন্য এটা মানে বাস্তব ব্যবহারকারীর সাথে ওয়ার্কফ্লো ভ্যালিডেট করা আগে থেকেই—অভাস তৈরি করার আগে।
মূল মডিউল (ন্যূনতম সেট যা বোঝা সহজ থাকবে)
অ্যাপকে কয়েকটি স্থির ডোমেইনের চারপাশে ডিজাইন করুন:
- Suppliers: সরবরাহকারী প্রোফাইল, যোগাযোগ, আইডেন্টিফায়ার, স্টেটাস
- Catalog (Items/Materials): আপনার অভ্যন্তরীন আইটেম মাস্টার এবং সরবরাহকারীর আইটেম কোড ম্যাপিং
- Price Lists: হেডার (সরবরাহকারী, বৈধতার সময়কাল) এবং লাইন আইটেম (মূল্য, ইউনিট, মুদ্রা), সাথে ইম্পোর্ট হিস্টোরি
- Contracts: চুক্তি রেকর্ড, লিঙ্ক করা সরবরাহকারী, কভার করা আইটেম/ক্যাটাগরি, মূল তারিখ ও ডকুমেন্ট
- Approvals & Governance: পর্যালোচনা ধাপ, সাইন-অফ, কমেন্ট, সিদ্ধান্ত ইতিহাস
- Reporting: সার্চ, এক্সপোর্ট, স্পেন্ড/প্রাইসিং ভিউ এবং অপারেশনাল স্ন্যাপশট
প্রতিটি মডিউল নিজস্ব নিয়ম ও ডেটা অ্যাক্সেসের জন্য দায়ী রাখুন। মনোলিথ হলেও কোডে বাউন্ডারি বজায় রাখুন (প্যাকেজ, নামকরণ, এবং পরিষ্কার API)।
ইন্টিগ্রেশনগুলো আগে থেকে পরিকল্পনা করুন (যদি দিন একে বানানো না হয়)
ইন্টিগ্রেশন ডেটা ফ্লো বদলে দেয়, তাই স্পষ্ট এক্সটেনশন পয়েন্ট রাখুন:
- SSO (SAML/OIDC) প্রমাণীকরণ ও ইউজার প্রোভিশনিং-এর জন্য
- ERP/finance systems ভেন্ডর আইডি, আইটেম মাস্টার, এবং অনুমোদিত মূল্য পুশ করার জন্য
- Email/calendar নবায়ন রিমাইন্ডার এবং অনুমোদন নোটিফিকেশনের জন্য
- Document signing (ঐচ্ছিক) সংশোধনী ও নতুন চুক্তি চূড়ান্ত করার জন্য
নন-ফাংশনাল প্রয়োজন (শিপ করার আগে লক্ষ্য নির্ধারণ)
পরিমেয় প্রত্যাশা আগে থেকেই ঠিক করুন:
- Performance: সাধারণ সার্চ <2 সেকেন্ড; ইম্পোর্ট অ্যাসিঙ্ক্রোনাসলি প্রসেস হবে প্রগ্রেস ভিজিবিলিটি সহ
- Availability: আপটাইম টার্গেট ও পরিকল্পিত রক্ষণাবেক্ষণ জানানো
- Backups & recovery: স্বয়ংক্রিয় ব্যাকআপ, রিস্টোর ড্রিল, এবং রিটেনশন নীতি অনুযায়ী
- Auditability: ইম্পোর্ট, অনুমোদন, এবং চুক্তি পরিবর্তনের জন্য অপরিবর্তনীয় ইভেন্ট ইতিহাস, ব্যবহারকারী ও টাইমস্ট্যাম্পসহ
ডেটা মডেল: সত্তা, সম্পর্ক, এবং ভার্সনিং
পরিচ্ছন্ন ডেটা মডেলই একটি ক্রয় অ্যাপকে বিশ্বাসযোগ্য রাখে। যখন ব্যবহারকারী জিজ্ঞেস করে, “3 মার্চে কোন দাম বৈধ ছিল?” বা “কোন চুক্তি ওই ক্রয়কে শাসিত করেছিল?”, তখন ডাটাবেসকে কোনও সন্দেহ ছাড়াই উত্তর দিতে হবে।
মূল সত্তা (ন্যূনতম নির্ভরযোগ্য রেকর্ড)
শুরু করুন একটি ছোট, সুসংজ্ঞায়িত রেকর্ড সেট দিয়ে:
- Supplier: ভেন্ডর অ্যাকাউন্ট (নাম, সরবরাহকারী কোড, স্ট্যাটাস, ডিফল্ট মুদ্রা, পেমেন্ট টার্ম)
- Contact: সরবরাহকারীর ব্যক্তিরা (একাধিক থাকতে পারে)
- Item/SKU: আপনি যা কিনেন (আইটেম কোড, বর্ণনা, ক্যাটাগরি, ইউনিট অব মেজার)
- PriceList: সরবরাহকারী প্রদত্ত তালিকা বা নিয়োগকৃত সূচি (নাম, কার্যকর তারিখ, মুদ্রা, ফাইল উৎস, স্ট্যাটাস)
- PriceLine: তালিকার ভিতরের দাম (আইটেম, ইউনিট মূল্য, ব্রেক/MOQ যদি থাকে, ট্যাক্স ফ্ল্যাগ)
- Contract: বাণিজ্যিক চুক্তি (চুক্তি নম্বর, সরবরাহকারী, শুরু/শেষ তারিখ, নবায়ন সেটিংস, স্ট্যাটাস)
- Term: কাঠামোবদ্ধ ধারা (লিড টাইম, ওয়ারেন্টি, ডেলিভারি, সার্ভিস লেভেল) যা আপনি সার্চ/রিপোর্ট করতে চান
সম্পর্ক যা সবকিছু সংযুক্ত রাখে
বায়ারের কাজের প্রতিফলন হিসেবে সম্পর্ক মডেল করুন:
- Supplier → Contracts: একজন সরবরাহকারীর অনেক চুক্তি থাকতে পারে
- Supplier → PriceLists: সময়ের সাথে একাধিক মূল্য তালিকা থাকতে পারে
- Contract → PriceLists (ঐচ্ছিক কিন্তু উপকারী): একটি চুক্তিকে সেই মূল্য তালিকাগুলোর সাথে লিংক করুন যা সেটি নিয়ন্ত্রণ করে
- Item/SKU → PriceLines: একই আইটেম বিভিন্ন সরবরাহকারী, মুদ্রা, কার্যকর তারিখ ধরে অনেক মূল্য লাইনে উপস্থিত থাকতে পারে
যদি আপনি একাধিক শিপ-টু লোকেশন বা বিজনেস ইউনিট সমর্থন করেন, Scope ধারণা (কোম্পানি, সাইট, অঞ্চল) যোগ করার কথা বিবেচনা করুন যা চুক্তি ও মূল্য তালিকায় লাগানো যাবে।
ভার্সনিং: ইতিহাস ওভাররাইট করবেন না
লাইভ রেকর্ড ইন-প্লেস পরিবর্তন করা এড়ান। পরিবর্তে:
- মূল্য তালিকার ভার্সনিং: প্রতিটি ইম্পোর্ট একটি নতুন PriceList version তৈরি করে (অথবা একটি নতুন PriceList রেকর্ড একটি শেয়ার্ড “ফ্যামিলি” আইডি সহ)। পূর্ববর্তী ভার্সনগুলো রিড-ওনলি রাখুন।
- চুক্তি সংশোধনী: প্রতিটি সংশোধনীকে একটি নতুন ভার্সন হিসেবে সংরক্ষণ করুন নিজের কার্যকর তারিখ ও লিঙ্ক করা ডকুমেন্ট সহ। “বর্তমান” চুক্তি ভিউ হল সর্বশেষ অনুমোদিত ভার্সন।
এতে অডিট প্রশ্নগুলো সহজ হয়: কখন কি অনুমোদিত হয়েছিল এবং কী পরিবর্তন হয়েছিল তা পুনর্গঠিত করা যায়।
রেফারেন্স ডেটা এবং ইউনিকনেস নীতিমালা
রেফারেন্স ডেটা আলাদা টেবিলেই রাখুন যাতে ফ্রি-টেক্সট বিশৃঙ্খলা এড়ায়:
- Currency, Unit of Measure, Tax Code, এবং (আন্তর্জাতিক শিপিং থাকলে) Incoterms
নালিশিহীন ডুপ্লিকেট প্রতিরোধ করতে আইডেন্টিফায়ার এনফোর্স করুন:
- Supplier code সিস্টেমব্যাপী ইউনিক
- Item code ইউনিক (অথবা ক্যাটালগ/সোর্স অনুযায়ী ইউনিক)
- Contract number সরবরাহকারীভিত্তিক বা গ্লোবালি ইউনিক — একটি পদ্ধতি বেছে নিয়ে সঙ্গতিপূর্ণভাবে প্রয়োগ করুন
মূল্য তালিকা ইম্পোর্ট: টেমপ্লেট, ভ্যালিডেশন, এবং ত্রুটি হ্যান্ডলিং
মূল্য তালিকাগুলো সাধারণত এমন স্প্রেডশীটে আসে যেগুলো মেশিনের জন্য তৈরি নয়। একটি মসৃণ ইম্পোর্ট ফ্লোই সিদ্ধান্ত নেবে “আমরা অ্যাপ ব্যবহার করব” না “আমরা Excel পাঠাতে থাকব।” লক্ষ্য: আপলোডকে সহনীয় রাখুন, কিন্তু সংরক্ষিত ডেটাকে কঠোর রাখুন।
সাপোর্টেড ফরম্যাট এবং ডাউনলোডেবল টেমপ্লেট
প্রথম দিন থেকে CSV এবং XLSX সাপোর্ট করুন। CSV ERP ও BI টুল থেকে এক্সপোর্টের জন্য ভালো; XLSX হচ্ছে বিস্তৃত সরবরাহকারীদের পাঠানোর ফরম্যাট।
একটি ডাউনলোডেবল টেমপ্লেট দিন যা আপনার ডেটা মডেল প্রতিফলিত করে (এবং ভূক্তভোগ কমায়)। এতে থাকুক:
- সঠিক কলাম নামসহ প্রথম সারি
- একটি উদাহরণ সারি যা বৈধ মান (মুদ্রা, ইউনিট, তারিখ) দেখায়
- XLSX হলে একটি ঐচ্ছিক “নোটস” শিট যা প্রতিটি কলাম ব্যাখ্যা করে
টেমপ্লেটের ভার্সনিং রাখুন (উদাহরণ: Template v1, v2) যাতে আপনি এটি পরিবর্তন করতে পারেন বিদ্যমান প্রক্রিয়া ভাঙার ছাড়াই।
ম্যাপিং নিয়ম: আবশ্যিক বনাম ঐচ্ছিক কলাম
ম্যাপিং নিয়ম স্পষ্টভাবে সংজ্ঞায়িত করুন এবং UI-তে আপলোডের সময় দেখান।
প্রচলিত পদ্ধতি:
- অবশ্যিক কলাম: supplier identifier, item/SKU, price, currency, unit of measure, effective start date
- ঐচ্ছিক কলাম: effective end date, minimum order quantity, lead time, packaging, incoterms, comments
- ডিফল্ট মান (সরবরাহকারী বা আপলোড অনুযায়ী): মুদ্রা, ইউনিট, স্টার্ট ডেট “today”, শেষ তারিখ খালি
আপনি যদি কাস্টম কলাম অনুমতি দেন, সেগুলোকে মেটাডেটা হিসাবে আলাদা রাখুন যাতে মূল মূল্য স্কিমাকে দূষিত না করে।
ভ্যালিডেশন নিয়ম যা খারাপ ডেটা রোধ করে
কিছুই কমিট করার আগে ভ্যালিডেশন চালান:
- সংখ্যাত্মক ফরম্যাট: অ-সংখ্যাত্মক মূল্য সেল প্রত্যাখ্যান; হাজার বিভাজক স্বাভাবিকীকরণ; নেগেটিভ মূল্য প্রতিরোধ
- মুদ্রা কোড: ISO 4217 অনুযায়ী যাচাই (উদাহরণ: USD, EUR)
- তারিখ পরিসীমা: স্টার্ট ডেট আবশ্যক; এন্ড ডেট অবশ্যই স্টার্টের পরে; একই আইটেমের জন্য যদি একচেটিয়া নিয়ম থাকে তাহলে ওভারল্যাপ প্রতিরোধ
- ডুপ্লিকেট রো: সমান কী (উদাহরণ: supplier + SKU + start date + currency + unit) সনাক্ত করুন; ডুপ্লিকেটকে কীভাবে ট্রীট করা হবে (ত্রুটি করে নাকি "শেষটি জয়ী"), নিরাপদ অপশন হচ্ছে ত্রুটি
রো-স্তরের ভ্যালিডেশন (এই সারি ভুল) এবং ফাইল-স্তরের ভ্যালিডেশন (এই আপলোড বিদ্যমান রেকর্ডের সাথে সংঘর্ষ) — উভয়ই চালান।
ত্রুটি হ্যান্ডলিং: প্রিভিউ, সারি-স্তরের ফিডব্যাক, এবং পুনরায় আপলোড
একটি ভাল ইম্পোর্ট অভিজ্ঞতা দেখতে হবে: Upload → Preview → Fix → Confirm।
প্রিভিউ স্ক্রিনে:
- একটি টেবিল দেখান হাইলাইটেড সেলগুলো এবং স্পষ্ট বার্তা (উদাহরণ: “Invalid currency code: US$”)
- ব্যবহারকারীদের একটি ত্রুটি রিপোর্ট (CSV) ডাউনলোডের সুযোগ দিন যেখানে একটি অতিরিক্ত “error” কলাম থাকবে
- পূর্ববর্তী প্রচেষ্টার ম্যাপিং পছন্দ সংরক্ষণ করে একটি ফিক্স-এন্ড-রিঅাপলোড ফ্লো দিন
"একটি খারাপ সারির জন্য পুরো ফাইল ব্যর্থ হবে"—এই ধরণের অভিজ্ঞতা এড়ান। পরিবর্তে ব্যবহারকারীকে অপশন দিন: শুধু বৈধ সারি ইম্পোর্ট করুন বা সব ত্রুটি ঠিক না হলে ব্লক করুন, গভর্ন্যান্স অনুযায়ী।
ট্রেসেবিলিটির জন্য কাঁচা আপলোড সংরক্ষণ করুন
অডিটেবিলিটি ও সহজ রি-প্রসেসিং-এর জন্য সংরক্ষণ করুন:
- মূল কাঁচা ফাইল (এক্সাক্ট বাইট)Checksum এবং আপলোডকারীর পরিচয়সহ
- পার্স করা সারি এবং ভ্যালিডেশন ফলাফল (ত্রুটি সহ)
- ইম্পোর্ট কনফিগারেশন (টেমপ্লেট ভার্সন, কলাম ম্যাপিং, ডিফল্ট)
এটি একটি প্রতিরক্ষামূলক ট্রেইল তৈরি করে যা বিতর্কে সহায়ক (“আমরা কি ইম্পোর্ট করেছিলাম এবং কখন?”) এবং যখন ভ্যালিডেশন নিয়ম পরিবর্তন হয় তখন পুনরায় প্রসেস করা যায়।
চুক্তি রেকর্ড: শর্ত, ডকুমেন্ট, এবং সংশোধনী
একটি চুক্তি রেকর্ড হওয়া উচিত শুধু ফাইল ক্যাবিনেট নয় — এটি যথেষ্ট কাঠামোবদ্ধ ডেটা থাকতে হবে যাতে নবায়ন, অনুমোদন, এবং রিপোর্টিং চালানো যায়—তবে স্বাক্ষরিত ডকুমেন্টও সহজে খুঁজে পাওয়া যায়।
মূল চুক্তি শর্ত (কাঠামোবদ্ধ ক্ষেত্র)
প্রথমে সেই ক্ষেত্রগুলো রাখুন যেগুলো প্রতি সপ্তাহে Procurement-কে উত্তর দেয়:
- চুক্তি শুরুর দিন এবং শেষের দিন
- নবায়ন ধরন (auto-renew, fixed term, evergreen) এবং নবায়ন দৈর্ঘ্য
- নোটিশ পিরিয়ড (উদাহরণ: “শেষ তারিখের ৬০ দিন আগে”) এবং কে নোটিফাই করা উচিত
- পেমেন্ট টার্ম (Net 30/45/60, আগাম পেমেন্ট ডিসকাউন্ট) এবং ইনভয়েসিং নিয়ম
- চুক্তি মালিক, সরবরাহকারী যোগাযোগ, এবং অভ্যন্তরীণ স্টেকহোল্ডার
এজ কেসগুলোর জন্য ফ্রি-টেক্সট নোট রাখুন, কিন্তু যেটা আপনি ফিল্টার/গ্রুপ/অ্যালার্ট করবেন তা নরমালাইজ করুন।
ডকুমেন্ট, অ্যাটাচমেন্ট, এবং রিটেনশন
ডকুমেন্টকে প্রথম-শ্রেণীর আইটেম হিসেবে আচরণ করুন এবং চুক্তির সাথে লিংক করুন:
- স্বাক্ষরিত চুক্তি (PDF)
- সংশোধনী/অ্যাডেন্ডা
- কাজের বিবৃতি, রেট কার্ড, বীমা সার্টিফিকেট, সম্মতি ডকুমেন্ট
প্রতিটি ফাইলে মেটাডেটা রাখুন: ডকুমেন্ট টাইপ, কার্যকর তারিখ, ভার্সন, আপলোডকারী, এবং কনফিডেনশিয়ালিটি লেভেল। সংরক্ষণ বিধি থাকলে “retention until” এবং “legal hold” মত ফিল্ড যোগ করুন যাতে অ্যাপ মুছতে না দেয় এবং অডিট সমর্থন করে।
সংশোধনী এবং ধারা ট্র্যাকিং
সংশোধনী ইতিহাস মুছে ফেলা উচিত নয়। সেগুলোকে তারিখভিত্তিক পরিবর্তন হিসেবে মডেল করুন যা বা তে তারিখ বাড়ায় (নতুন শেষ তারিখ), বাণিজ্যিক শর্ত পরিবর্তন করে, বা স্কোপ যোগ/সরিয়ে দেয়।
যেখানে সম্ভব, মূল ধারাগুলো কাঠামোবদ্ধ ডেটা হিসেবে ধরুন যাতে অ্যালার্ট ও রিপোর্টিং করা যায়—উদাহরণ: termination for convenience (Y/N), indexation সূত্র, সার্ভিস ক্রেডিট, liability cap, exclusivity।
একাধিক সাইট বা সরবরাহকারীকে একটি চুক্তি
যদি আপনি কেন্দ্রীয়ভাবে ক্রয় করেন কিন্তু একাধিক লোকেশনে কাজ করেন, একটি চুক্তিকে একাধিক সাইট/বিজনেস ইউনিটের সাথে লিংক করার সমর্থন দিন, সাইট-স্তরের অপশনাল ওভাররাইডস (বিলিং ঠিকানা, ডেলিভারি টার্ম) সহ। একইভাবে, একটি চুক্তি প্যারেন্ট সরবরাহকারী এবং তাদের সাবসিডিয়ারের কভার করতে পারে, তবে সঙ্গতিপূর্ণভাবে একটি স্পষ্ট “চুক্তিবদ্ধ পক্ষ” সংরক্ষণ করুন অনুবর্তিততা ও কমপ্লায়েন্সের জন্য।
অনুমোদন ও গভর্নেন্স
অনুমোদন হল যেখানে মূল্য তালিকা এবং চুক্তি প্রতিরক্ষামূলক হয়। একটি পরিষ্কার ওয়ার্কফ্লো কমাবে "কে এটা অনুমোদন করেছে?" জাতীয় বিতর্ক এবং সরবরাহকারী জমা থেকে ব্যবহারযোগ্য, সম্মত ডেটা পর্যন্ত একটি পুনরাবৃত্তিপূর্ণ পথে নিয়ে যাবে।
স্ট্যাটাস ফ্লো (এক্সপ্লিসিট রাখুন)
প্রাইস লিস্ট এবং কনট্র্যাক্ট রেকর্ড উভয়ের জন্য সহজ, দৃশ্যমান লাইফসাইকেল ব্যবহার করুন:
Draft → Review → Approved → Active → Expired/Terminated
- Draft: জমাদাতা দ্বারা সম্পাদনাযোগ্য; ক্রয়ের কাজে ব্যবহার করা যাবে না।
- Review: সম্পাদনা লক করা থাকে, পরিবর্তন অনুরোধের মাধ্যমে আপডেট করা যায়; রিভিউয়ার সম্পূর্ণতা ও নীতির উপযুক্ততা যাচাই করে।
- Approved: সিদ্ধান্ত রেকর্ড করা হয়; তারিখ নিয়ম অনুযায়ী সক্রিয় হতে প্রস্তুত।
- Active: অর্ডারিংয়ের জন্য বৈধ; পরিবর্তনের জন্য নতুন রিভিশন ও অনুমোদন দরকার।
- Expired/Terminated: রিড-ওনলি; রিপোর্টিং ও অডিটের জন্য রাখা হয়।
ভূমিকা ও দায়িত্ব
অ্যাপটির মধ্যেই দায়িত্ব সংজ্ঞায়িত করুন (ট্রাইবাল নলেজে নয়):
- Submitter (Procurement/Supplier manager): মূল্য তালিকা আপলোড করে, চুক্তি খসড়া করে, রিভিউ কমেন্টের উত্তর দেয়
- Reviewer (Category/Finance): মূল্য, ইউনিট, মুদ্রা, এবং বাণিজ্যিক সামঞ্জস্য যাচাই করে
- Approver (Budget owner): বাণিজ্যিক প্রভাবের জন্য চূড়ান্ত সিদ্ধান্ত
- Legal: চুক্তির ভাষা, ডকুমেন্ট, এবং সংশোধনীর জন্য বাধ্যতামূলক রিভিউয়ার/অ্যাপ্রুভার
- Admin: থ্রেশহোল্ড, রাউটিং নিয়ম কনফিগার করে এবং পারমিশন পরিচালনা করে—ডিফল্টভাবে ব্যবসায়িক কনটেন্ট অনুমোদন করা উচিত নয়
মূল্য পরিবর্তনের নিয়ম (চুপচাপ কস্ট ক্রিপ প্রতিরোধ)
স্বয়ংক্রিয়ভাবে অতিরিক্ত অনুমোদন ধাপ ট্রিগার করবে এমন নীতি-চালিত চেক যোগ করুন:
- থ্রেশহোল্ড অনুমোদন: উদাহরণ: যদি কোনো লাইন আইটেম >5% বৃদ্ধি পায় বা মোট ক্যাটেগরি খরচ প্রভাব $10,000 ছাড়ায়, উচ্চতর আপ্রুভারে রুট করুন
- ক্যাটাগরি-ভিত্তিক রাউটিং: কৌশলগত ক্যাটাগরি (IT, logistics) সবসময়ই আইন + বাজেট মালিক প্রয়োজন করতে পারে
- এক্সসেপশন হ্যান্ডলিং: ওভাররাইডগুলো শুধুমাত্র বাধ্যতামূলক কারণ ও অ্যাটাচমেন্ট দিয়ে অনুমোদনযোগ্য রাখুন
অডিট-রেডি সিদ্ধান্ত: মন্তব্য, কারণ, এবং প্রমাণ
প্রতিটি অনুমোদন বা প্রত্যাখ্যান ক্যাপচার করবে:
- সিদ্ধান্ত (approve/reject/request changes)
- reason code + মুক্ত টেক্সট ব্যাখ্যা
- টাইমস্ট্যাম্প, অভিনেতা, এবং প্রভাবিত রিভিশন
- লিঙ্ককৃত প্রমাণ (ইমেইল PDF, সরবরাহকারী চিঠি, মিটিং নোট)
এস্ক্যালেশন, টাইমআউট, এবং জবাবদিহিতা
অ্যাপ্রুভাল আটকে না পড়ে সে নিশ্চিত করতে সার্ভিস-লেভেল প্রত্যাশা সেট করুন:
- 24/48 ঘন্টার মধ্যে স্বয়ংক্রিয় অনুস্মারক
- নির্ধারিত টাইমআউটের পরে ব্যাকআপ আপ্রুভারে এস্কেলেশন
- “My pending approvals” কিউ এবং একটি ওভারডিউ রিপোর্টে দৃশ্যমানতা
গভৰ্ণ্যান্সটা ওয়ার্কফ্লোতে বিল্ট থাকলেই সবচেয়ে ভালো কাজ করে—পরবর্তীতে জোর করে চাপিয়ে না।
ব্যবহারকারীর অভিজ্ঞতা: স্ক্রিন, সার্চ, এবং রিপোর্টিং
একটি ক্রয় অ্যাপ সফল বা ব্যর্থ হয় মানুষের দ্রুত সহজ প্রশ্নের উত্তর দেওয়ার ক্ষমতার উপর: “বর্তমান দাম কত?”, “কোন চুক্তি এই আইটেমকে শাসিত করে?”, এবং “গত ত্রৈমাসিকে কি বদলেছে?” UI-কে ঐ ওয়ার্কফ্লো অনুযায়ী ডিজাইন করুন, ডেটাবেস টেবিল অনুযায়ী না।
দ্রুত তথ্য খুঁজুন: সার্চ ও ফিল্টার
শীর্ষ নেভিগেশনে দুটি প্রধান এন্ট্রি পয়েন্ট দিন:
- Supplier search (নাম, ট্যাক্স ID/ভেন্ডর কোড, স্ট্যাটাস, ক্যাটাগরি)
- Item search (SKU/পার্ট নাম্বার, বর্ণনা, নির্মাতা, ইউনিট)
রেজাল্ট পেজে চুক্তি ফিল্টার রাখুন যা বাস্তব কাজে মিলে: কার্যকর তারিখ, চুক্তি স্ট্যাটাস (draft/active/expired), বিজনেস ইউনিট, মুদ্রা, এবং “has pending approval”। ফিল্টারগুলো দৃশ্যমান রাখুন এবং চিপ আকারে রিমুভ করতে দিন যাতে নন-টেকনিক্যাল ব্যবহারকারী আটকে না থাকে।
প্রথমে ডিজাইন করতে হবে এমন কী স্ক্রিন
Supplier profile একটি হাব হওয়া উচিত: সক্রিয় চুক্তি, সর্বশেষ মূল্য তালিকা, খোলা দ্বন্দ্ব/নোট, এবং “সাম্প্রতিক কার্যকলাপ” প্যানেল।
Contract view উত্তর দেওয়া উচিত “আমরা কী কিনতে পারি, কোন শর্তে, কখন পর্যন্ত?” কী শর্ত (Incoterms, পেমেন্ট টার্ম), সংযুক্ত ডকুমেন্ট, এবং সংশোধনীর টাইমলাইন দেখান।
Price list comparison হল যেখানে ব্যবহারকারীরা সময় কাটায়। দেখান বর্তমান বনাম পূর্ববর্তী পাশাপাশি:
- কার্যকর তারিখ (এবং “ভবিষ্যত” মূল্য)
- আইটেম অনুযায়ী ডেল্টা (পার্থক্য ও % পরিবর্তন)
- নতুন/হটানো আইটেমের হাইলাইট
রিপোর্টিং এবং এক্সপোর্ট
রিপোর্টগুলো কার্যকর হওয়া উচিত, নয় কেবল অলঙ্করণ: “60 দিনে মেয়াদোত্তীর্ণ”, “সবচেয়ে বড় মূল্য বৃদ্ধি”, “একাধিক সক্রিয় মূল্য সহ আইটেম”। ফাইন্যান্সের জন্য CSV এবং শেয়ারিং/অনুমোদনের জন্য PDF এক-ক্লিক এক্সপোর্ট দিন, এবং একই ফিল্টার প্রয়োগ করে যাতে এক্সপোর্ট করা ডেটা UI-তে দেখা ডেটার সাথে মেলে।
সহজ ও স্ব-ব্যাখ্যামূলক রাখুন
পরিষ্কার লেবেল ব্যবহার করুন (“Effective date”, “Validity start” নয়), জটিল ফিল্ডে ইনলাইন হেল্প দিন (ইউনিট, মুদ্রা), এবং এম্পটি স্টেটগুলোতে পরবর্তী ধাপ ব্যাখ্যা করুন (“মূল্য তালিকা আমদানি করে পরিবর্তন ট্র্যাক করা শুরু করুন”)। /help-এ একটি ছোট অনবোর্ডিং চেকলিস্ট প্রশিক্ষণ সময় কমায়।
নিরাপত্তা, অনুমতি, এবং অডিট ট্রেইল
নিরাপত্তা সহজ যখন এটি ওয়ার্কফ্লোতে ডিজাইন করা হয়, পরে বোল্ট-অন করা নয়। ক্রয় অ্যাপগুলোর লক্ষ্য: মানুষ শুধুমাত্র তাদের দায়িত্বের জিনিস দেখতে ও পরিবর্তন করতে পারে, এবং প্রতিটি গুরুত্বপূর্ণ পরিবর্তন ট্রেসযোগ্য।
ভূমিকাগুলো এবং পারমিশন (লিস্ট প্রিভিলেজ)
ছোট, স্পষ্ট রোল মডেল দিয়ে শুরু করুন এবং অ্যাকশন-ভিত্তিক ম্যাপিং করুন (কেবল স্ক্রিন নয়):
- Viewer: অনুমোদিত মূল্য ও সক্রিয় চুক্তিতে রিড-ওনলি
- Editor: ড্রাফট তৈরি, আপলোড, ইম্পোর্ট ত্রুটি ঠিক করা
- Approver: ড্রাফট অনুমোদন/প্রত্যাখ্যান, কার্যকর তারিখ লক করা
- Admin: ব্যবহারকারী, রোল, রেফারেন্স ডেটা, সিস্টেম সেটিংস পরিচালনা
প্রতি এন্ডপয়েন্টে সার্ভার-সাইডে পারমিশন এনফোর্স করুন (UI পারমিশনই যথেষ্ট নয়)। যদি সংস্থা জটিল হয়, স্কোপ নিয়ম যোগ করুন (সরবরাহকারী/বিজনেস ইউনিট/অঞ্চল অনুযায়ী)।
সংবেদনশীল ডেটা হ্যান্ডলিং
প্রথমেই ঠিক করে নিন কী অতিরিক্ত সুরক্ষা চাই:
- চুক্তি ফাইল (PDF, স্ক্যান): রেস্টে এনক্রিপ্ট করুন, ডাউনলোড সীমাবদ্ধ করুন, ঐচ্ছিকভাবে ওয়াটারমার্ক দিন
- ব্যাংক বিবরণ: আলাদা, আরো সীমিত এলাকায় সংরক্ষণ করুন; দেখার অধিকার সীমিত ফাইন্যান্স রোলে রাখুন
- মূল্য দৃশ্যমানতা: মার্জিন বা বিশেষ মূল্য বিস্তৃত শ্রোতাকে দেখাবেন না; যদি দরকার “internal vs vendor-facing” ভিউ সমর্থন করুন
অডিট ট্রেইল: কে কি বদলাল ও কিভাবে
মূল সত্তার (চুক্তি, শর্ত, মূল্য আইটেম, অনুমোদন) জন্য অপরিবর্তনীয় অডিট লগ ক্যাপচার করুন: কে, কি বদলেছে (আগে/পরে), কখন, এবং উৎস (UI/ইম্পোর্ট/API)। ইস্যু ট্রেস করার জন্য ইম্পোর্ট ফাইল নাম ও রো নম্বরও রেকর্ড করুন।
প্রমাণীকরণ ও সেশন বেসিকস
একটি প্রধান লগইন পদ্ধতি বেছে নিন:
- SSO (SAML/OIDC) এন্টারপ্রাইজ ব্যবহারকারীর জন্য, অথবা ছোট টিমের জন্য পাসওয়ার্ড + MFA
সেশন নিয়ন্ত্রনে যুক্ত করুন: স্বল্প-মেয়াদি অ্যাক্সেস টোকেন, সিকিউর কুকি, inactivity timeout, এবং সংবেদনশীল অ্যাকশনের জন্য পুনরায় যাচাইকরণ (যেমন মূল্য এক্সপোর্ট)।
সম্মতি বেসিকস (অতিরঞ্জন না করে)
বাস্তব নিয়ন্ত্রণ লক্ষ্য করুন: লিস্ট প্রিভিলেজ, কেন্দ্রীভূত লগিং, নিয়মিত ব্যাকআপ, এবং পরীক্ষিত রিস্টোর পদ্ধতি। অডিট লগগুলোকে ব্যবসায়িক রেকর্ড ধরে নিন—মুছুন না এবং রিটেনশন নীতি সংজ্ঞায়িত করুন।
মূল্য নিয়ম: কার্যকর তারিখ, মুদ্রা, এবং ইউনিট
মূল্য সাধারণত একটি সংখ্যা নয়। অ্যাপটির স্পষ্ট নিয়ম থাকতে হবে যাতে বাইয়ার, AP, এবং সরবরাহকারী সবাই একই উত্তর পায়: "আজ এই আইটেমের দাম কত?"
কার্যকর-তারিখিং (start/end, ভবিষ্যত মূল্য, ওভারল্যাপ)
মূল্য সময়-সীমাবদ্ধ রেকর্ড হিসেবে রাখুন যার একটি start date এবং ঐচ্ছিক end date আছে। ভবিষ্যত-তারিখযুক্ত রো অনুমোদন দিন (উদাহরণ: পরের ত্রৈমাসিকে বাড়বে), এবং “ওপেন-এন্ডেড” মানে কী সিদ্ধান্ত নিন (সাধারণত: প্রতিস্থাপন না হওয়া পর্যন্ত বৈধ)।
ওভারল্যাপ সাবধানে হ্যান্ডেল করা উচিত:
- ডিফল্টভাবে ওভারল্যাপ প্রত্যাখ্যান করুন (গভর্ন্যান্সের জন্য উত্তম)
- প্রয়োজন হলে প্রাধান্য দিয়ে অনুমোদন অনুমোদন করতে পারেন (যেমন প্রোমো), কিন্তু কারণ ও অনুমোদন বাধ্যতামূলক
প্রায়োগিক নিয়ম: একই সময়ে এক সরবরাহকারী-আইটেম-মুদ্রা-ইউনিটে একটি বেস দাম—বাইরে অন্য কিছুকে স্পষ্টভাবে ওভাররাইড হিসেবে চিহ্নিত করুন।
“বর্তমান দাম” কীভাবে সংজ্ঞায়িত করবেন
যদি একাধিক প্রার্থী থাকে, একটি অর্ডারেড নির্বাচন সংজ্ঞায়িত করুন, উদাহরণ:
- চুক্তি-ডাকমেন্ট কভার করা দাম (চুক্তি সক্রিয় এবং আইটেম স্কোপে থাকলে)
- অনুমোদিত ওভাররাইড (প্রোমো/এক্সসেপশন) তারিখের মধ্যে
- স্ট্যান্ডার্ড সরবরাহকারী মূল্য তালিকা তারিখের মধ্যে
- ফলব্যাক বা “কোন দাম নেই” স্টেট (ব্যবহারকারীকে বাধ্য করুন)
যদি আপনার প্রক্রিয়ায় প্রিফার্ড সরবরাহকারী থাকে, supplier priority একটি স্পষ্ট ক্ষেত্র হিসেবে যোগ করুন যা কেবল তখনই ব্যবহার হবে যখন একই আইটেমের জন্য একাধিক বৈধ সরবরাহকারী থাকে।
মাল্টি-মুদ্রা কৌশল
নির্ধারণ করুন আপনি সংরক্ষণ করবেন:
- মূল্য রেকর্ড প্রতি স্টোর করা FX রেট (অডিটিবিলিটির জন্য শ্রেষ্ঠ; ঐতিহাসিক সিদ্ধান্ত পুনরায় তৈরি করে)
- লিভ FX কনভারশন (ড্যাশবোর্ডের জন্য উপযোগী; তবু মূল মুদ্রা সংরক্ষণ করুন)
অনেক দল উভয় করে: সরবরাহকারী মূল মুদ্রায় মূল্য রাখে, প্লাস রিপোর্টিংয়ের জন্য একটি “as-of” কনভার্ট করা মান।
রাউন্ডিং এবং ইউনিট রূপান্তর
ইউনিট নরমালাইজেশন সংজ্ঞায়িত করুন (উদাহরণ: each বনাম case বনাম kg) এবং রূপান্তর ফ্যাক্টর ভার্সন্ড রাখুন। রাউন্ডিং নিয়ম ধারাবাহিকভাবে প্রয়োগ করুন (মুদ্রার দশমিক, ন্যূনতম মূল্য ইনক্রিমেন্ট), এবং স্পষ্ট করুন কখন রাউন্ডিং হয়: ইউনিট রূপান্তরের পরে, FX কনভারশনের পরে, এবং/অথবা চূড়ান্ত লাইনের মোটে।
নবায়ন, সতর্কীকরণ, এবং অপারেশনাল ড্যাশবোর্ড
নবায়ন হল যেখানে চুক্তি মূল্য জিতে বা হারান হয়: মিস হওয়া নোটিশ পিরিয়ড, চুপচাপ অটো-রিনিউয়াল, এবং শেষ-সময় দর-কষাকষি প্রায়ই অনুকূল না হওয়া শর্তে নিয়ে আসে। আপনার অ্যাপকে নবায়নকে পরিচালিত প্রসেস হিসেবে বিবেচনা করা উচিত স্পষ্ট তারিখ, দায়িত্বশীল মালিক, এবং দৃশ্যমান অপারেশনাল কিউ সহ।
নবায়ন টাইমলাইন এবং রিমাইন্ডার
নবায়নকে প্রতিটি চুক্তির জন্য (এবং ঐচ্ছিকভাবে নির্দিষ্ট সংশোধনীর জন্য) চারটি মাইলস্টোন সেট হিসেবে মডেল করুন:
- End date (মেয়াদশেষ)
- Notice period deadline (বাতিল/পুনরায় আলোচনা করার সর্বশেষ তারিখ)
- Renewal window start (কোরসিং শুরু করার সময়)
এই মাইলস্টোনগুলির আশেপাশে রিমাইন্ডার তৈরি করুন। বাস্তব প্রদর্শন হওয়া ডিফল্ট হলো 90/60/30 দিন আগে ক্যাডেন্স (নোটিশ পিরিয়ড হচ্ছে সবচেয়ে গুরুত্বপূর্ণ), সাথে “day-of” অ্যালার্ট।
নোটিফিকেশন চ্যানেল এবং ডেলিভারি
দুটি চ্যানেল দিয়ে শুরু করুন:
- In-app notifications দৈনন্দিন কাজের কিউ জন্য
- Email সময়-সংবেদনশীল রিমাইন্ডারের জন্য
ঐচ্ছিকভাবে ICS ক্যালেন্ডার ফাইল এক্সপোর্ট সমর্থন করুন (প্রতি চুক্তি বা প্রতি ব্যবহারকারী) যাতে মালিকরা Outlook/Google Calendar-এ সাবস্ক্রাইব করতে পারেন।
নোটিফিকেশনগুলো কার্যকরী করে তুলুন: চুক্তির নাম, সরবরাহকারী, সুনির্দিষ্ট ডেডলাইন, এবং রেকর্ডে ডীপ লিংক অন্তর্ভুক্ত করুন।
মালিকানা এবং এস্ক্যালেশন
সতর্কীকরণ প্রতিটি চুক্তির জন্য যাবে:
- Contract owner (প্রাথমিক)
- Category owner (দ্বিতীয়, যদি আলাদা)
- Backup owner (কভারেজের জন্য)
এস্ক্যালেশন নিয়ম যোগ করুন: যদি প্রাথমিক স্বীকৃতি না দেয় X দিনের মধ্যে, ব্যাকআপ বা ম্যানেজারকে নোটিফাই করুন। “acknowledged” টাইমস্ট্যাম্প ট্র্যাক করুন যাতে বিজ্ঞপ্তি ব্যাকগ্রাউন্ড শব্দে পরিণত না হয়।
অপারেশনাল ড্যাশবোর্ড যা কাজ চালায়
ড্যাশবোর্ডগুলো সহজ, ফিল্টারযোগ্য, এবং রোল-অ্যাওয়ার হওয়া উচিত:
- শীঘ্রই মেয়াদোত্তীর্ণ চুক্তি (30/60/90 দিন, নোটিশ-ডেডলাইনসহ)
- নবায়ন টাস্ক ওভারডিউ (অনঅ্যাকনোলেজড বা মিলস্টোন পেরিয়ে যাওয়া)
- অনুমোদনের অপেক্ষায় মূল্য তালিকা (বয়স, মালিক, সরবরাহকারী)
প্রতিটি উইজেট একটি ফোকাসড লিস্ট ভিউতে লিংক করবে সার্চ ও এক্সপোর্টসহ, যাতে ড্যাশবোর্ড কেবল রিপোর্ট না থেকে কাজ শুরু করার জায়গা হয়।
MVP পরিকল্পনা, পরীক্ষা, এবং রোলআউট চেকলিস্ট
সরবরাহকারী মূল্য তালিকা ও চুক্তির জন্য একটি MVP একটি জিনিস প্রমাণ করা উচিত: টিমগুলো নিরাপদে মূল্য লোড করতে পারে, সঠিক চুক্তি দ্রুত খুঁজে পায়, এবং অনুমোদন ও অডিট ইতিহাস বিশ্বাসযোগ্য।
MVP স্কোপ (অবশ্যই থাকতে হবে)
একটি পাতলা, এন্ড-টু-এন্ড ওয়ার্কফ্লো দিয়ে শুরু করুন:
- Supplier + item master মৌলিক: সরবরাহকারী, পণ্য/সেবা, ইউনিট, মুদ্রা
- Price list import: এক বা দুই টেমপ্লেট (CSV/XLSX), প্রিভিউ, ফিল্ড ম্যাপিং (যদি লাগে), ভ্যালিডেশন, এবং স্পষ্ট ত্রুটি রিপোর্ট
- Contract record: মূল তারিখ (শুরু/শেষ, নোটিশ), মালিক, অ্যাটাচমেন্ট, এবং সরবরাহকারী ও সংশ্লিষ্ট মূল্য তালিকা ভার্সনের লিঙ্ক
- Approvals: একটি সাধারণ ওয়ার্কফ্লো (Draft → Review → Approved/Rejected) রোল-ভিত্তিক পারমিশন এবং অডিট লগসহ
- Search + reporting: গ্লোবাল সার্চ (supplier, SKU, contract ID), এবং একটি “current approved prices” রিপোর্ট এক্সপোর্ট
ছোট টিম দ্রুত এগোতে চাইলে Koder.ai ব্যবহার করে প্রাথমিক প্রডাক্ট কঙ্কাল (React frontend, Go backend, PostgreSQL) দ্রুত ঘুরিয়ে ফেলতে পারেন এবং Procurement/Legal স্টেকহোল্ডারের সাথে প্ল্যানিং মোডে ইটারেট করুন। আপনি ওয়ার্কফ্লোকে ভেরিফাই করার পরে সোর্স কোড এক্সপোর্ট করে হার্ডেন ও এক্সটেন্ড করতে পারবেন।
টেস্টিং প্ল্যান (বাস্তবে কি ভাঙে)
যেখানে ভুল খরচসাপেক্ষ, সেখানগুলোতে টেস্ট রাখুন:
- ইম্পোর্ট ভ্যালিডেশন টেস্ট: অনুপস্থিত আবশ্যিক কলাম, অবৈধ মুদ্রা/ইউনিট, ডুপ্লিকেট রো, তারিখ ওভারল্যাপ, নেগেটিভ মূল্য, মিশ্র দশমিক
- পারমিশন টেস্ট: কে ইম্পোর্ট করতে পারে, অনুমোদন করতে পারে, অনুমোদনের পরে সম্পাদনা করতে পারে কি না, এবং সংবেদনশীল অ্যাটাচমেন্ট দেখা
- ওয়ার্কফ্লো টেস্ট: সম্পাদনার উপর পুনঃঅনুমোদন, প্রত্যাখ্যান মন্তব্য বাধ্যতামূলক, স্টেট পরিবর্তনের জন্য অডিট এন্ট্রি তৈরি হয়
রোলআউট এবং ডিপ্লয়মেন্ট
স্টেজিং ব্যবহার করুন প্রোডাকশন-সদৃশ ডেটার (স্যানিটাইজড) কপি দিয়ে। একটি চেকলিস্ট বাধ্যতামূলক রাখুন: ব্যাকআপ সক্ষম, মাইগ্রেশন স্ক্রিপ্ট রিহার্স করা, এবং একটি রোলব্যাক প্ল্যান (ভার্সনড DB মাইগ্রেশন + ডিপ্লয় রিভার্ট) প্রস্তুত।
ইম্পোর্ট ব্যর্থতা, সার্চে ধীর কুয়েরি, এবং অনুমোদন বটলনেক মনিটর করার জন্য মনিটরিং যোগ করুন।
লঞ্চের পরে ইটারেট করুন
প্রকিউরমেন্ট ও ফাইন্যান্সের সাথে 2–4 সপ্তাহের ফিডব্যাক লুপ চালান: ইম্পোর্টের শীর্ষ ত্রুটি, চুক্তিতে অনুপস্থিত ক্ষেত্র, এবং ধীর স্ক্রিন। পরবর্তী প্রার্থীরা: ERP ইন্টিগ্রেশন, সাপ্লায়ার পোর্টাল আপলোড, সেভিংস ও সম্মতি বিষয়ে অ্যানালিটিক্স।
Suggested internal reads: /pricing and /blog.
সাধারণ প্রশ্ন
এই অ্যাপটিতে প্রথমে কোন মূল সমস্যা সমাধান করা উচিত?
প্রথমে দুইটি জিনিস কেন্দ্রীয়ভাবে রাখতে হবে: মূল্য তালিকার ভ্যার্শন এবং চুক্তির ভ্যার্শন।
- প্রতিটি ইম্পোর্ট/পরিবর্তনকে একটি নতুন, রিড-ওনলি ভ্যার্শন হিসেবে সংরক্ষণ করুন।
- কিছুই Active হওয়ার আগে একটি অনুমোদন ধাপ যোগ করুন।
- দ্রুত খোঁজের সুবিধা দিন: “নির্দিষ্ট তারিখে আইটেম X এর বর্তমান দাম কত?” এবং “কোন চুক্তিগুলি শীঘ্রই মেয়াদোত্তীর্ণ হবে”।
MVP-এ কি থাকা উচিত এবং পরে কি যোগ করা যাবে?
MVP-তে অন্তর্ভুক্ত করুন:
- সরবরাহকারী রেকর্ড + মৌলিক আইটেম/SKU ক্যাটালগ
- CSV/XLSX ইম্পোর্ট সহ প্রিভিউ, ভ্যালিডেশন এবং ত্রুটি রিপোর্ট
- চুক্তি রেকর্ড — প্রধান তারিখ (শুরু/সমাপ্তি, নোটিশ পিরিয়ড, নবায়ন ধরন) + সংযুক্তি
- একটি সাধারণ ওয়ার্কফ্লো: Draft → Review → Approved
- অডিট ট্রেইল (who/what/when/source)
- সার্চ + “বর্তমান অনুমোদিত মূল্য” এক্সপোর্ট
পরে যোগ করতে পারেন: ERP ইন্টিগ্রেশন, সাপ্লায়ার পোর্টাল, বিশদ রিপোর্টিং।
এটি কি মডুলার মনোলিথ হওয়া উচিত না মাইক্রোসার্ভিস?
ছোট দল (১–৬ ইঞ্জিনিয়ার) এর জন্য মডুলার মনোলিথ সবচেয়ে ভালো শুরু: একসাথে ডিপ্লয়যোগ্য অ্যাপ কিন্তু ক্লিয়ার মডিউলার বাউন্ডারি।
ভারী কাজ (ইম্পোর্ট/প্রসেসিং, ডকুমেন্ট প্রসেসিং, নোটিফিকেশন) আলাদা ব্যাকগ্রাউন্ড ওয়ার্কার হিসেবে এক্সট্র্যাক্ট করুন যখন প্রয়োজন হয়; মাইক্রোসার্ভিসে যাওয়ার আগে বাস্তব কারণ থাকা উচিত।
ডাটামডেলে কোন সত্তা এবং সম্পর্ক সবচেয়ে বেশি গুরুত্বপূর্ণ?
ন্যূনতম সেট মডেল করুন:
- Supplier, Contact
- Item/SKU
- PriceList (header/ভ্যার্শন) এবং PriceLine (রো)
- Contract এবং (ঐচ্ছিক) কাঠামোবদ্ধ Terms
- Approval ইভেন্ট এবং অডিট লগ
প্রধান লিংকগুলো: Supplier → Contracts, Supplier → PriceLists, Item → PriceLines। ঐচ্ছিকভাবে Contract → PriceLists রাখতে পারেন যাতে “এই মূল্য কোন চুক্তি দ্বারা শাসিত ছিল” ট্রেস করা যায়।
ইতিহাস না হারিয়ে কীভাবে ভার্সনিং করবেন?
ইতিহাস মুছে ফেলবেন না — সংস্করণ ব্যবহার করুন:
- প্রতিটি আপলোড একটি নতুন PriceList version তৈরি করে (অথবা একটি নতুন PriceList রেকর্ড যেটির একটি সাধারণ ফ্যামিলি আইডি আছে)।
- প্রতিটি সংস্কার একটি নতুন Contract version হিসেবে সংরক্ষণ করুন, প্রতিটি’র কার্যকর তারিখসহ।
তারপর “বর্তমান” হিসাব করা যায়: যে লেটেস্ট approved ভ্যার্শনটি নির্দিষ্ট তারিখে কার্যকর ছিল।
একটি ভালো মূল্য তালিকা ইম্পোর্ট অভিজ্ঞতা কেমন হওয়া উচিত?
উদভোগ্য আপলোড, কিন্তু সংরক্ষিত ডেটা কঠোর হওয়া উচিত:
- CSV এবং XLSX সাপোর্ট করুন এবং একটি ডাউনলোডেবল টেমপ্লেট দিন।
- সারি-স্তরের (row-level) এবং ফাইল-স্তরের ভ্যালিডেশন চালান।
- Upload → Preview → Fix → Confirm ফ্লো ব্যবহার করুন।
- প্রশাসনিক নিয়ম অনুযায়ী: এক্ষেত্রে কেবলমাত্র বৈধ সারি ইম্পোর্ট করা হবে নাকি পুরো ফাইল ব্লক হবে, তা নির্ধারণ করুন।
র এই রফতানির কাঁচা ফাইল + ম্যাপিং + ভ্যালিডেশন ফলাফল সংরক্ষণ করুন যাতে অডিট এবং পুনরায় প্রসেসিং সম্ভব।
কোন ভ্যালিডেশন নিয়ম সবচেয়ে বেশি খারাপ মূল্যের ডেটা রোধ করে?
সাধারণ নিয়ম:
- আবশ্যিক: supplier ID, SKU, price, currency, unit, effective start date
- মুদ্রা: ISO কোড যাচাই (উদাহরণ: USD, EUR)
- তারিখ: শেষ তারিখ শুরু এর পরে হতে হবে; ওভারল্যাপ নীতিমালা স্পষ্ট করুন
- ডুপ্লিকেট: কী কি হবে (উদাহরণ: supplier + SKU + start date + currency + unit) এবং ডুপ্লিকেট ডিফল্টভাবে প্রত্যাখ্যান করুন
যদি ওভারল্যাপ অনুমোদিত থাকে (প্রোমো/ওভাররাইড), তাহলে একটি কারণ ও অনুমোদন বাধ্যতামূলক করুন।
মূল্য এবং চুক্তির জন্য কোন অনুমোদন ও স্ট্যাটাস ওয়ার্কফ্লো সবচেয়ে ভালো?
একটি স্পষ্ট এবং একটি ধাপে ধাপে লাইফসাইকেল ভাল কাজ করে:
- Draft: সম্পাদনাযোগ্য; ক্রয়ের কাজে ব্যবহার করা যাবে না
- Review: সম্পাদনা লক; change request/কমেন্টের মাধ্যমে পরিবর্তন
- Approved: সিদ্ধান্ত রেকর্ড করা হয়; নির্ধারিত তারিখে সক্রিয় হতে প্রস্তুত
- Active: অর্ডারিংয়ের জন্য বৈধ; পরিবর্তন হলে নতুন রিভিশন ও অনুমোদন লাগবে
- Expired/Terminated: রিড-ওনলি; অডিট/রিপোর্টিংয়ের জন্য রাখা হবে
একই প্যাটার্ন প্রাইস লিস্ট এবং কনট্র্যাক্ট উভয়ের জন্য প্রয়োগ করুন যাতে ব্যবহারকারীরা একটি নির্ভুল রুটিন শিখে।
ভূমিকা, অনুমতি এবং সেনসিটিভ ডেটা কিভাবে হ্যান্ডেল করবেন?
সরল ভূমিকা মডেল দিয়ে শুরু করুন এবং সার্ভার-সাইডে বাধ্যতামূলক করুন:
- Viewer: রিড-ওনলি অনুমোদিত/সক্রিয় আইটেমে
- Editor: ড্রাফট তৈরি, আপলোড, ইম্পোর্ট ত্রুটি ঠিক করা
- Approver: অনুমোদন/প্রত্যাখ্যান, কার্যকর তারিখ লক করা
- Admin: ব্যবহারকারী, রোল, রেফারেন্স ডেটা পরিচালনা
প্রয়োজন হলে স্কোপ-ভিত্তিক পারমিশন (বিজনেস ইউনিট/অঞ্চল/সরবরাহকারী অনুসারে) যোগ করুন এবং চুক্তি PDF/ব্য়াংক ডিটেইলসকে উচ্চ-সেনসিটিভিটি হিসেবে আলাদা নিয়ম দিন।
নবায়ন, রিমাইন্ডার এবং অপারেশনাল ড্যাশবোর্ড কীভাবে কার্যকর করা উচিত?
নবায়নকে Milestone হিসেবে মডেল করুন এবং বিজ্ঞপ্তিগুলো কার্যকরী রাখুন:
- End date, notice deadline, renewal window start মডেল করুন
- ডিফল্ট রিমাইন্ডার: সাধারণত 90/60/30 দিন পূর্বে + day-of
- বিজ্ঞপ্তি পাঠান контракт owner-কে এবং ব্যাকআপ/এস্ক্যালেশনের নিয়ম রাখুন
ড্যাশবোর্ড যা কাজ চালায়:
- শীঘ্রই মেয়াদোত্তীর্ণ চুক্তি (30/60/90 দিন সহ)
- ওভারডিউ নবায়ন টাস্ক
- অনুমোদনের অপেক্ষায় থাকা মূল্য তালিকা (বয়স, মালিক)
প্রতিটি উইজেট ফিল্টার লিস্ট ভিউতে লিঙ্ক করে দিন যাতে ব্যবহারকারীরা সরাসরি কাজ করতে পারেন।