পরিবর্তনের ইতিহাস
কি খবর?
প্ল্যাটফর্মের প্রতিটি উন্নতি, যখন সে জাহাজে উঠবে।
· kamo-internal
Real work orders and subscriptions per market — dispatch, customer accounts, live subscriptions, cancel at period end
Service (work orders): - the grid reads its own market's jobs (plus older jobs with no market), shows the customer, the technician (member chip, never an id), the next visit, and status / priority words from the dictionary; rows keep ?back= - the work order page shows its market, files the job under an account or none (swap beside Customer), dispatches a technician (Choose Technician, arrival and finish, visit notes; a new job becomes Assigned), adds return visits, edits summary / description / trade / priority / address, labels status buttons by what they do (Start Work, Put On Hold, Mark Complete, Mark Invoiced, Cancel Work Order), shows each note's author with photo, and goes Back to its market's tab - no screen shows a job's uid: new jobs are numbered, older ones show a short ref Subscription: - the Agreements sub-tab was fifteen generated agreements whose buttons changed nothing; it now lists the market's live subscriptions (customer with photo, plan, status, seats, MRR, next billing, balance due, overdue, ending) and opens each on its order page - Signups reads the market's orders, names customers by account and member chip (was Member #<id>), offers only the market's plans in the order wizard - the subscription page shows the customer with photo and Open Account, the market, loads its subscription by id (no org-wide account or subscription scan), and cancels a live subscription with a reason, now or at the end of the billing period (Cancel only marked the order before, leaving the subscription billing); cancelling an order asks first - /commerce/agreements/new opens the order wizard for the market instead of a Coming Soon page - Back on agreement and signup pages no longer points at a tab id that never existed Removed the unreachable mortgage mock PipelineCommitmentsTab and /commerce/commitments/[id] (generated data; nothing linked to either). Help: How to Manage a Work Order and How to Manage a Subscription, linked from the grids, the visit window and the cancel window.
· SecurityService
Market-scoped work orders and subscriptions; dispatch and customer endpoints
- GET **************** lists one market's work orders (plus those with no market) - PUT /service-jobs/{uid}/customer files a job under an account or takes it off - POST /service-jobs/{uid}/visits adds a visit; PUT .../visits/{visitUid} schedules it and assigns a technician (409 on a finished visit) - GET /pos/subscription-orders and /pos/subscriptions take ?marketId= - GET **************** takes the market UUID (it was a Long, so every market-scoped request was a 400) and returns only the caller's plans - ServiceJobRightsGateTest covers the three new handlers
· kamo-shared-library
Market on the engagement, job numbers, dispatch, customer accounts, market-scoped lists
Service work orders: - createJob stores the chosen market on Engagement.market (it only picked the engagement type before) and the customer account on Engagement.account - every new job gets a person-readable number (WO-00001…), so no screen falls back to the uid - JobView carries marketId / marketTitle; customerName reads Company (Contact) - listJobs(org, status, marketId): one fetched read (engagement, market, customer, visits) instead of up to four lazy loads per row; a market tab also shows jobs that carry no market - setCustomer: file a job under an account or take it off one (engagement follows) - addVisit / updateVisit: schedule a visit, assign a technician (org-checked in SQL), mark en route / no access / cancelled; assigning someone to a CREATED job moves it to ASSIGNED Subscriptions: - createOrder stores the plan's market and the customer member's account on the engagement (a quote's engagement keeps what it has) - SubscriptionOrderDTO and SubscriptionRecordDTO carry marketId, marketTitle, customerAccountUid and customerAccountName - getOrders / getSubscriptions take a marketId (engagement market, else plan market; none stays in) and read the rows with one fetched query - getPlansForMarket: the market filter on plans took a Long and could never parse a market UUID; it is also limited to the caller's org now
· kamo-internal
Every rental has a renter; cancel, re-date, check out, check in and end; booked dates beside the date picker
- New Rental Request: the Renter (customer account) is required and pre-filled from ?accountId; ?marketId is sent so the rental is filed under the market. Once an asset is chosen, Already Booked lists its booked dates, names a clash, and Create waits for free dates. No assets: a way to the market's Rental Assets. - Rental request: Change Dates (with Charge By and booked dates), Cancel Request (cancel or decoder, with a reason kept on the request), Confirm Booking asks for a renter first; market and the booking's stage shown. - Booking: Check Out, Check In (late fee suggested from the daily rate when it is overdue, damage fee, condition notes, new total), End Rental (nothing handed over), Change Dates (end only once out), Cancel Booking, Open Request; price breakdown, checked out / returned times, overdue warning. - The renter can be changed, never removed; account saves use the record the server answers instead of reloading. - Pipeline lists ask the server for the market's rentals (by the rental's market); Market column when no market is chosen; bookings listed by stage (Reserved, Checked Out, Returned, Cancelled). - Market Rental Assets: Offered switch (switch an asset off instead of deleting it), translated copy, theme tokens, the server's sentence when an asset in use can't be deleted. The unused PipelineRentalAssetsTab (hard-coded English) is removed. - Help: Rentals and Bookings article (commerce/orders) linked from each rental page.
· kamo-internal
Market-filtered lists, line items, approve/reject/withdraw, send/receive/close/cancel, and a real Vendors list
- Procurement tab: Purchase Requests / Vendor Orders / Vendors; lists ask the server for the selected market (plus rows with none), show a Market column, and filter/count in plain words (Waiting for Approval, Rejected, Partly Received…); the "every market shows the same list" caption is gone - New / Change Purchase Request: vendor picker (active, this market's first) with New Vendor on the spot, market, lines with live total (or an estimated amount), notes, optional customer account - Record page: who asked and who decided (with photos), status banner, line table with arrived / still to come, history; Approve, Reject (reason shown to the requester), Change, Withdraw; Mark as Sent, Record Delivery (per line or everything), Close Order, Cancel Order — each confirmed - Vendors: contact person, email and phone through EmailAddress/PhoneNumber, website, notes, market; Active / Inactive with counts; deactivate instead of delete; ids stay strings - Help: "Buying from Your Vendors" help center article, linked from the form and the record page
· SecurityService
ProcurementController — market-filtered lists, change/reject/withdraw a request, send/receive/close/cancel a vendor order, records returned from every change
- purchase requests and vendor orders move out of POSController into ProcurementController (MANAGE_PROCUREMENT to buy and run orders, APPROVE_PURCHASE_REQUESTS to approve or reject) - PUT …/account and …/market answer with the updated record - ProcurementNotifier: a new request tells everyone who can approve it; a decision tells the requester - vendor create/edit/deactivate opens to MANAGE_PROCUREMENT (MANAGE_SUBSCRIPTION_SETTINGS kept)
· kamo-shared-library
Market, lines, approval decisions, and the vendor order lifecycle (send, receive, close, cancel)
ProcurementService owns purchase requests and vendor orders: - the engagement carries the market (chosen Procurement market, else the vendor's); lists filter by market plus rows with none; marketId/marketTitle on both DTOs; PUT market/account return the record - lines (description, quantity, unit cost, received) in the record payload; the total is their sum - reject (outcome REJECTED + reason) and withdraw (CANCELLED) a waiting request; requester and decider recorded; the request is SUBMITTED on create - vendor order: mark sent, receive in parts or whole, close (FULFILLED), cancel before anything arrived (VOIDED); derived stage on the DTO, never stored - EngagementLifecycle: all commitments voided -> CANCELLED, all ended -> FULFILLED - one-query lists (fetch-joined engagement/account/market, vendors and orders batched) - vendors: contact name, email, phone, website, notes, market, active flag (deactivate, never delete) - indexes on org_id / intent_id / commitment_id of the intent and commitment tables (applied by hand)
· KBService
Turn Antivirus scanning on in kbservice
KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for the standard test string and CLEAN for plain text with this service's internal-auth secret.
· DocsService
Turn Antivirus scanning on in docsservice
KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for the standard test string and CLEAN for plain text with this service's internal-auth secret.
· MediaService
Turn Antivirus scanning on in mediaservice
KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for the standard test string and CLEAN for plain text with this service's internal-auth secret.
· ConversionService
Turn Antivirus scanning on in conversionservice
KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for the standard test string and CLEAN for plain text with this service's internal-auth secret.
· DocsService
Assignment rows say what the member still owes
Adds signableOutstandingCount (signable documents not yet signed) and uploadsOwedCount (required requests with no live file) to each assignment row, so the member's list can label its button by what is actually owed instead of "Continue Signing" on a Quick Request with nothing to sign. Three grouped queries per page; LegalAssignmentCountsParseTest parses them against the real mapping.
· KBService
KBService checks knowledge-base resources and looks up the verdict before signing
- Resource upload writes the raw kb bucket, so it goes through AntivirusUploadGuard (KB) before anything touches storage: 422 ANTIVIRUS_BLOCKED (nothing stored) / 503 ANTIVIRUS_UNAVAILABLE, answered in that shape by the controller. - The content hashes ride on the object as user metadata (kamo-blake3 / kamo-sha3), so every presign site (single URL, batch, library tiles, platform help) looks up the content's global verdict first: a locked or still-checking resource is never signed (423 on the single URL, no URL for a tile). Resources stored before this carry no hashes and are not judged here. - ConfigMap kamo.antivirus.* (enabled: false until KamoAntivirus is Ready); ANTIVIRUS_INTERNAL_AUTH_SECRET from mlos-internal-auth.
· DaemonService
সাপ্তাহিক সুরক্ষা রিপোর্ট (ঘণ্টা প্রতি, org-local সোমবার ০৮:০০) এবং বেরিয়ে আসার পর্যবেক্ষণ (১৫ মিনিট) চেক করুন
· SecurityService
অ্যান্টিভাইরাস API, প্ল্যাটফর্ম নিয়ন্ত্রণ এবং নির্ধারিত শেষ বিন্দু; gate SecurityService'র নিজস্ব ফাইল পাথ
/api/antivirus/** (এবং /api/security/antivirus যমজ কনসোল প্রক্সি প্রথম চেষ্টা করে): সারসংক্ষেপ, সনাক্তকরণ, সেটিংস (অডিট করা ANTIVIRUS_POLICY_CHANGE), মিথ্যা সতর্কবার্তা, রায় অনুসন্ধান। প্ল্যাটফর্ম (MANAGE_PLATFORM_ANTIVIRUS): অবস্থা, স্বাক্ষর রিফ্রেশ/রোলব্যাক, মিথ্যা-আলার্ম পর্যালোচনা (ALLOWLIST সব জায়গায় আনলক করে + মানুষকে জানায়), allowlist, ড্রিল, আউটব্রেক। অভ্যন্তরীণ: সপ্তাহব্যাপী সুরক্ষা রিপোর্ট এবং ডেমন সার্ভিসের জন্য আউটব্রেক চেক। কাঁচা আপলোড (এসভিজি, পটভূমি, লোগো, লিড আমদানি, প্রকাশনা, রেট শিট সহ) স্ক্যান করার আগে কিছু লেখা হয়; ImageService পাথ তাদের lib গেট ধরে রাখে এবং এখন ৫০০ এর পরিবর্তে ৪২২/৪২৩/৫০৩ উত্তর দেয়; vault, ঋণ, রোগীর এবং ছবি-ফ্রেম পড়া পড়ার গেট প্রয়োগ করুন। kamo.antivirus.enabled false থাকবে যতক্ষণ না kamowsantivirus StatefulSet প্রস্তুত ।
· APIService
Route /api/antivirus/** to SecurityService and seal its internal subtree
· KlusterServices
KamoAntivirus ইনবউন্ড smtpd (পোর্ট ২৫)-এ প্রথমে মেইল পরিশোধক, অপ্রাপ্তির সময় স্থায়ীভাবে ব্যর্থ
smtpd_milters = { **************** default_action=tempfail }, তারপর rspamd অদলবদল করা হবে না। ক্ষতিকর অ্যাটাচমেন্ট হল একটি ছোট প্লেসহোল্ডার অংশ দ্বারা প্রতিস্থাপিত এবং বার্তা এখনও প্রদান করা হচ্ছে; যদি পরিশোধক পৌঁছানো যায়নি প্রেরক একটি 4xx পেয়েছে এবং পুনরায় চেষ্টা করছে। non_smtpd_milters এবং উপস্থাপনা (৫৮৭) শুধুমাত্র rspamd রাখুন; postfix- bulk অক্ষত। এই প্রচেষ্টার পূর্বে Milter সরাসরি যাচাই করা হয়েছে (ক্লাস্টারে milter-protocol ক্লায়েন্ট: পরীক্ষা) ফাইলটি প্লেসহোল্ডার দ্বারা প্রতিস্থাপন করা হয়েছে, পরিষ্কার CSV সংরক্ষিত, ভুয়া মার্কার অপসারণ করা হয়েছে) ।
· EmailService
মেইল এর জন্য অ্যান্টিভাইরাস - প্রতিটি মেইলবক্সে গেট পড়ুন, milter placeholders, প্রেরণ স্ক্রীনিং, সনাক্তকরণ
- পড়া: যেকোন মেইলবক্স থেকে প্রত্যেক সংযুক্ত বস্তু/ইনলাইন অংশ (Kamo মেইল, IMAP প্রদানকারী, গ্রাফ; ব্যক্তিগত এবং শেয়ার করা রাস্তা) মেমরিতে হ্যাশ করা হয়েছে (অস্থায়ী ফাইল ৮ MiB অতিক্রম করেছে, বন্ধ করার সময় মুছে ফেলা হয়েছে), এর গ্লোবাল ফলাফল দেখুন KamoAntivirus (origin MAIL_READ, bytes_stored=false) দ্বারা পরীক্ষা করা হবে। ক্ষতিকর = ৪২৩ ANTIVIRUS_BLOCKED, পরীক্ষাযোগ্য নয় = ৪২৩ ANTIVIRUS_CHECKING; কারণ/পরিবার X-Kamo-Antivirus-* হিসাবেও শীর্ষচরণ। SI মেইল টুলস এই রাস্তাগুলো দিয়ে পড়ে, তাই তারাও গেটেড। লিস্টিং কখনোই স্ক্যান করে না: AttachmentInfo-র মধ্যে শুধুমাত্র **************** অংশের জন্য ইতিমধ্যেই হ্যাশ করা আছে। - Milter placeholders (X-Kamo-Antivirus-Removed) ORIGINAL নামের অধীনে তালিকা, removed=true, locked; never সার্ভার অথবা ফরোয়ার্ড করা হয়েছে। X-Kamo-Antivirus বার্তার শীর্ষচরণ ব্যানার-এর জন্য EmailMessage.antivirus হিসাবে প্রদর্শিত হয়েছে। - প্রেরণ/ড্রাফট (নির্বাচন ১১): ডিভাইস আপলোড এবং পেস্ট করা ছবি AntivirusGate.scanUpload (সংরক্ষিত রায় পুনরায় ব্যবহার করা হবে, কখনো পুনরায় স্ক্যান করা হবে না); একটি অগ্রসর অংশের জন্য পড়া পরীক্ষা করা হবে। 422 ANTIVIRUS_BLOCKED with fileName, 503 অ্যান্টিভাইরাস_অপ্রয়োজনীয়। - NATS antivirus.detection.mail (কিউ গ্রুপ antivirus-mail-detections): প্রাপকদের সদস্যদের মাধ্যমে সমাধান করা হয়েছে মেইলবক্সের মালিক, ব্যক্তিগত উপনাম, শেয়ার করা মেইলবক্সের পাঠক এবং উপনাম ডোমেইন; প্রতি সদস্যের জন্য রেকর্ড করা হয় (MAIL_INBOUND, counterparty = sender) তাই FILE_BLOCKED / THREAT_ALERT org সেটিংস অনুযায়ী বের হয়ে যায়। - বিজ্ঞপ্তি: ANTIVIRUS_THREAT_ALERT -> VIEW_ANTIVIRUS (কেন্দ্রীয় অ্যাপ, কোন বৈশিষ্ট্য সারি প্রয়োজন নেই); FILE_BLOCKED/UNLOCKED কোন অ্যাপলিকেশনের অন্তর্গত নয়; ক্যাটালগ ক্রম। ৪টি অ্যান্টিভাইরাস টেমপ্লেটের জন্য প্রাকদর্শন নমুনা। - configmap kamo.antivirus.* (সক্রিয়: kamowsantivirus প্রস্তুত)। kamo-shared-library b6c41d34 (bcprov 1.70-এ HashUtils BLAKE3) প্রয়োজন।
· SecurityService
ভাড়া পদক্ষেপ, বাজার-ফিল্টার করা তালিকা, এবং একটি ভাড়াটিয়া যে সরানো যেতে পারে কিন্তু কখনও ফাঁকা করা হবে না
- GET /rental-requests এবং /bookings ?marketId (কলারের নিজের বাজার) এবং এঙ্গেজমেন্টের বাজার অনুযায়ী ফিল্টার করুন। - POST /rental-requests/{id}/cancel, PUT /rental-requests/{id}/dates, POST /bookings/{id}/check-out | return | cancel, PUT /bookings/{id}/dates (MANAGE_RENTALS), প্রত্যেকে হালনাগাদ রেকর্ডের উত্তর; একটি প্রত্যাখ্যান একটি 400 সঙ্গে বাক্যে। - GET /rental-assets/{id}/bookings: একটি সম্পদ ইতোমধ্যে বুকিং করা তারিখ। - PUT /rental-requests/{id}/account এবং /bookings/{id}/account ফাঁকা অ্যাকাউন্ট প্রত্যাখ্যান করে এবং শুধুমাত্র একটি বার্তা বদলে আপডেট রেকর্ড উত্তর দিন. - DELETE /rental-assets/{id} উত্তর 409 একটি বাক্যের সাথে যখন সম্পদ ভাড়া আছে।
· kamo-internal
সংস্থার নিজস্ব বাজার দ্বারা অর্ডার ট্যাব পরিশোধক
চিপ এবং সারি লেবেল ছিল প্রতি ব্যবসার লাইন, তার প্রথম নামের পরে বাজার, তাই দুটি খুচরা বাজার একটিতে ভেঙ্গে পড়ে। প্রতিটি সারি এখন দেখায় তার নিজের বাজার (সার্ভার থেকে); কোন বাজারের সাথে একটি পুরনো রেকর্ড যায় তার লাইনের একমাত্র বাজারে যখন একটি আছে, অন্য একটি "<Line> — কোন বাজার নেই" গ্রুপ। একটি মনে রাখা পরিশোধক যার বাজার চলে গেছে ফিরে আসে All- এ।
· DocsService
DocsService সব জায়গায় লক করা নথি প্রত্যাখ্যান করে এবং সম্পাদক সংরক্ষণ করা পরীক্ষা করে
- WOPI PutFile raw MinIO লিখে, তাই সংরক্ষণ প্রথমে AntivirusUploadGuard-এর মাধ্যমে হয়:a ক্ষতিকর সংরক্ষণ কিছুই লিখে না, নথির শেষ ভাল বিষয়বস্তু রাখে এবং সম্পাদককে উত্তর দেয় 422 ANTIVIRUS_BLOCKED (503 ANTIVIRUS_UNAVAILABLE তাই এটি পুনরায় চেষ্টা করে); একটি পরিষ্কার সংরক্ষণ চিহ্নিত করা হয়েছে পরবর্তী পুনরায় পরীক্ষার জন্য সংরক্ষিত। GetFile 423 এর সাথে লক করা/পরীক্ষা করা বিষয়বস্তু প্রত্যাখ্যান করে। - ইমেজিং /ডাউনলোড, /স্ট্রিম, রূপান্তরিত পিডিএফ এবং পৃষ্ঠা থাম্বনেইল আগে পড়া গেট ডাক যেকোন বাইট: ৪২৩ ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING. সাবধানতা বিষয়বস্তু পাস, তাই এর PDF 'নিরাপদ অনুলিপি' রূপে প্রদর্শন করা হবে। অন্যান্য বর্জনের মত ব্যাপক রপ্তানি লক করা নথিগুলিকে বাদ দেবে। - সংস্করণ ডাউনলোড/পিডিএফ/থাম্বনেইল সংস্করণের নিজস্ব বিষয়বস্তু বিচার করে। - আবেদনকারী এবং আবেদনের সাথে ক্যারিয়ার রিভিউ ক্যারিয়ার হিসাবে পরীক্ষা করা হয়; ক্যারিয়ার নিয়ন্ত্রক অ্যান্টিভাইরাস প্রত্যাখ্যানের উত্তর ৫০০ এর পরিবর্তে প্ল্যাটফর্ম আকৃতিতে দেয়। - আইনগত: মানচিত্র আপলোড করতে অস্বীকৃতি জানানো হয়েছে তাদের নিজস্ব ৪২২/৫০৩ এ, আপলোড বন্ধ থাকায় পুনরায় চেষ্টা করার অনুরোধ জানানো হয়েছে (তার পিডিএফ) অনির্ধারিত বাইট থেকে রেন্ডারিং করা হবে), সঞ্চালিত প্যাকেজ এবং অনুরোধের নমুনা read-gated। বাইন্ডার ফটো অ্যালবাম লক করা ফটো বের করে দেয়। - নথি তালিকা/মেটাডাটা সারি scanStatus / scanFamily / scanOutcome বহন করে। - ConfigMap kamo.antivirus.* (সক্রিয়: KamoAntivirus প্রস্তুত না হওয়া পর্যন্ত false); mlos-internal-auth থেকে ANTIVIRUS_INTERNAL_AUTH_SECRET।
· SecurityService
প্রত্যেক অর্ডার সারি তার নিজস্ব বাজারের নাম
সারি তাদের অংশগ্রহণ থেকে marketId / marketTitle বহন করে (একটি অনুসন্ধান দ্বারা সংশ্লিষ্টতা uid), তাই দুটি খুচরা বাজার সঙ্গে একটি সংস্থা যে দেখে প্রথম বাজারের নামে দুটোর পরিবর্তে একটা অর্ডার এসেছে। বাজার অনুসরণ করার আগে তৈরি করা রেকর্ড নূনল রাখুন।
· KlusterServices
অ্যান্টিভাইরাস সতর্কবার্তা (স্ক্যানার নিচে, স্বাক্ষর পুরোনো, মিরর গেট ব্যর্থ, p95, সনাক্তকরণ স্পাইক, ব্যাকলোগ রাখুন)
নিজে হাতে প্রয়োগ করা হয়েছে (পর্যবেক্ষণ/ একটি CI লক্ষ্য নয়) ।
· kamo-shared-library
একটি ভাড়ার জন্য একজন ভাড়াটিয়া প্রয়োজন; বিনিয়োগের উপর বাজার; বাতিল, পুনরায় তারিখ, চেক আউট, ফেরত এবং একটি বরাদ্দ বাতিল করা
- createRentalRequest একটি অনুপস্থিত বা বিদেশী গ্রাহক অ্যাকাউন্ট প্রত্যাখ্যান করে, রেকর্ড বাজার (সম্পদের, অন্যথায় নির্বাচিত একটি) এঙ্গেজমেন্ট, এবং তারিখ বৈধতা এবং হারের ধরন। অনুমোদন কোনো অ্যাকাউন্ট ছাড়া একটি অনুরোধ প্রত্যাখ্যান করে। - setRentalRequestAccount / setBookingAccount ভাড়াটিয়াকে অন্য অ্যাকাউন্টে নিয়ে যান এবং কখনো মুছে ফেলো না; উভয়ই হালনাগাদকৃত রেকর্ডের উত্তর দেবে। - অনুরোধ: বাতিল/ডিকোডার (IntentStatus.CANCELLED, কারণ সংরক্ষিত) এবং নতুন তারিখ ( বুকিং: চেক আউট (বুকিংয়ের FulfillmentOrder IN_PROGRESS), ফিরে আসুন অথবা শেষ করুন (সম্পন্ন; CommitmentStatus.FULFILLED; দেরি এবং ক্ষতি ট্যাক্সের পরিমাণ বাড়ানো হয়েছে; শর্তাবলী উল্লেখ করা হয়েছে), বাতিল করা হয়েছে (বাতিল করা হয়েছে, তা শেষ হওয়ার আগে), এবং নতুন তারিখ (শুধুমাত্র শেষের সময়), প্রত্যেকে সম্পদের অন্যান্য বুকিং পরীক্ষা করে সম্পদের উপর একটি সারির লক তাই দুই নিশ্চিতকরণ দ্বিগুণ-বুক করতে পারে না. - EngagementLifecycle: একটি VOIDED commit কিছুই commit করে না; সব বাতিল এবং কোন অর্ডার নেই বাতিল করা হয়েছে। - একটি প্রত্যাবর্তিত বুকিং এর তারিখ আর রাখা হয় না। সম্পদের রাখা তারিখ পড়া যায় তারিখ নির্বাচনকারীদের জন্য (findRentalAssetBookings) । - ডিটিও: আবেদন, বুকিং এবং সম্পদের ক্ষেত্রে মার্কেটআইডি/মার্কেটটাইটেল; বুকিং -> rentalRequestUid, rateType, checkedOutAt, returnedAt, ফি, নোট, বাতিল করার কারণ; request -> cancelReason, bookingStatus. বাজার এবং লোড সম্পদ দ্বারা তালিকা পরিশোধক, বুকিং এবং হ্যান্ড-ওভার প্রতি সারি প্রতি একটি অনুসন্ধান প্রতি পরিবর্তে। - ভাড়া সম্পদ: বর্ণনা কলাম; বাজারের অর্গের ভাড়া বাজার হিসাবে বৈধ এবং আপডেট করার সময় সরানো যায়; ঋণাত্মক হার প্রত্যাখ্যান করা হয়েছে; আপডেট করার সময় নকল কোড প্রত্যাখ্যান করা হয়েছে; একটি রেকর্ডে ভাড়া দেওয়া সম্পদ মুছে ফেলা সম্ভব নয় (অর্থাৎ এটি বন্ধ করুন)। - সূচক: **************** নিয়োগে, ভাড়া প্রতিশ্রুতি দ্বারা সম্পদ, প্রতিশ্রুতি অনুসারে সম্পাদন, সংস্থা এবং বাজার অনুসারে ভাড়া সম্পদ (হাতে প্রয়োগ করা)।
· kamo-internal
বাজার — সংগঠনের নিজস্ব বাজার, তাদের নিজস্ব নাম দ্বারা
"বাণিজ্য" শব্দটি হারিয়ে গেছে। বাজার হচ্ছে সদস্যদের দ্বারা নির্ধারিত (শিরোনাম + বর্ণনা); তার ব্যবসার লাইন শুধুমাত্র তার ধরন। - নেভ অপশন হচ্ছে বাজার। একটি বাজারের সাথে এটি সেই বাজার, তার দ্বারা শিরোনাম (পূর্বের মত); দুই বা তার বেশি হলে এটি প্রতি একটি সারির সাথে একটি মেনু খুলবে বাজার — এর শিরোনাম, এর নিচে বর্ণনা, এর লাইনের জন্য একটি আইকন ব্যবসার — প্রত্যেকটি বাজারের ট্যাব খুলুন। একটি ক্যাশে তালিকা ফিড উভয় নেভস, লঞ্চপ্যাড এবং লেবেল, বাজার পরিবর্তনের উপর আপডেট করা হয়েছে। - নেভিগেশন মেনু সারি একটি বৈকল্পিক বর্ণনা গ্রহণ করো (পোপ- আপ, রেল, উপরের বার) । - বাজার ফর্মের টাইপ বাক্স "ব্যবসা লাইন"; প্রতিটি নির্বাচন বলে এটা বাজারে কি দেবে, এবং একটি লক করা একটি নাম অ্যাপ এটি প্রয়োজন (হার্ড- কোড ইংরেজি) নাম এবং বর্ণনা সহায়ক ব্যাখ্যা করে কি সদস্যরা বাজার মেনুতে দেখতে পাবেন। - ACCESS_COMMERCE পড়ে "Access Markets"; ঋণ পাতা নির্দেশ করে সেটিংস → ব্যবসার লাইন।
· MediaService
MediaService অ্যাটাচমেন্ট অ্যান্টিভাইরাস সহযোগে পরীক্ষা করে এবং প্রতিবার পড়া হলে লক করা ফাইল প্রত্যাখ্যান করে
- চ্যাট সংযুক্ত ফাইল (সদস্য চ্যাট, ওয়েব-চ্যাট ভিজিটর পাবলিক), সিস্টেম-বাগ ফাইল, গ্রোথ হাব ছবি storeContentAddressed-এর মধ্যে তাদের প্রসঙ্গ (সদস্য, কথোপকথন)-এর সাথে চেক করা হয়; Canva আপলোডডকুমেন্টের মাধ্যমে আউটপুট। একটি প্রত্যাখ্যান ক্লায়েন্টে পৌঁছে যায় যেমন প্ল্যাটফর্মের আকৃতি (৪২২ ANTIVIRUS_BLOCKED {family} / 503 ANTIVIRUS_UNAVAILABLE) এর পরিবর্তে 500 এ আবদ্ধ করা হবে। - মিটিংয়ের পটভূমি (কাঁচা MinIO, পাবলিক বাক্স) প্রথমে AntivirusUploadGuard-এর মাধ্যমে প্রবেশ করবে। - /attachments/link (dedup by hash) বিষয়বস্তু প্রত্যাখ্যান করে অ্যান্টিভাইরাস লক করা (422); একটি সংরক্ষিত ফাইল হতে পারে লিঙ্ক করা হয়েছে এবং চেক করা না হওয়া পর্যন্ত পড়া যাবে না । - অ্যাটাচমেন্ট আপলোডের উত্তরে {স্টেট, পরিবার, ফলাফল} স্ক্যান করে, লাইভ বার্তা ফ্রেম এবং ইতিহাস; ধরে রাখার সময় অপেক্ষা করা হচ্ছে। - ImagingProxyController (মূল এবং প্রাকদর্শন), ভিজিটর ডাউনলোড, সিস্টেম-বাগ ফাইল, গ্রোথ হাব ছবি, উপাদান এবং ক্যানভা উপাদান পড়ার জন্য গেটটিতে কল করুন: ৪২৩ ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING, missing-content 410 এর পূর্বে পরীক্ষা করা হয়েছে তাই আটকানো হয়েছে ফাইলটি 'এখনও পরীক্ষা করা হচ্ছে' বলে। প্রক্সি এখন বিষয়বস্তুর অবস্থার পূর্বে সদস্যতা পরীক্ষা করে। - ConfigMap kamo.antivirus.* (সক্রিয়: KamoAntivirus প্রস্তুত না হওয়া পর্যন্ত false); mlos-internal-auth থেকে ANTIVIRUS_INTERNAL_AUTH_SECRET।
· ConversionService
ConversionService অ্যান্টিভাইরাস সহযোগে আপলোড পরীক্ষা করে, ফাইল সংরক্ষণ করে, নতুন স্বাক্ষরের জন্য পুনরায় পরীক্ষা করে
ইন- সার্ভিস clamd ক্লায়েন্ট (malware/ package, UploadScanGuard, QuarantineStore,) প্রতিস্থাপন করে retro-scan) শেয়ারড লাইব্রেরী অ্যান্টিভাইরাস: - /upload, /replace, /templates/upload কোন সারি অথবা সারির পূর্বে ImageService-এর ভেতরে চেক করা হয় অবজেক্ট লেখা হয়েছে (HOLD অনুমোদিত); প্রত্যাখ্যানের ক্ষেত্রে প্ল্যাটফর্মের আকৃতি ব্যবহার করা হবে: 422 ANTIVIRUS_BLOCKED {family}, 503 ANTIVIRUS_UNAVAILABLE, 503 HASH_MISMATCH। MALWARE_DETECTED হারিয়ে গেছে এবং নেই স্বাক্ষরের নাম কখনো ফিরিয়ে দেওয়া হয় না। প্রতিক্রিয়া স্ক্যান {status, family, outcome} বহন করে; a hold ফাইলটি অপেক্ষা করছে এবং সংরক্ষণের পর রূপান্তরিত হবে। পাইপলাইন একটি 'স্ক্যানিং' ধাপ নির্গত করবে। - /register-existing (reference দ্বারা dedup) বিষয়বস্তু প্রত্যাখ্যান করে। অ্যান্টিভাইরাস লক করা হয়েছে (৪২২)। - AntivirusUploadGuard- এর মাধ্যমে সাউন্ড ইফেক্ট (raw MinIO) পাঠানো হবে (হোল্ড করা হবে না, নিচে গেলে ৫০৩) । - QuarantineStore-এর আর অস্তিত্ব নেই, তাই QuarantineBucket-এ কিছুই লেখা হয়নি; কিছুই নেই এতে স্পর্শ করা হয়। - antivirus.hold.verdict (কাতারে antivirus-hold-completer) -> AntivirusHoldCompleter, তারপর প্রকাশিত নথির জন্য সাধারণ রূপান্তর; পুনরায় প্রেরণ করার জন্য একটি সংরক্ষণ ব্যর্থতা। - antivirus.signatures.promoted (কাতারে antivirus-recheck) -> AntivirusRecheckService: প্রতি ফ্ল্যাগ করা হ্যাশ যার বাইট সংরক্ষণ করা হয়েছে (অনলক + নোটিফিকেশন + AUTO_CLEARED রিপোর্ট) এবং CLEAN শেষ ১৪ দিনে প্রথম দেখা বিষয়বস্তু (LOCKED_LATER + সতর্কবার্তা), MinIO থেকে স্ট্রিম করা হয়েছে, প্রতিবার একবার, থেরাপি করা হচ্ছে। সাবস্ক্রাইবাররা যতক্ষণ না অ্যান্টিভাইরাস স্ট্রিম বিদ্যমান থাকে ততক্ষণ পুনরায় চেষ্টা করবে। - ConfigMap: kamo.antivirus.* (সক্রিয়: KamoAntivirus প্রস্তুত না হওয়া পর্যন্ত false); mlos-internal-auth থেকে ANTIVIRUS_INTERNAL_AUTH_SECRET।
· kamo-shared-library
একটি অংশীদারিত্ব একটি সদস্য-নির্ধারিত বাজারের অন্তর্গত
commerce_engagements.market_id (হাতে প্রয়োগ করা হয়েছে, FK থেকে commerce_markets, org_id দ্বারা সূচীভুক্ত)। খুচরা অর্ডার, পরিষেবা কাজ, ভাড়া এবং সরবরাহ রেকর্ড তাদের নিজস্ব বাজার কলাম নেই; তারা তাদের থেকে এটি পড়তে একইভাবে তারা তাদের গ্রাহক অ্যাকাউন্ট পড়ে।
· kamo-internal
অ্যান্টিভাইরাস ইউআই - ফাইল দেখানোর যেখানেই থাকে, অ্যান্টিভাইরাস সেন্টার, প্ল্যাটফর্ম ট্যাব, সতর্কবার্তা এবং সহায়তা
ডিজাইন কিট (অ্যাপ/কম্পোনেন্ট/এন্টিভাইরাস): পাঁচটি অ্যানিমেটেড চেহারা সহ প্রটেকশনসিল (চেকিং, সুরক্ষিত, সাবধানতা, অবরোধ করা, পরীক্ষা করা যায়নি; ব্র্যান্ড + --av-* ট্যাগ, কমানো নড়াচড়া সম্মানিত), অ্যাটাচমেন্ট- এর নাম: বার্তাAntivirusBanner, ShieldClip, FalseAlarmDialog ("আমি মনে করি এটি একটি ভুল"), @kamo/antivirus-core 0.1.0 থেকে যুক্তি (সিল স্টেট, কারণ পার্সারের গ্রহণযোগ্যতা) অ্যান্টিভাইরাস_ব্লকড / ম্যালওয়্যার_সনাক্ত / অ্যান্টিভাইরাস_চেকিং / অ্যান্টিভাইরাস_অপ্রয়োজনীয় / স্ক্যান_অপ্রয়োজনীয়)। পৃষ্ঠ: মেইল পড়া পেন (সিল্ক, অপসারণ করা অংশ তাদের মূল নামের অধীনে লক করা, বার্তা) ব্যানার, ইনলাইন ছবি আটকানো, ডাউনলোড সব তাদের ছাড়ুন, তালিকা-সারি শিল্ড ক্লিপ, বডি ক্যাশ v2), রচয়িতা/আলাপ/SMS/SI ট্রে (পরীক্ষা + অবরোধকৃত অবস্থা), প্রাপকদের জন্য আলাপের বুদবুদ, নথি (পরীক্ষামূলক পর্যায়, সিল্ক, লকড অ্যাকশন, সাবধানতা গেট), এবং প্রত্যেক আপলোডের ক্ষেত্রে প্রত্যাখ্যান টোস্ট (কেবি, অ্যাভাটার, ক্যারিয়ার, সিস্টেম বাগ, শব্দ, অ্যাকাউন্ট/রোগী/অ্যাপ্লিকেশন নথি, লোগো)। **************** এ এন্টিভাইরাস কেন্দ্র (VIEW_ANTIVIRUS; নীতিমালা প্রয়োজন MANAGE_ANTIVIRUS_POLICY): সুরক্ষা অর্কিড, গণনা-আপ KPIs, প্রবণতা/উৎস/পরিবার চার্ট, লাইভ হুমকি টাইমলাইন, সাহায্য সহ পলিসি পরিবর্তন, মিথ্যা সতর্কবার্তা। প্ল্যাটফর্ম ট্যাব (MANAGE_PLATFORM_ANTIVIRUS): স্ক্যানার স্বাস্থ্য, রিফ্রেশ/রোলব্যাক সহ মুক্তি, পর্যালোচনা কলাম, তিন ধরনের নোটিফিকেশন, অ্যান্টিভাইরাস গাইডেড ট্যুর, /api/antivirus BFF, ServiceType ANTIVIRUS(41) এর জন্য মিরর, অধিকার ৬৯৮-৭০০ এবং MANAGE_PLATFORM_ANTIVIRUS (shared-lib 332f7275), এবং সাতটি সাহায্য কেন্দ্রের নিবন্ধ। প্রটেক্ট হোম উইজেট কম্পোনেন্ট নির্মিত হয়েছে কিন্তু নিবন্ধিত হয়নি: লঞ্চপ্যাডের জন্য একটি প্রয়োজন ANTIVIRUS_WIDGET ডানদিকের ব্লক যা শেয়ার করা লাইব্রেরীতে এখনো নেই।
· KlusterServices
Svc_antivirus লগইন + ANTIVIRUS স্ট্রিম; রূপান্তর/ই-মেইল সম্ভবত অ্যান্টিভাইরাস ব্যবহার করবে।>
- svc_antivirus: STREAM.INFO/CREATE ANTIVIRUS, অ্যান্টিভাইরাস.> এবং rt.org.> প্রকাশ করুন, সাবস্ক্রাইব অ্যান্টিভাইরাস.> এবং _ইনবক্স.> (সিক্রেট কামো/নাটস-ইউজার-এন্টিভাইরাস, সিক্রেটস. এমডি)। - svc_conversion: ANTIVIRUS গ্রাহক API (বিচারক, প্রমোশন পুনরায় পরীক্ষা করুন), publish/subscribe antivirus.>, publish rt. org.> (রেকর্ড করা রায় ইউআই রিফ্রেশ করে)। - svc_email: ANTIVIRUS গ্রাহক API (মেইল-ফিল্টার সনাক্তকরণ), অ্যান্টিভাইরাস.>। - স্ট্রিম-বুটস্ট্রাপ কাজের প্রস্তাব ANTIVIRUS (R1, 14d) যাতে গ্রাহকরা প্রথমে বাঁধতে পারে। nats-server -t ব্যবহার করে লাইভ সার্ভারের বিরুদ্ধে যাচাই করা হয়েছে।

তোমার মহাবিশ্ব অপেক্ষা করছে।
মিনিটের মধ্যে বিনামূল্যে শুরু করুন। যখনই আপনি প্রস্তুত হন তখনই পণ্য যোগ করুন - কোন স্থানান্তর নেই, কোন নতুন লগইন নেই।
চিরকালের জন্য বিনামূল্যে — কোন ক্রেডিট কার্ডের প্রয়োজন নেই