scims is a simple customer support management system. It is designed to be simple and easy to use. It is written in php symphony framework.
- gather customer inquiries from multiple mail accounts
- assign inquiries to agents and track their progress
- agents can interract with customers via embedded mail feature
- manage customer information
erDiagram
users {
int id
varchar name "ユーザ名"
varchar(255) email "メールアドレス"
text password
timestamp created_at
timestamp updated_at
}
groups {
int id
varchar(255) name
int parent_id
timestamp created_at
timestamp updated_at
}
user_groups {
int id
int user_id
int group_id
}
mail_accounts {
int id
int group_id
varchar(255) name
text host
int port
text username
text password
}
contacts {
int id
varchar(255) name "連絡先名前"
text notes "メモ"
}
contact_emails {
int id
int contact_id
varchar(255) email
text notes "メモ"
}
contact_phones {
int id
int contact_id
varchar(255) phone
text notes "メモ"
}
inquiries {
int id
varchar(511) title "タイトル"
int category_id "問い合わせカテゴリ"
int email_id "問い合わせ者"
varchar(255) status "対応状況"
int department_id "担当部署"
int agent_id "担当者"
text notes "メモ"
timestamp created_at
timestamp updated_at
}
messages {
int id
int inquiry_id "結びつく問い合わせ"
int contact_email_id "送信者のメールアドレス"
int contact_phone_id "送信者の電話番号, nullable"
varchar(511) file "メールファイル名"
varchar(511) message_id "メールのmessageId"
varchar(511) reference_id "返信メールの場合、返信元メールのmessageId"
varchar(1023) subject "件名"
}
categories {
int id
varchar(255) name "カテゴリ名"
int group_id "所属グループ"
int parent_id "親カテゴリ"
}
users ||--o{ groups_users :hasMany
groups ||--o{ groups_users :hasMany
groups ||--o{ groups :hasMany
groups ||--o{ mail_accounts :hasMany
inquiries }o--|| contacts:hasOne
inquiries }o--|| messages:hasOne
inquiries }o--o| users:belongsTo
inquiries }o--|| groups:belongsTo
inquiries }o--|| categories:belongsTo
groups ||--o{ categories :hasMany
contacts ||--o{ contact_emails :belongsTo
contacts ||--o{ contact_phones:belongsTo
categories |o--o{ categories :hasMany
classDiagram
class User {
int id
string name "ユーザ名"
string email "メールアドレス"
string password
timestamp created_at
timestamp updated_at
Collection<Inquiry> inquiries
}
classDiagram
class Group {
int id
string name
Group parent
timestamp created_at
timestamp updated_at
Collection<Inquiry> inquiries
}
classDiagram
class UserGroup {
int id
User user_
Group group_
}
classDiagram
class MailAccount {
int id
Group group_
string name
string host
int port
string username
string password
}
classDiagram
class Contact {
int id
string name "連絡先名前"
string notes "メモ"
}
class ContactEmail {
int id
Contact contact
string email
string notes "メモ"
}
class ContactPhone {
int id
Contact contact
string phone
string notes "メモ"
}
classDiagram
class Inquiry {
int id
string title "タイトル"
Category category_id "問い合わせカテゴリ"
Contact contact "問い合わせ者"
string status "対応状況"
Group department "担当部署"
User agent_id "担当者"
string notes "メモ"
timestamp created_at
timestamp updated_at
}
classDiagram
class Message {
int id
int sender_type "お客様かスタッフか"
Inquiry inquiry "結びつく問い合わせ"
ContactEmail email "送信者のメールアドレス"
ContactPhone phone "送信者の電話番号, nullable"
string file "メールファイル名"
string message_id "メールのmessageId"
string reference_id "返信メールの場合、返信元メールのmessageId"
string subject "件名"
}
classDiagram
class Category {
int id
string name "カテゴリ名"
Group group "所属グループ"
Category parent "親カテゴリ"
}
- cron executes command
app:check-mails
app:check-mails
- fetch mail accounts from database
- fetch emails from mail servers, using the accounts
- parse the emails
- tell it's from a new customer
- create a new contact
- create a new inquiry
- create a new message
- tell it's from an existing customer
- create a new inquiry
- create a new message
- tell it's a reply to an existing inquiry
- create a new message
- update the inquiry
- tell it's from a new customer
- save the mails to the mail achieve directory
- login
- show the list of inquiries, filtered by the state or agent in charge
- select an inquiry
- show the inquiry detail
- change the state, assign an agent, change the category, add a note, etc.
- visit the inquiry detail page
- select a message to reply
- write a reply
- attach a file
- make it a draft
- send the reply
- the sent reply is listed in the inquiry detail page among other messages
- the state of the inquiry is changed to "ongoing"
条件
# | title | value |
---|---|---|
1 | login state | logged in as agent |
2 | page | contact index |
- select a contact
- show the contact detail
- name
- email addresses
- phone numbers
- list of inquiries
# | title | value |
---|---|---|
1 | login state | logged in as agent |
2 | page | contact index |
- login as a manager
- show the list of contacts
- create a new contact
- add a name
- add an email address
- add a phone number
- add a note
- login as a manager
- show the list of contacts
- select a contact
- show the contact detail
- change the contact information
- add a new email address
- add a new phone number
- add a note
- change the name
- change an email address
- change a phone number
- change a note
- delete the contact
- login as an agent
- show the list of contacts
- select a contact
- show the contact detail
- send a message
- add a subject
- add a message
- attach a file
- send the message
- the sent message is listed in the contact detail page among other messages