清理: - 删除 34 份过时文档(gap reports/QA临时报告/验收报告/阶段性文档) - 删除 docs/.hermes/skills 第三方 skills 副本(16 文件) - 删除 skills-lock.json 目录归集: - 根目录仅保留 README.md 索引 - product/ — 产品与架构设计(PRD + ARCHITECTURE + P2设计文档 + AI/企业路线图) - tracking/ — Chatwoot parity 开发跟踪 - requirements/ — M01-M12 模块需求 - plans/ — 历史实现计划 - parity/ — 路由 parity 与前端契约 - qa/ — QA 报告与测试计划 - ops/ — 运维部署 命名规范: - 全小写 kebab-case,禁止全大写文件名 - product/tracking/ops 用 NN- 序号前缀 - requirements 用 MNN- 两位零填充模块号 - plans/qa 用 YYYY-MM-DD- 日期前缀 - requirements M1-M9 零填充为 M01-M09(修复字典序) 同步更新: - backend/cmd/route_parity/main.go 路径默认值 - backend/scripts/parity_frontend_smoke.sh 报告路径 - 所有 docs 内部交叉引用 - .gitignore 排除编译产物 (backend/gochat, backend/route_parity) - 新增迁移 000052/000053 - 前端 WS 相关修改
130 lines
3.3 KiB
Markdown
130 lines
3.3 KiB
Markdown
## Code Context
|
|
|
|
**Query:** inbox management, channel provider, web widget, telegram channel, facebook channel, whatsapp channel, email channel, channelable concern, inbox member, inbox assignment
|
|
|
|
### Entry Points
|
|
|
|
- **AddChannelWebWidgetToPortals** (class) - db/migrate/20240415210313_add_channel_web_widget_to_portals.rb:1
|
|
- **RemoveImapInboxSynedAtFromChannelEmail** (class) - db/migrate/20240131040316_remove_imap_inbox_syned_at_from_channel_email.rb:1
|
|
- **Telegram** (component) - app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Telegram.vue:1
|
|
|
|
### Related Symbols
|
|
|
|
- db/migrate/20240415210313_add_channel_web_widget_to_portals.rb: change:2
|
|
- db/migrate/20240131040316_remove_imap_inbox_syned_at_from_channel_email.rb: change:2
|
|
|
|
### Code
|
|
|
|
#### AddChannelWebWidgetToPortals (db/migrate/20240415210313_add_channel_web_widget_to_portals.rb:1)
|
|
|
|
```ruby
|
|
class AddChannelWebWidgetToPortals < ActiveRecord::Migration[7.0]
|
|
def change
|
|
add_column :portals, :channel_web_widget_id, :bigint
|
|
add_index :portals, :channel_web_widget_id
|
|
end
|
|
end
|
|
```
|
|
|
|
#### RemoveImapInboxSynedAtFromChannelEmail (db/migrate/20240131040316_remove_imap_inbox_syned_at_from_channel_email.rb:1)
|
|
|
|
```ruby
|
|
class RemoveImapInboxSynedAtFromChannelEmail < ActiveRecord::Migration[7.0]
|
|
def change
|
|
remove_column :channel_email, :imap_inbox_synced_at, :datetime
|
|
end
|
|
end
|
|
```
|
|
|
|
#### Telegram (app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Telegram.vue:1)
|
|
|
|
```vue
|
|
<script>
|
|
import { mapGetters } from 'vuex';
|
|
import { useVuelidate } from '@vuelidate/core';
|
|
import { useAlert } from 'dashboard/composables';
|
|
import { required } from '@vuelidate/validators';
|
|
import router from '../../../../index';
|
|
import PageHeader from '../../SettingsSubPageHeader.vue';
|
|
import NextButton from 'dashboard/components-next/button/Button.vue';
|
|
|
|
export default {
|
|
components: {
|
|
PageHeader,
|
|
NextButton,
|
|
},
|
|
setup() {
|
|
return { v$: useVuelidate() };
|
|
},
|
|
data() {
|
|
return {
|
|
botToken: '',
|
|
};
|
|
},
|
|
computed: {
|
|
...mapGetters({
|
|
uiFlags: 'inboxes/getUIFlags',
|
|
}),
|
|
},
|
|
validations: {
|
|
botToken: { required },
|
|
},
|
|
methods: {
|
|
async createChannel() {
|
|
this.v$.$touch();
|
|
if (this.v$.$invalid) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const telegramChannel = await this.$store.dispatch(
|
|
'inboxes/createChannel',
|
|
{
|
|
channel: {
|
|
type: 'telegram',
|
|
bot_token: this.botToken,
|
|
},
|
|
}
|
|
);
|
|
|
|
router.replace({
|
|
name: 'settings_inboxes_add_agents',
|
|
params: {
|
|
page: 'new',
|
|
inbox_id: telegramChannel.id,
|
|
},
|
|
});
|
|
} catch (error) {
|
|
useAlert(
|
|
error.message ||
|
|
this.$t('INBOX_MGMT.ADD.TELEGRAM_CHANNEL.API.ERROR_MESSAGE')
|
|
);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<div class="h-full w-full p-6 col-span-6">
|
|
<PageHeader
|
|
:head
|
|
// ... truncated ...
|
|
```
|
|
|
|
#### change (db/migrate/20240415210313_add_channel_web_widget_to_portals.rb:2)
|
|
|
|
```ruby
|
|
def change
|
|
add_column :portals, :channel_web_widget_id, :bigint
|
|
add_index :portals, :channel_web_widget_id
|
|
end
|
|
```
|
|
|
|
#### change (db/migrate/20240131040316_remove_imap_inbox_syned_at_from_channel_email.rb:2)
|
|
|
|
```ruby
|
|
def change
|
|
remove_column :channel_email, :imap_inbox_synced_at, :datetime
|
|
end
|
|
``` |