Archived
M6(3/n): minute 与 report —— L8 两个模块补齐
minute(纪要):工作台五要素里唯一的主动动作。 纪要本身不产生责任,唯一通往责任的路是决议经登记触发起单 —— 登记人即来源。 正文可续、决议只增;同一决议不重复起单(起单一刻已有一条带来源的流在跑)。 report(汇报):日/周/月/年对任务日志的聚合投影,零手工汇报。 未提交的草案每次取回都重算 —— 汇报是投影不是账本,提交那刻才固定为事实快照。 度量八指标落在这里(§4 注:度量是只读投影,不设独立模块): 自主率 / 纠正率 / 有效自主率 / 打扰率 / 断点率 / DMN 覆盖率 / 单位成本 / 终态分布。 口径全部挂归侧标签与事件流,零埋点;单位成本的分母只认放行通过。 周窗口以周一为首日,按 UTC 切分(单组织单时区)。 FactSource 只读 memory 与 task,一行都不另记 —— 五要素同源。 gates: tsc / eslint / depcruise(305 模块)/ api-report / 377 测试 全绿 日报已在真实系统上由 A1 任务日志聚合出来,含治理干预两行 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
@@ -53,8 +53,11 @@ import { createIntentStore, createReleaseService } from '@modules/release';
|
||||
import type { TaskService } from '@modules/task';
|
||||
import type { ProcessService } from '@modules/process';
|
||||
import type { TriggerService } from '@modules/trigger';
|
||||
import type { MinuteService } from '@modules/minute';
|
||||
import type { ReportService } from '@modules/report';
|
||||
import { FIRST_PARTY_TOOLS } from './tools/first-party.ts';
|
||||
import { wireEngines } from './wiring/engines.ts';
|
||||
import { wireDeskElements } from './wiring/desk-elements.ts';
|
||||
import type { ChannelService } from '@modules/channel';
|
||||
import {
|
||||
createChannelRepository,
|
||||
@@ -92,6 +95,8 @@ export type Container = {
|
||||
readonly task: TaskService;
|
||||
readonly process: ProcessService;
|
||||
readonly trigger: TriggerService;
|
||||
readonly minute: MinuteService;
|
||||
readonly report: ReportService;
|
||||
close(): Promise<void>;
|
||||
};
|
||||
|
||||
@@ -498,6 +503,17 @@ export async function createContainer(config: AppConfig): Promise<Container> {
|
||||
}),
|
||||
});
|
||||
|
||||
// L8:工作台后两个要素 —— 只读 memory 与 task 的投影,一行都不另记
|
||||
const deskElements = wireDeskElements({
|
||||
db,
|
||||
memory,
|
||||
task: engines.task,
|
||||
org,
|
||||
process: engines.process,
|
||||
ids,
|
||||
clock: systemClock,
|
||||
});
|
||||
|
||||
return {
|
||||
config,
|
||||
broadcaster: createBroadcaster(),
|
||||
@@ -520,6 +536,8 @@ export async function createContainer(config: AppConfig): Promise<Container> {
|
||||
task: engines.task,
|
||||
process: engines.process,
|
||||
trigger: engines.trigger,
|
||||
minute: deskElements.minute,
|
||||
report: deskElements.report,
|
||||
async close() {
|
||||
await pool.end();
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user