跳转到内容
KAMOUniverse

变更记录

什么是新的。

平台的每一个改进,随着它的出货。

  1. · 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.

  2. · 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

  3. · 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

  4. · 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.

  5. · 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

  6. · 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)

  7. · 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)

  8. · 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.

  9. · 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.

  10. · 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.

  11. · 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.

  12. · 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.

  13. · 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.

  14. · DaemonService

    勾选每周保护报告(每小时,组织本地周一 08:00)和疫情观察(15 分钟)

  15. · SecurityService

    防病毒 API、平台控件和排程端点;门 SecurityService 自己的文件路径

    /api/antivirus/ * * (以及控制台代理首先尝试的 /api/security/antivirus 双胞胎 ) : 概述、检测、 设置 (审计的 ANTIVIRUS_POLICY_CHANGE ) 、 假警报、判决查找。 平台 (MANAGE_PLATFORM_ANTIVIRUS ) : 状态,签名刷新/回滚,假警报审查(ALLOWLIST 解锁到处 + 告诉人们 ) , allowlist, 内部:每周保护报告和 DaemonService 的爆发检查。 原始上传(头像,包括SVG,背景,徽标,引线导入,披露,费率表)在上传前进行筛选 ImageService 路径保留了它们的 lib 门,现在回答 422/423/503,而不是 500; vault, kamo.antivirus.enabled 保持为 false ,直到读取的文件被删除 您访问的页面不存在!

  16. · APIService

    Route /api/antivirus/** to SecurityService and seal its internal subtree

  17. · KlusterServices

    KamoAntivirus 邮件过滤器首先在入站 smtpd (端口 25 ) , 无法达到时临时失败

    请输入您的电子邮件地址 default_action=tempfail } , 然后 rspamd 保持不变 消息的传递是由一个小的占位符部分取代的;如果 过滤器无法到达发件人得到一个4xx并重试。 non_smtpd_milters 和 submission (587) 仅保留 rspamd;不影响 postfix-bulk。 在此推送之前,Milter 已实时验证 (群集中的 milter-protocol 客户端:test 文件替换为占位符,保留干净的 CSV,删除伪造标记 ) 。

  18. · EmailService

    防病毒邮件 — 读取每个邮箱的门, milter 占位符,发送筛选,检测

    - 读取:来自任何邮箱的每个附件/内联部分(Kamo Mail、IMAP 提供商、Graph、个人和 共享路由)在内存中被散列(临时文件超过 8 MiB,关闭时被删除 ) , 其全局判决看起来 如果未知,则由 KamoAntivirus ( 源 MAIL_READ, bytes_stored=false)检查。 Harmful = 423 ANTIVIRUS_BLOCKED,不可检查 = 423 ANTIVIRUS_CHECKING;原因/系列也称为 X-Kamo - Antivirus - * SI 邮件工具读取这些路由,因此它们也被门禁。 列表从不扫描: AttachmentInfo 只为已被哈希的部分携带 **************** 。 - Milter 占位符 (X-Kamo - Antivirus-Removed) 在 ORIGINAL 名称下列出, removed=true, 锁定; 从不 X-Kamo - Antivirus 消息报头公开为横幅的 EmailMessage.antivirus。 - 发送/草稿(决定 11 ) : 设备上传和粘贴的图像通过 AntivirusGate.scanUpload (存储在 422 ANTIVIRUS_BLOCKED 与 422 ANTIVIRUS_BLOCKED 相关的错误信息: 422 ANTIVIRUS_BLOCKED 503 无法访问服务器页面 - NATS antivirus.detection.mail (队列组 antivirus-mail-detections ) : 通过解析器将收件人解析为成员 邮箱持有人、个人别名、共享邮箱读取器和别名域;按成员记录 (MAIL_INBOUND, 对手 = 发件人) 所以 FILE_BLOCKED / THREAT_ALERT 按组织设置出去. - 通知: ANTIVIRUS_THREAT_ALERT -> VIEW_ANTIVIRUS (核心应用程序,无需功能行 ) ; FILE_BLOCKED/UNLOCKED 属于没有应用程序;目录顺序。 预览 4 个防病毒模板的示例。 - configmap kamo.antivirus . * (已启用:kamowsantivirus 已准备就绪 ) 。 需要 kamo-shared-library b6c41d34 (bcprov 1.70 上的 HashUtils BLAKE3 ) 。

  19. · SecurityService

    租赁步骤、市场过滤列表和可以移动但永远不会清除的租户

    - GET /rental-requests 和 /bookings 采用 ?marketId(调用者自己的市场)并且 通过参与的市场过滤。 - POST /rental-requests/{id } / 取消, PUT /rental-requests/{id } / 日期, POST /bookings/{id } / check-out | 返回 | 取消, PUT /bookings/{id } / 日期 (MANAGE_RENTALS ) , 每个响应更新的记录;拒绝是带有 判决。 - GET /rental-assets / { id } / bookings:资产已预订的日期。 - PUT /rental-requests/{id } / account 和 /bookings/{id } / account 拒绝一个空白的帐户 并回复更新的记录,而不是纯粹的消息。 - DELETE /rental-assets/{id } , 当资产有租赁时,用一个句子回复 409。

  20. · kamo-internal

    订单选项卡过滤器由组织自己的市场

    芯片和行标签是按照业务线,以其第一个 市场,所以两个零售市场崩溃成一个。 每行现在显示 (从服务器)自己的市场;一个没有市场的旧记录去 当有一个,另一个到其线的唯一市场 "<行> — 没有市场"组。 一个已记住的过滤器,其市场已消失 返回上一页

  21. · DocsService

    DocsService refuses locked documents everywhere and checks editor saves

    - WOPI PutFile writes raw MinIO, so the save goes through AntivirusUploadGuard first: a harmful save writes nothing, keeps the document's last good content and answers the editor 422 ANTIVIRUS_BLOCKED (503 ANTIVIRUS_UNAVAILABLE so it retries); a clean save is marked stored for later re-checks. GetFile refuses locked/checking content with 423. - Imaging /download, /stream, the converted PDF and page thumbnails call the read gate before any byte: 423 ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING. CAUTION content passes, so its PDF rendition is the 'safe copy'. Bulk export drops locked documents like the other exclusions. - Version download/pdf/thumbnail judge the version's own content. - Careers resumes are checked as CAREERS with the applicant and application; the careers controllers answer Antivirus refusals in the platform shape instead of a 500. - Legal: uploads map refusals to their own 422/503, a held upload asks to retry (its PDF rendition would be made from unchecked bytes), executed packages and request samples are read-gated. Binder photo albums leave locked photos out. - Document list/metadata rows carry scanStatus / scanFamily / scanOutcome. - ConfigMap kamo.antivirus.* (enabled: false until KamoAntivirus is Ready); ANTIVIRUS_INTERNAL_AUTH_SECRET from mlos-internal-auth.

  22. · SecurityService

    每个订单行都有自己的市场名称

    行从他们的互动中携带 marketId / marketTitle (一个查询由 一个组织有两个零售市场,可以看到哪个是 一个订单来自而不是两个在第一个市场的名称下。 在市场被跟踪之前制作的记录保持为无效。

  23. · KlusterServices

    防病毒警报(扫描仪停机、签名过时、镜像门失效、p95、检测峰值、保留积压)

    人工施用(监测/不是一项综合目标)。

  24. · kamo-shared-library

    租赁需要一个租户; 市场上的承诺; 取消, 重新日期, 退房, 返回和取消预订

    - createRentalRequest 拒绝一个缺失或外国客户帐户,记录 市场(资产的,否则选择的一个)的参与,并验证日期 确认 会拒绝没有帐户的请求。 - setRentalRequestAccount / setBookingAccount 将租户移动到另一个帐户,并 从不清除它;两者都响应更新的记录。 - 请求:取消/解码器(IntentStatus.CANCELLED,保留原因)和新日期(与 预订:退房(预订的FulfilmentOrder IN_PROGRESS ) 、 返回或结束(COMPLETED;CommitmentStatus.FULFILLED;延迟和损坏) 费用加入总额;条件说明 ) , 取消(废止,在它过期之前 ) , 和 新的日期(仅限结束时间 ) , 每个日期都检查资产下的其他预订 在资产上设置行锁,以便两个确认不能重复入账。 - EngagementLifecycle:VOIDED 承诺不承诺任何内容;所有承诺都被取消,没有订单 已经取消。 - 返回的预订不再保留其日期。 资产的保留日期可读 (findRentalAssetBookings ) , 用于日期选择器。 - DTOs:请求、预订和资产的marketId/marketTitle;预订 -> rentalRequestUid, rateType, checkedOutAt, returnedAt, 费用, 注释, 取消原因; request -> cancelReason, bookingStatus. 按市场和加载资产进行列表过滤, 预订和移交在一个查询中每个而不是每行。 - 租赁资产:描述列;市场验证为组织的租赁市场; 更新时可移动;否定率拒绝;重复代码更新时拒绝; 无法删除有租赁记录的资产(请关闭它 ) 。 - 指数:按聘用情况分列的****************,按租赁情况分列的承付款项 资产,按承诺履行,按组织和市场租赁资产(手动应用 ) 。

  25. · kamo-internal

    市场 — — 组织自己的市场,用自己的名字

    "商业"已经不复存在。 市场是成员们所定义的(标题 + 描述 ) ; 其业务范围仅限于其种类。 - 导航选项是市场。 有一个市场,它是该市场,由其 标题(如前 ) ; 两个或更多的它打开一个菜单,每个行 market — 标题,下面的描述,行的图标 每次打开该市场的标签页。 一个缓存的列表源 两个导航, 发射台和标签, 刷新市场变化. - 导航菜单行采取可选的描述(popover,轨道,顶部栏 ) 。 - 市场表格的类型框是"业务领域 " ; 每个选项说 它给市场带来了什么,一个锁定的应用程序命名了它所需要的应用程序 名称和描述帮助解释了什么是"文件"和"目录 " 会员请参阅市场菜单。 - ACCESS_COMMERCE 读作"访问市场 " ; 贷款页面指向 设置 → 业务领域。

  26. · MediaService

    MediaService 使用防病毒软件检查附件,并在每次读取时拒绝锁定的文件

    - 聊天附件(会员聊天,网络聊天访问者公开 ) , 系统错误文件,增长中心图像 在 storeContentAddressed 中与其上下文(成员、对话)一起检查; Canva 当平台形状 (422) 到达客户端时,拒绝会到达客户端 ANTIVIRUS_BLOCKED {family } / 503 ANTIVIRUS_UNAVAILABLE ) , 而不是包含在 500 中。 - 会议背景 (raw MinIO , 公共桶) 首先通过 AntivirusUploadGuard。 - /attachments/link (dedup by hash) 拒绝内容 防病毒锁定 (422 ) ; 被保留的文件可能被删除 链接并保持不可读,直到检查。 - 附件进行扫描 {状态,家庭,结果 } 上传回答,现场消息 框架和历史记录; 举行期间 PENDING。 - ImagingProxyController (原始和预览 ) , 访问者下载,系统错误文件, Growth Hub 图片、材料和 Canva 材料读取调用读取门:423 ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING,在 missing-content 410 之前进行检查,因此保留 代理现在在内容状态之前检查成员资格。 - ConfigMap kamo.antivirus . * (已启用: false 直到 KamoAntivirus 准备就绪 ) ; 请输入您的用户名和密码。

  27. · ConversionService

    ConversionService 用防病毒软件检查上传,完成保留的文件,重新检查新的签名

    取代服务中的 clamd 客户端(malware/ package、UploadScanGuard、QuarantineStore、 与共享库的反病毒软件: - /upload, /replace, /templates/upload 在 ImageService 内的任何行或行组之前进行检查 对象被写入(HOLD 允许 ) ; 拒绝使用平台形状: 422 ANTIVIRUS_BLOCKED 503 HASH_MISMATCH 服务器无法找到请求的资源 响应带有扫描 {状态,家族,结果 } ; 一个持有 文件处于待处理状态,一旦存储就会转换。 管道发出一个"扫描"阶段。 - /register-existing (通过引用删除数据)拒绝内容 Antivirus 锁定 (422 ) 。 - 声音效果 (raw MinIO ) 通过 AntivirusUploadGuard (无保留, 503 下降时 ) 。 - QuarantineStore 不再存在,因此不会将任何内容写入隔离池; 在它里面被触摸。 - antivirus.hold.verdict (队列 antivirus-hold-completer ) - > AntivirusHoldCompleter ,然后执行 发布文档的普通转换;存储故障naks重新交付。 - antivirus.signatures.promoted (队列防病毒重新检查) -> AntivirusRecheckService:每 标记的哈希,其字节被存储(解锁 + 通知 + AUTO_CLEARED 报告)和 CLEAN 在过去 14 天内首次查看的内容(LOCKED_LATER + alerts ) , 来自 MinIO , 订阅者会重试,直到 ANTIVIRUS 流存在。 - 配置图: kamo.antivirus . * (启用: false 直到 KamoAntivirus 准备就绪 ) ; 请输入您的用户名和密码。

  28. · kamo-shared-library

    交易属于成员定义的市场

    commerce_engagements.market_id (手动应用, FK 到 commerce_markets, 零售订单、服务工作、租赁和采购(以 org_id 为索引 ) 他们没有自己的市场栏目,他们从自己的记录中读取 与他们阅读客户账户的方式相同。

  29. · kamo-internal

    防病毒 UI — 保护密封文件出现的所有位置、防病毒中心、平台选项卡、警报和帮助

    设计套件(应用程序/组件/防病毒 ) : 带有五个动画面孔的 ProtectionSeal(检查、 被保护, 警告, 被阻止, 无法检查; 品牌 + - - av - * 令牌, 减少的运动尊重 ) , BlockedFileCard / LockedAttachment / LockedOverlay, 带有打开安全副本的警告横幅, MessageAntivirusBanner, ShieldClip, FalseAlarmDialog ( " 我认为这是一个错误 " ) , 来自 @kamo/antivirus-core 0.1.0 的逻辑(密封状态,原因解析器接受 检查您的系统是否有恶意软件(例如,ANTIVIRUS_BLOCKED / MALWARE_DETECTED / ANTIVIRUS_CHECKING / ANTIVIRUS_UNAVAILABLE / SCAN_UNAVAILABLE ) 。 表面:邮件阅读窗格(封条,拆除的部件锁定在其原来的名称,消息 横幅, 内联图像保留, 下载所有跳过他们, 列表行屏蔽剪辑, 身体缓存 v2 ) , 编辑器/聊天/短信/SI托盘(检查 + 阻止状态 ) , 收件人聊天气泡,文档 (检查阶段,封条,锁定动作,警告门 ) , 以及每次上传时的拒绝祝福 (知识库,头像,职业,系统错误,声音,帐户/患者/应用程序文档,标志 ) 。 防病毒中心地址为 **************** (VIEW_ANTIVIRUS; 策略需求 MANAGE_ANTIVIRUS_POLICY ) : 保护球,计数KPI,趋势/来源/家族图表,实时 威胁时间线、有帮助的策略切换、假警报。 平台选项卡 (MANAGE_PLATFORM_ANTIVIRUS ) : 扫描器运行状况、刷新/回滚发布、审查队列、 三种通知类型,防病毒导览,防火墙导览,安全导览 /api/antivirus BFF,服务类型 ANTIVIRUS(41)的镜像,权限 698-700 和 MANAGE_PLATFORM_ANTIVIRUS (shared-lib 332f7275) 以及七篇帮助中心文章。 Protection home widget 组件已构建但未注册:启动区需要一个 ANTIVIRUS_WIDGET 共享库尚未拥有的右侧块。

  30. · KlusterServices

    Svc_antivirus 登录 + ANTIVIRUS 流;转换/电子邮件可能消耗防病毒

    - svc_antivirus : STREAM.INFO/CREATE ANTIVIRUS ,发布 antivirus . > 和 rt.org . >, 订阅防病毒。 >和_INBOX。 > (秘密KAMO/NATS用户防病毒,SECRETS.md ) 。 - svc_conversion: ANTIVIRUS 消费者 API(保留判决,重新检查升级 ) , publish/subscribe antivirus . > , publish rt.org . > (记录的判决刷新 UI ) 。 - svc_email: ANTIVIRUS 消费者 API(邮件过滤器检测 ) , 防病毒。 - stream-bootstrap 作业提供 ANTIVIRUS (R1, 14d ) , 以便消费者可以首先绑定。 使用 nats-server -t 对实时服务器进行验证。

你们的宇宙正在等待。

只需几分钟即可免费开始。 随时随地添加产品 — — 无需迁移,无需新登录。

永久免费 — — 无需信用卡