| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"35aeb2bcf9bc5aa42b398f61a4275e4b18b1f7ed","after":"460bb565c89a5143746c757939c0d43fe15e999f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub-eios/compare/35aeb2bcf9bc5aa42b398f61a4275e4b18b1f7ed...460bb565c89a5143746c757939c0d43fe15e999f","commits":[{"id":"460bb565c89a5143746c757939c0d43fe15e999f","message":"feat(eios): 入口读端口第二批,analytics 的 19 处跨组读改经端口\n\n- 端口加可选创建时间窗口(两端都缺省不加条件,等于原 dateFilter 逻辑),\n 新增 countOpportunities、sumClosedWonAmount、countQuotes、countContracts,\n 以及两个窄投影:listLeadAttribution(线索 → 商机 → 报价 → 合同金额,\n 按原嵌套顺序展开,累加顺序不变)、listCampaignCosts(金额空值为 null)\n- analytics 的 getMetrics、getFunnelAnalysis、getROIOverview、getCampaignROI、\n getChannelROI 改调端口;活动成本改用 actualSpend ?? budgetAmount ?? 0,\n 与原 Decimal 真值判断(实际支出 0 不回落预算)结果相同;leads 没有\n campaign_id / source_id 列,原回退链实际只取 source,改为直接取 source\n- 棘轮下调 138 → 119;按请求参数动态取 prisma[dataSource] 的时间序列 / 分布\n 不在清单内,未端口化,lanes/entry-read.md §7 登记\n\n门禁:type-check 0 错误;lint 0 错误、3184 条警告(去掉 5 处 any);\n单测 9004/9020(17 项基线失败,新增 11 项全过);inventory all --check 一致\n(permissions 只刷新 04 HEAD 读数,资源数仍 39)。\n文档:lanes/entry-read.md、README、改造计划 P5.2 入口 K 行与 P1 状态。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub-eios/commit/460bb565c89a5143746c757939c0d43fe15e999f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-30T19:40:46-07:00","added":["backend/src/modules/analytics/analytics.entry-read.test.ts"],"removed":[],"modified":["backend/src/modules/analytics/analytics.service.ts","backend/src/shared/entry-read/entry-read.local.ts","backend/src/shared/entry-read/entry-read.port.ts","backend/src/shared/entry-read/entry-read.test.ts","docs/eios-transformation/README.md","docs/eios-transformation/inventory/cross-app-access.md","docs/eios-transformation/inventory/data/entry-read.json","docs/eios-transformation/inventory/module-disposition.md","docs/eios-transformation/inventory/permissions.md","docs/eios-transformation/lanes/entry-read.md","docs/eios-transformation/改造计划-2026-10-28.md"]}],"total_commits":0,"head_commit":{"id":"460bb565c89a5143746c757939c0d43fe15e999f","message":"feat(eios): 入口读端口第二批,analytics 的 19 处跨组读改经端口\n\n- 端口加可选创建时间窗口(两端都缺省不加条件,等于原 dateFilter 逻辑),\n 新增 countOpportunities、sumClosedWonAmount、countQuotes、countContracts,\n 以及两个窄投影:listLeadAttribution(线索 → 商机 → 报价 → 合同金额,\n 按原嵌套顺序展开,累加顺序不变)、listCampaignCosts(金额空值为 null)\n- analytics 的 getMetrics、getFunnelAnalysis、getROIOverview、getCampaignROI、\n getChannelROI 改调端口;活动成本改用 actualSpend ?? budgetAmount ?? 0,\n 与原 Decimal 真值判断(实际支出 0 不回落预算)结果相同;leads 没有\n campaign_id / source_id 列,原回退链实际只取 source,改为直接取 source\n- 棘轮下调 138 → 119;按请求参数动态取 prisma[dataSource] 的时间序列 / 分布\n 不在清单内,未端口化,lanes/entry-read.md §7 登记\n\n门禁:type-check 0 错误;lint 0 错误、3184 条警告(去掉 5 处 any);\n单测 9004/9020(17 项基线失败,新增 11 项全过);inventory all --check 一致\n(permissions 只刷新 04 HEAD 读数,资源数仍 39)。\n文档:lanes/entry-read.md、README、改造计划 P5.2 入口 K 行与 P1 状态。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub-eios/commit/460bb565c89a5143746c757939c0d43fe15e999f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-30T19:40:46-07:00","added":["backend/src/modules/analytics/analytics.entry-read.test.ts"],"removed":[],"modified":["backend/src/modules/analytics/analytics.service.ts","backend/src/shared/entry-read/entry-read.local.ts","backend/src/shared/entry-read/entry-read.port.ts","backend/src/shared/entry-read/entry-read.test.ts","docs/eios-transformation/README.md","docs/eios-transformation/inventory/cross-app-access.md","docs/eios-transformation/inventory/data/entry-read.json","docs/eios-transformation/inventory/module-disposition.md","docs/eios-transformation/inventory/permissions.md","docs/eios-transformation/lanes/entry-read.md","docs/eios-transformation/改造计划-2026-10-28.md"]},"repository":{"id":160,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub-eios","full_name":"luoanwu/juhi-omni-knowledge-hub-eios","description":"巨嗨全域智库 EIOS 化独立改造仓(由本地改造副本推送;原 luoanwu/juhi-omni-knowledge-hub 不动)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2102641,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub-eios/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub-eios","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub-eios","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub-eios.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub-eios.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"eios/w0","archived":false,"created_at":"2026-10-30T09:22:23+08:00","updated_at":"2026-10-30T21:40:42+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |