feat: 项目负责人+内部任务群+portal 内部身份领取+群主链接归属
- 迁移 0012:projects.owner_userid / tasks.task_chat_id / claims.owner_partner_id - lib/task-group-service.ts:懒建 appchat 任务群(首个内部群主领取时创建,成员 diff 补员),播报/卡片文案 - wecom-client 新增 appchat create/update/get/send 封装 - OAuth ticket 增可选 uid(v:1 兼容),内部成员领取按 wecom_userid 解析群主身份 - 外部 OAuth 领取人 upsert 打 partner_type='group_owner' - portal 链接带 ?owner= 穿透 OAuth 往返,claims 记录归属群主 - 后台任务卡「群主链接」面板:复制链接/推送内部群主/任务群状态 - 催办与超期升级同步播报进任务群
This commit is contained in:
@@ -58,6 +58,7 @@ export const tasks = mysqlTable(
|
||||
fsp: 3,
|
||||
}),
|
||||
projectId: varchar("project_id", { length: 64 }).notNull().default(""),
|
||||
taskChatId: varchar("task_chat_id", { length: 64 }).notNull().default(""),
|
||||
createdAt: timestamp("created_at"),
|
||||
},
|
||||
(table) => [uniqueIndex("tasks_share_token_idx").on(table.shareToken)],
|
||||
@@ -112,6 +113,9 @@ export const claims = mysqlTable(
|
||||
id: varchar("id", { length: 64 }).primaryKey(),
|
||||
taskId: varchar("task_id", { length: 64 }).notNull(),
|
||||
partnerId: varchar("partner_id", { length: 64 }).notNull(),
|
||||
ownerPartnerId: varchar("owner_partner_id", { length: 64 })
|
||||
.notNull()
|
||||
.default(""),
|
||||
claimantName: varchar("claimant_name", { length: 255 }).notNull(),
|
||||
claimToken: varchar("claim_token", { length: 128 }).notNull(),
|
||||
quantity: int("quantity").notNull(),
|
||||
@@ -310,6 +314,7 @@ export const projects = mysqlTable("projects", {
|
||||
name: varchar("name", { length: 255 }).notNull(),
|
||||
brand: varchar("brand", { length: 255 }).notNull().default(""),
|
||||
mainGroupMemberIds: text("main_group_member_ids").notNull(),
|
||||
ownerUserid: varchar("owner_userid", { length: 64 }).notNull().default(""),
|
||||
status: varchar("status", { length: 32 }).notNull().default("active"),
|
||||
note: text("note").notNull(),
|
||||
createdAt: timestamp("created_at"),
|
||||
|
||||
Reference in New Issue
Block a user