Add settings pages for HRS, Docs, Support, KB, Notes, and Chat
Create ComingSoonTab shared component and 6 new feature settings pages with coming soon placeholders, feature flag guards, and help tips. Links from FeaturesMan...
Auto-refresh UI after feature toggle and role changes
FeaturesManager and SecurityRoleManager now call router.refresh() after mutations to re-fetch org context and user session data, reflecting permission and app c...
Auto-refresh Redis session rights after feature/role changes
FeatureController and SecurityRoleController now rebuild the caller's session rights in Redis after enable/disable, role create/update/delete, and recalculate-r...
Implement app management UI with backend integration and dynamic permissions
Rewrite FeaturesManager to use backend API for app enable/disable with root-org gating for in-dev apps. Update NavPri to gate all nav items by org feature flags...
Add FeatureController for org app enable/disable management
REST endpoints for managing organization app features: GET features list, POST enable/disable with CONFIGURE_SYSTEM permission check, root-org-only gating for i...
添加包含服务类型、权限和特性控制的应用程序管理系统
调整服务Type enum:添加核心/已失效的旗帜,更名 DOC MANAGER DOCS 和AI CHAT AI SPUPORT, 增加支持/NOTES/POS类型, 贬值的STORAGE/DOC CLASSIFIER/ 医生。 为HRS、Docs、AI Support、VOIP、Email, 支持 笔记和聊天应用程...
添加电子邮件别名和共享邮箱UI支持
作曲家 “ from:” 下拉, 用于在主名、 化名和共享邮箱之间切换 地址 电话地址 在电子邮件设置中新建“ 邮件箱” 第 6 个选项卡, 用于全局管理员管理 化名和共享邮箱。 在成员上插入别名/共享邮箱管理 设置页面。 用于共享邮箱上下文切换的文件夹侧边栏中的邮箱切换器 。 浏览共享邮箱时,信件浏览器的路由会通往共...
Add email aliases and shared mailbox support
New MailboxManager provider capability interface for alias and shared mailbox CRUD. KamoMailMailboxManager implementation manages dovecot/postfix virtual_users ...
添加电子邮件别名和共享的邮箱实体和寄存器
新建用于电子邮件的 JPA 实体 提供者计划: Email Alias Entity (每个成员为别名), 共享Mailbox Entity(具有加密的IMAP证书的全网共享邮箱), 和共享邮箱存取实体(共享邮箱会员访问权限).
添加 Pre TICKET 状态与启动聊天选项
- 票房创建格式:两个按钮——"开始聊天"(预选,无标题) 需要,只是话题)和"提交票"(有标题的全票) - 票头:状态为PRE TICKET时的"转出票"按钮, 打开需要标题的对话框,调用 PUT/tickets/{id}/convert - 状态包:以蓝灰色徽章显示的 PRE TIKET - 新的代理路线: ...
Add PRE_TICKET creation and convert-to-ticket endpoint
- createTicket: when preTicket=true, sets status to PRE_TICKET, skips assignment (no title required) - PUT /tickets/{id}/convert: converts PRE_TICKET to NEW, ...
在创建请求时添加 Pre TICKET 状态和 Kicket 前旗
用户启动的聊天首个会话的新状态PRE TIKET( 14) 聊天时未正式提交罚单. 可转换为 a 以后通过设定头衔和更改状态获得完整票.
Add POST **************** endpoint
Triggers org-wide member_rights_applied recalculation. Needed after schema migrations or manual DB changes to permissions.
Use targeted role-scoped rights recalculation
SecurityRoleController now uses updateRoleMemberRightsApplied() to only recalculate members who have the modified role, instead of recalculating all members in ...
目标权利重新计算,以反映职能、职称和角色变化
- 部门服务:只重新计算受影响部门的成员 创建/更新/删除后 - JobTitleService:只重新计算有受影响职称的成员 创建/更新/删除后 - 成员权利应用服务:添加更新 重新计算只有指定具体角色的成员 - 固定的 QQ 用于查找 ByOrganizationId 而不是找到 All( 正在将每个成员全部装入)...
在新成员创建后重新计算成员 rights 应用
Call update Member Rights Applied on the new member after based 后对新成员进行更新的调用程序 创建组织成员并创建组织小组成员 每个人的角色权利立即得到落实.
Granular 角色编辑,标签互换,团队成员支持
- 添加 AllowEditTitle 和 AllowEdit Security 到 SecurityRole 接口 - 允许编辑成员/团队成员角色的安全设置(以前全锁) - 交换“ 成员” 和“ 团队成员” , 显示带有父类行为标签的标题 - 通过发送受保护角色的原始 DB 标题来防止意外标题覆盖 - 在编辑系统角色...
Migrate Everyone role to Members and create Team Members role
- Rename ROLE_EVERYONE_ID column to ROLE_MEMBER_ID - Rename existing "Everyone (Applies To All)" roles to "Members" - Set **************** flags on existing sys...
Enforce role protection flags and add parent label support to session
- Enforce isAllowEditSecurity in SecurityRoleController update endpoint - Add parentMemberTitlePlural and parentTeamMemberTitlePlural to *** session - Resolve p...
添加颗粒式角色保护旗和团队成员系统角色
- 在 OrgRole 实体中添加 AllowEdite Title 并添加 AllowEdite Security 旗帜 - 重命名角色EveryoneID 到角色MemberID on Organization, 添加角色团队MemberID - 在 Org 创建中将“ Everyone( Applies To A...
Add Support section to settings page
Adds Topics, Notifications, and Status & Response Times cards that link to /support?tab=settings.
Add manual job trigger controller with duplicate execution guard
POST /api/daemon/trigger/{jobName} triggers any Quartz job immediately. Returns 409 if the job is already executing. GET /api/daemon/trigger/status returns runn...
Remove old help system, add support nav items
Delete app/help/ and app/components/help/ directories. Add SupportButton to NavTop toolbar and Support menu item to NavPri sidebar navigation.
Add frontend types and API proxy routes
TypeScript interfaces for all support DTOs and 13 API proxy routes forwarding to MediaService for topics, tickets, and reporting endpoints.
添加支持票服务、REST控制器和STOMP中继器
执行支持票系统的MediaService后端: - 支持TopicService:用于Org范围支持主题的 CRUD - 支持指定服务:圆形robin(带有悲观锁),手动接车,管理员指定 - 支助通知服务:NATS代理通知 - 支持TicketService:售票生命周期(创建、状态、优先级、分配、重新分配、升级、费率...
Add deep-linking support to notes page via query param
Support /notes?id={noteId} URL pattern so AI chat source links can navigate directly to a specific note. Opens the note in edit view when the page loads with an...
Include clickable source links in RAG context for AI chat
Update RagClient to embed markdown links in the context sent to the AI model. KB articles link to /kb/{guid}, notes link to /notes?id={noteId}. Instructs the mo...
Add AI processing toggle to notes UI
Add aiProcessingEnabled field to Note types and toggle button in NoteEditor toolbar. Members can enable/disable AI processing per note, which controls whether n...
Route /api/notes to KBService instead of SecurityService
Notes management has been moved from SecurityService to KBService.
Pass memberId to RAG for note-aware AI chat
Add extractMemberId to SessionHelper. Update RagClient to send memberId in search requests so RAG returns both org KB articles and the member's own AI-enabled n...
Add note embedding support to RAG pipeline
Add NoteEventConsumer for NOTE_EVENTS NATS stream and NoteEmbeddingPipelineService for processing notes. Update Qdrant to store sourceType, memberId, noteId. Se...
Add notes management with RAG integration
Move notes CRUD from SecurityService to KBService. Add note encryption, NATS event publishing for RAG pipeline, and AI processing toggle support. Notes with AI ...
Add AI processing column and note embedding records table
Add AI_PROCESSING_ENABLED column to notes table and create NOTE_EMBEDDING_RECORDS table for tracking note RAG vectorization.
在注释数据模型中添加 AI 处理支持
向 Note 实体、 DTOs 和请求添加 aiProcessioned 字段。 创建用于跟踪的备忘Embedding记录实体和寄存器 注: RAG管道中的矢量化.
Use sized avatar variants — medium for profiles/emails, small for nav/lists
Add size parameter to fetchMemberAvatar (defaults to 'sm'). Email signatures, email sending, profile headers, posts, comments, and hex heads now request the med...
Support multi-size photo avatar uploads and crop endpoint
Update uploadPhotoAvatar to accept optional sized variants (fileSm, fileMd, fileLg) stored with suffix naming ({hash}_sm.png, etc). Add PUT /{id}/crop endpoint ...
Add photo crop tool with react-easy-crop and multi-size avatar storage
Replace the old PhotoCropDialog with an interactive crop tool using react-easy-crop. When uploading or editing a photo, users now select a square crop area (wit...
Load countries from CountryType enum, add flag icons to geo-blocking
Countries route now proxies to /api/security/countries (CountryType enum) instead of **************** (empty GeoLite table). Adds react-world-flags for country ...
Rewrite Access Blocks help tips for clarity
Explains all four sections (whitelist, blacklist, temp blocks, geo-blocking) in plain language. Adds a CIDR range guide with examples showing /32, /24, /16, /8 ...
Add RoleRightsSyncRunner to backfill missing role rights
When new RoleRightType entries are added to the enum, existing roles don't have OrgRoleRight entries for them. This runner checks all roles on startup and adds ...
Add access security system frontend
13 API proxy routes, access check module with CIDR matching, proxy.ts enforcement integration. Reworks AccessBlockManager (real API + geo-blocking), creates Sys...
为 MaxMind IP 对位置数据库添加 GeoLite2 同步任务
下载 MaxMind 的Quartz 排期工作( 每周星期天 3 AM) GeoLite2-City-CSV, 剖析 IPv4/IPv6 个块和位置, 装入 进行原子表交换 包括SHA-256DUP, 拉链滑行保护 同步状态跟踪 添加 *** 秘密提及K8s的部署.
