优化: 所有剩余UI/UX待办一批完成(持久化+AuditLog+解耦+total+原12大改+P2)
持久化(P1-c):新建 usePersistedRef composable,Tasks/AuditLog/ProjectDetail 等接入 localStorage
AuditLog(P1-d):后端 list_tool_executions 加 WHERE 筛选+返 {items,total,has_more},前端对接+长列折叠+筛选持久化
数据源解耦(P1-g):ProjectDetail projectTasks 按 project_id 独立加载 + ChatInput @项目联想独立加载(不读 store.tasks 当前页)
GitChanges(12a):后端 get_module_commits 加 git rev-list --count 返 total,前端显真实总数
原12大改:Dashboard 统计卡压底行(1)/Projects 列表卡片视图(2)/project_event 埋点排序(3)/TaskDetail 重设计(4)/IdeaDetail 重设计(5)/KnowledgeDetail 重设计(6)/界面持久化+侧栏Ctrl+B+审批数字键(7)/ProjectDetail 三栏改两栏(10)
P2打磨:文件浏览器(FileTree去重/FilePreview行号.md Diff/selectedFilePath归位)/settings反馈(假保存/端口校验)/AI会话(try-catch/scrollIntoView)/后端计数(move_queue事件/timeline total/workflow分页/import_batch分块)/杂项(TopBar/ConfirmDialog键盘/CIStatus i18n/ToolResultBody/ModuleNode/ApprovalDialog全选)
This commit is contained in:
@@ -625,9 +625,11 @@ async fn route_list_skills(state: &State<'_, AppState>) {
|
||||
/// `state.clone()`(tauri::State Clone,对齐 route_send_message:468-478 ai_chat_send 调用模式)。
|
||||
/// 不传 query/project_id/status 即走 list_active/list_by_query 空 query 全量等价路径。
|
||||
async fn route_list_entities(state: &State<'_, AppState>) {
|
||||
// list_projects(None query) → list_active 全量(deleted_at IS NULL + created_at DESC)。
|
||||
let projects = match list_projects(state.clone(), None).await {
|
||||
Ok(ps) => ps,
|
||||
// list_projects(None query) → list_active_with_activity(问题3:按最近活跃排序,
|
||||
// 返回带 last_active_at 的 ProjectActivityRecord)。本路由仅透传项目清单给 miniapp
|
||||
// 联想浮层(消费 ProjectRecord 字段),不消费 last_active_at,故剥出 .record 还原类型。
|
||||
let projects: Vec<df_storage::models::ProjectRecord> = match list_projects(state.clone(), None).await {
|
||||
Ok(ps) => ps.into_iter().map(|a| a.record).collect(),
|
||||
Err(e) => {
|
||||
tracing::warn!(error = %e, "[remote_bridge] list_entities list_projects 失败,降级空 Vec");
|
||||
Vec::new()
|
||||
|
||||
Reference in New Issue
Block a user