变更记录
什么是新的。
平台的每一个改进,随着它的出货。
· kamo-internal
Alexa 链接状态简单的话, 试试看, 选择设备, 组织语音助理设置, 我的语音助理和 PIN, 每个通道通知, SI_ASSISTANT_REPLY
语音助理程序 P1-9, P2-4, P2-5, P3-5, P4-5 (网络 ) . 每个新的调用返回什么,直到它的后端回答 (404 ) , 所以这个在 iot-service 和 emailservice 之前发布。 @kamo/iot-core 0.12.0.
· kamo-internal
在会员个人资料中设置或删除管理员和所有者;编辑其他会员的照片
会员卡: 管理员和组织所有者坐在会员类型旁边,每个人都有自己的 只有当 SecurityService 接受它(GET . . . /leadership)时,才会执行 Make / Remove 操作 一个被拒绝的动作说明了为什么(不是针对你自己,所有者总是被拒绝的 ) 所有者或管理员的权限被保留,直到管理员的权限被取消 Roles & Permissions 选项卡遵循相同的答案:提供了所有者切换, 管理员角色复选框锁定时,管理员角色也会锁定,而不是唯一所有者 变更将被拒绝。 头像:编辑他人的个人资料现在列出,上传到,从中选择和删除他们 通过成员范围路径(从不包括编辑器自己的路径)访问头像库,并拒绝保存 "在任何地方使用"范围仅适用于您自己的个人资料或组织拥有的 AI 。
· SecurityService
所有者和管理员更改遵循一套规则;其他成员的头像是他们的
领导(组织领导服务 ) : - GET/PATCH **************** 用于配置文件页面。 - PATCH . . . / 访问所有者更改通过相同的规则(管理员现在可以更改所有者; 重复当前所有者标志为无变更 ) ; 管理员角色将随之移动到该位置。 - 角色列表只能根据这些规则移动管理员角色。 - 管理员不会降级为会员,直到该状态消失。 - 将组织的唯一领导人设置为非活动状态在写任何东西之前被拒绝。 头像: MemberAvatarController **************** 列表,上传,创建和删除头像 删除 TARGET 成员自己的头像(self 或 MANAGE_MEMBER_SECURITY / 打开 god 窗口 ) , 并 仅为组织所有的 AI 设置全帐户默认值。 编写于 2026-10-20,但从未提交; 移植到 main 并修复了问题(god ELIGIBILITY 不再通过,缺少的大小变体不再 PUT /members/{id} 现在会回复 400 来自他人库中的头像,而不是 400 来自其他库中的头像 记录并返回 200, 这就是为什么管理员的照片选择看起来保存,而不是.
· kamo-shared-library
所有者和管理员,总是保留一个领导者;管理员总是保留 CONFIGURE_SYSTEM
OrgLeadershipService 包含用于创建或取消创建组织所有者或管理员的所有规则: 只有所有者或管理员(或开放的神窗口)可以;没有人可以删除他们自己的;所有者是 每个组织都至少保留一个LEADER,一个活跃的团队成员 与状态 ACTIVE 谁是同时 **************** **************** 持有组织管理员角色的成员 每个级别结束后解析 ************** (CONFIGURE_SYSTEM) 为 GRANTED,并且 安全模型的 FORCE 规则,因此部门、职称、团队、成员覆盖或 FORCE_NUKE 可以 不再将管理员锁定在安全角色之外。 AI guardrails 仍然在它之后运行。
· kamo-shared-library
复活节彩蛋设置和唤醒调用实体 (TPWAKEUP)
声明 ai_easter_egg_settings、ai_wakeup_calls 和 ai_wakeup_optouts (kamoai-service ) **************** 这样 KamoInitializer 就可以重新创建它们。
· AIService
SI助理的声音转为Alexa
语音助理程序 (2026-10-27) P3-1, P3-5. 邮件地址(内部,X-内部授权 ) : 成员自己的助手对话通过相同的同步编排, 与声音风格 (两个短的口头句子, 没有临床或秘密 ) , 没有PHI工具 (EHR/健康包从来没有, 和 PHI 组织中的 PHI 敏感工具 ) , 风险电话举行并询问"我应该 . . . ? 说是或不是 。 " (发送, 钱, 安全和设备需要口头PIN是否被采取之前 ) , 一个截止日期后 该回合继续运行并提高 SI_ASSISTANT_REPLY 与电话推送 , " 把我通过 <SI> " 与该 SI 自己的会话(kamoai-service K5;暂停或退役的 SI 被拒绝 ) , 然后"将其发送到我的手机 " 。 编排钩子是加法的: handleMessageSyncDetailed 上的 TurnOptions、SyncTurn.held、一个工具过滤器 在 AssistantService.withTools 上,从 Tool Plane 的 _meta 中选择 PlaneTool.phiSensitive。
· EmailService
每种电话和语音通道、语音镜像和 SI_ASSISTANT_REPLY
语音助理程序 (2026-10-27) P3-5, P4-1, P4-2, P4-4. - GET/PUT /api/通知/频道和PUT * * * * * * * * * * * * * * * * * * * * (BELL始终开启 ) , 语音安静时间(默认21:00-08:00会员区 ) , 语音每日限制(默认10 ) 。 - raise ( ) : 电话推送尊重 PHONE 选择;NotificationVoiceSender 在提交后发送一张通行卡 IoTService /api/iot/internal/voice/notify (语音安静时间、Kamo 请勿打扰、正在运行的日历事件和 RPM_ALERT 和 SI_AUTH_REQUEST 永远不会发生这种情况 ) 。 - **************** and /read for '问 Kamo Universe 什么是新的 ' . - SI_ASSISTANT_REPLY 不属于任何应用;列在 SI_AUTH_REQUEST 之后。
· SecurityService
终止 SI 的状态,状态计数,不删除 /account
- SI 的终止状态在剩余的 SI 退役生命周期之后运行 保存(停止运行,电话线,座位和许可证释放,证书和 会话被撤销,任务被移交,历史记录被保留 ) 如同 Retire 一样,加上状态本身的 MANAGE_MEMBER_SECURITY;SI 从不 工作站选择随之而来。 其他状态是 用普通的 SI 词语拒绝;终止的 SI 被告知它不能返回。 - 快点 快点 customers/status-counts:每个都有一个分组的组织限制查询。 - POST members-subscribers/status (终止/激活:仅限 members.is_active, 永远不会用户; MANAGE_MEMBERS)和客户/状态(Deactivate/Activate: 只有 accounts.is_active ; EDIT_ACCOUNTS 或 DELETE_ACCOUNTS ) 。 - members-subscribers?include=all 列表终止了 /account 的成员。 - DELETE customers/{uid } 仅适用于平台运营商(打开 god 窗口 ) 。
· kamo-shared-library
每种类型的通道选择、语音静音小时和上限、SI_ASSISTANT_REPLY、语音活动类型
语音助理程序 (2026-10-27) P3-5, P3-6, P4-1 声明手动应用的内容: member_notification_channels (成员,类型,PHONE|VOICE,已启用 ) , **************** **************** 最后添加了 **************** 和 IotActivityKind VOICE_ASSISTANT_TURN, VOICE_ALERT_SENT。
· kamo-internal
别名域 DNS 记录、同事的默认别名、真实的 send-as 地址
设置 -> 电子邮件 -> 域名 -> 别名域名:每个域名显示它是否 准备好或等待 DNS,DNS 记录对话框列出 MX、SPF 和 DKIM 它需要的记录(来自EmailService ) , 每个都实时检查,并配有复制按钮。 作为同事编写现在打开他们的默认别名,同样的规则 成员自身的默认值随之而来 (colleagueDefaultAlias ) 。 成员选项卡的"Goes out as"读取服务器的 sendsAs,而不是猜测 从第一个别名域副本,这是错误的,当没有别名域是 默认值。
· kamo-shared-library
声明语音辅助链接列和表(个人链接、上次错误、PIN、语音配置文件)
iot_alexa_links 上的列 (last_error_code/at, 等待授权选择, 所有者类型, 所有者成员ID, 网站ID, iot_voice_org_settings, iot_voice_persons, iot_voice_pins 表,手动应用 从 iot-service **************** 获取,以便 KamoInitializer 能够重新创建它们。
· MCPGatewayService
会议_加入_外部, ************** 会议_取消_外部 (TPEXTMEET)
SI 根据团队成员提供的详细信息加入外部会议(Zoom、Teams、Meet、Webex、GoTo、任何提供商 ) , JOIN_MEETING (身份保护器在未经验证的通道上保留它 ) , 权利 VIEW_MEETINGS + ACCESS_VOIP (在kamoai-service中与请求者的联盟再次检查 ) , 仅在经过验证的服务器上 请求(引用、运行本身、确认或已登录的团队成员的会议行 ) ; 从不在 SI 自己的 密码和密钥永远不会返回到模型中。 meetings_join 点在此处的外部链接。 警卫:不披露(呼叫的观众是外人 ) , 不是内容,批准短语,金币再生。
· kamo-internal
抵押贷款报告可从每个MLOS屏幕访问,已打开过滤
- 报告链接现在可以预填充参数: **************** (日期 预设或开始. . 结束范围,逗号列表的多重选择 ) 一个链接永远不会扩大一个成员所看到的内容。 - ReportQuickLinks:工作屏幕的报告菜单。 它询问服务器哪些报告 该成员可以运行(每页一次)并仅提供这些,因此它不会渲染任何内容 对于一个无法打开的成员。 - 放置在管道工具栏,HMDA LAR页面,董事会,文档,资本和风险, 承保、定价和治理屏幕;在贷款页面上打开每个报告 过滤到该贷款(状态审计,TRID时间,条件,文件,锁, 锁定事件、供应商订单、SI决策 ) ; 市场设置链接许可和 完整的配置历史记录(准备状态面板仅显示最后六个 ) 。 - 治理的"公平贷款 — — 即将推出"条已不复存在:公平贷款成果是 一个真正的报告。 - 按揭贷款货架类型和图标。 与 kamo-shared-library 17a7a233 和 SecurityService 6ce48d17 配对。
· kamo-internal
管理员可以编辑管理员角色,并将其锁定权限固定在
管理员(完全访问权限)角色显示为受保护,无法打开 发送 lockedRights (调用者持有该角色 ) , 该角色打开并且其权限可编辑,而这些 分支授权/撤销现在可以覆盖强制和自动授权 锁定的行,就像每行的开关已经做的那样。 角色的安全模型保持只读。
· KlusterServices
Postfix 从邮件数据库中学习别名域
组织的别名域(设置 -> 电子邮件 -> 域)曾经需要 virtual_alias_domains 和手写地图在这里编辑。 EmailService 现在保留 在mailserver(KamoMailAliasDomains)中创建一个alias_domains表,postfix读取它: mysql-virtual-alias-domains.cf 接受该域名,并且 * * * * * 只将 local@alias 传递给 local@target 当这是一个真正的帐户或别名,所以未知的名字被拒绝在RCPT。 添加:静态域和kamouniverse.com平台地图保持领先 该表已经存在(由手工创建,并由 EmailService 在 一个名为缺失表的映射会在每次查找中失败,所以它也在 mysql-init-configmap.yaml 用于新的数据库。
· SecurityService
拥有管理员角色的成员可以编辑其权限
PUT /api/security/roles/{id } , 将管理员角色的权限传递到 **************** 在任何其他写入之前,因此拒绝保存写入 只有持有该角色(或有打开的 god 窗口)的调用者才能执行此操作; 关闭 CONFIGURE_SYSTEM 的保存是 400,原因很简单。 对于这样的调用者,角色读作 carry lockedRights 。 角色上的安全模型保持锁定。
· kamo-shared-library
管理员可以编辑管理员角色的权限,从不关闭 CONFIGURE_SYSTEM
管理员(完全访问权限)角色存储在 isAllowEditSecurity=false,因此没有人可以更改 这是唯一的门:它只接受它的权利 org 的 role_admin_id 角色,并拒绝任何保存(在正常化级别后 ) , 留下一个权限 该集合是 CONFIGURE_SYSTEM 加上其祖先: 打开设置> 基本和每个角色写的权利, 所以它的持有人可以总是回来. SecurityRoleDTO.lockedRights 告诉编辑器哪些交换机被固定。
· EmailService
别名域自行接收和签名;默认为同事和自我
邮件服务器现在从 EmailService 而不是从 KamoMailAliasDomains 保留一个 alias_domains 表,并且在其上保存了所有的域名 KamoMail MySQL数据库(在启动时创建; postfix 读取它 - 参见 这里的local@alias 是一个真实的目标,而local@target 是一个虚拟的目标 添加/删除同步它,然后启动调节路由行,这些行 是的,是的。 每个不是平台主机的别名域都会在那里获得一个 DKIM 密钥,并且 EmailSmtpService.sendAsMember 用现有的邮件签名 平台主机保留rspamd的密钥,所以kamouniverse.com邮件是 GET **************** 列出 MX、SPF 和 DKIM 的信息 记录域的需求,每个实时检查。 另外: - AliasView.sendsAs:默认别名实际发送的地址(其副本) 在组织的默认别名域,否则本身 ) - 设置选项卡猜测。 - /sendable 标记同事的主邮箱 (isPrimary ) , 因此编写为 他们可以在他们的默认别名下打开。 - 成员可以设置自己的默认发件人,而不需要 MANAGE_EMAIL_ACCOUNTS。
· SecurityService
贷款官员和投资者挑选按揭贷款报告,证明了车队的休眠
第二百一十二条 人民法院审理的案件,至少应当有两个审判人员 组织的交易(比每个成员更窄,所以选择器列出的名称 对应贷款)。 - mortgageInvestors: 组织定价快照上的投资者名称。 **************** 运行所有十八个报告 (kamo-shared-library 17a7a233 ) , 在 THIS 服务的 Hibernate 6.2 上,没有数据库:每个语句每 报告构建是针对实际映射编译的,使用默认值和每个 这样的话,就会产生一个新的参数,并且组织的贷款查询会回答一个合成贷款 该库基于 6.5 版本,并且 Java CI 无需运行 这是唯一的一个地方 6.2 不兼容会显示之前,一个成员 打开报告。
· kamo-shared-library
按揭贷款的18份审计、合规和运营报告
报告工作室没有抵押贷款报告; MLOS有一个真正的合规报告( HMDA LAR 页面)和一组无法过滤、导出或安排的工作屏幕。 这增加了一个按揭贷款文件夹和十八个报告,所有组织范围, 所有在 View Mortgage Pipeline 上的门控,所有的钻探,保存的视图, 调度和 CSV/Excel / PDF 导出: - 监管:HMDA LAR审查,HMDA编辑检查,公平贷款结果(筛选 按申请人群体、五分之四标志分列的按揭索要报告工作表,TRID 披露时间(一般与特定工作日,邮箱规则 ) , 反向 行动及时性(Reg B 30天) - 管道与生产:管道老化、生产与循环时间、辐射与 透過式 - 锁柜台: 速率锁过期, 锁延长, 重新锁定和休息 - 承保和运营:条件老化和豁免,文件要求, 供应商订单周转 - 审计: 贷款状态变更审计, SI 决定和覆盖审计, 许可证 合规性、配置变更审核 框架:ReportFolder.MORTGAGE 和 ReportRowFilter — 应用成员的过滤器 对于报表,使用与 SQL 路径相同的运算符意义,返回已完成的行 其列被计算(状态中的天数,截止日期结果 ) 。 MortgageReportSupport 保持每笔贷款读取一个标量投影,由 组织 (LoanFile -> AppMortgage -> 组织 ) , 因为大多数抵押表 无组织列,并且实体加载会针对每个一对一子实体触发查询。 每份报告的帮助文本都说明了它看不见的内容:没有细目费用(没有容差) 检查),没有打算继续的记录,在系统外发出通知,未填写LAR
· kamo-shared-library
AiExternalMeeting 实体用于 SI 加入第三方会议 (TPEXTMEET)
声明 ai_external_meeting (kamoai-service **************** ) , 用于创建会议 所以 KamoInitializer 可以重新创建它。
· AIService
通过中继的 GPT-Live 会话(LIVE_AUDIO 门票 ) , 通过实时会话进行探测
TPGPTLIVE (所有者 2026-10-27, 试点 ) 。 GPT-Live 的主 WebSocket 只接受项目密钥,因此 LIVE_AUDIO 票据 路由组织的 REALTIME_AUDIO 订单,保留其实时模型并转发 wss : / /v1/live/sessions 并添加密钥 实时客户端秘密从不会为实时模型制作;实时客户端秘密是用于实时模型的 实时模型的 REALTIME_AUDIO 探头打开 GPT-Live 会话(session.start -> session.started -> close ) 。 继电器 使用<base>/live/sessions , LiveKit 名称提示 gpt-live - * = REALTIME_AUDIO;已知模型 gpt-live-1。
· SecurityService
从 CALC_SIMPLE 播种十个按揭计算器权限
无论谁今天可以打开计算器发现计算器 -> 抵押贷款的引导添加 CALC_MORTGAGE _ * (shared-lib 1ae01ae8 ) ; 然后每个信用卡都会单独授予或撤销。
· kamo-internal
在"设置"中和成员的邮箱选项卡上设置别名域
设置 -> 电子邮件 -> 域名获得别名域名卡:添加一个已验证 域名,删除一个,选择默认或没有。 成员的"电子邮件和邮箱"选项卡现在显示主邮箱的地址 在每个别名域(Dylan@kamocrm.com 也是 Dylan@kamouniverse.com ) , 以及 添加别名表单获得一个域选择器,以便别名可以直接进入一个 别名域。 代理不再将别名限制在组织的单个默认域中; EmailService 已经拒绝了一个组织不持有的域。
· EmailService
管理组织的别名域,并允许在这些域上使用别名
org_alias_domains 仅通过手写 SQL 存在。 新 /api/email/alias-domains 列出它们(组织的任何成员)并添加、删除 只有在以下情况下才能添加域: 这个组织已经证明它拥有它,从来没有一个它的邮箱已经活着。 KamoMail createAlias 现在接受别名域上的别名 (sales@kamouniverse.com ) : 该域名没有 virtual_domains 行,因此别名 在目标邮箱的域下存档;postfix 通过 仅仅是源,并且已经在 virtual_alias_domains 中列出了该域。 还修复了 AliasResponseMemberIsTextTest 错误,此错误在上次提交中被打破 将 aliasDomainAddresses 添加到 AliasView。
· kamo-internal
十个按揭计算器下计算器 → 按揭
每月付款, 购买负担能力, 贷款金额从付款, 首付, 关闭成本 估算器, 现金结算, DTI, LTV (与 CLTV 和 HCLTV ) , 额外付款 / 提前支付和一个 摊销时间表,每个计算器模式在自己的工具窗口中,由一个共享的套件构建 (mortgageUi.tsx ) : 计数结果,品牌色调甜甜圈,酒吧,仪表和平衡曲线,金钱 和百分比字段与滑块, 输入保持与窗口, 减少运动尊重. 每个组都由其自身的 CALC_MORTGAGE _ * 权限(shared-lib 1ae01ae8,ids 650-659)进行门控 一个成员只持有一个计算器在其位置。 数学 在payment.ts/affordability.ts上面的lib/mortgage/calculatorMath.ts中有测试 计算器旅游获得一个抵押贷款步骤;复制在字典中(aa98d5f2 ) 。
· kamo-shared-library
十个按揭计算器权利下的计算器 (650-659)
CALC_MORTGAGE_PAYMENT , _ 可负担性,_贷款从付款,_首付,_关闭成本, _CASH_TO_CLOSE, _DTI, _LTV, _EXTRA_PAYMENT 和 _AMORTIZATION:每个按揭计算器一个, ServiceType.CALCULATOR 除了九种现有模式之外,还有一个独立的根。 RoleRightHierarchyTest: 值 403 -> 413,独立 79 -> 89,根 124 -> 134。
· KlusterServices
每个会议占用者的身份都是其自身经过验证的会话的身份 (mod_kamo_presence_identity)
TPMEETAUTH (业主订单 2026-10-26 ) : SI的耳朵读取每个端点谁 存储的presence_identity 将客户端的身份识别信息删除 只对令牌会话拥有自己的 <identity>,因此匿名 guest.meet.Meet 或 吉加西的腿可能是伪造的 这个MUC模块剥夺了每个客户端 并且只写入会话的 JWT 上下文(副车会签署它) 来自成员自己的 ***;客户端携带 guest-<hex> ) Prosody pod(删除伪造身份,写入令牌身份 ) 。 应用 2026-10-27 04:32Z 无现场会议 (jicofo 统计: 0 场会议, 0 位观众) Jicofo和Jigasi重新连接,客人获得代币。
· MCPGatewayService
在会议中,该行的发言者决定权限(已登录的主管命令,团队成员询问,客人是任何人)
TPMEETAUTH (业主订单 2026-10-26 ) . kamoai-voice 会议名称 行 a 调用响应 (X-Kamo - Meeting-Turn, 从不调用模型 ) ; kamoai-service 谁说的,从该端点自己的流和验证 身份: - 监督员(登录,或客人他们确认 ) : 他们的顺序,没有 不从属联合(orderRef meet : < turn> 或 auth : < id> ) , 没有弹出; - TEAM_MEMBER: 经过身份验证,身份保护器允许 SI 使用其身份验证器 仅拥有自己的权利; - NONE/未读/在发言者的流中不匹配:任何人级别。 命令是按行保持,从来没有在运行的关键,所以一个发言者的命令 会议中的identity_request_confirmation 用于确认会议的身份 该行的发言者 (about=meet-turn : < turn > ) 。 测试: ToolCallPipelineMeetingTest (6 ) 、 IdentityPackTest(+1 ) ; 2013年绿色全套。
· SecurityService
已登录的主管说,会议行是工具平面可以借用的一个命令 (meet : < turn id>)
TPMEETAUTH (业主订单 2026-10-26 ) : 在 Kamo Meet 一个已登录的主管的 要求是他们的直接命令(没有不服从联盟 ) 通过 kamoai-service 的发言人归属验证线路(每个 参与者自己的麦克风 ) , 并将其引用为 meet : < turn id>。
