Unfortunately, providing a full codebase for the additional features is beyond the scope of this platform as it would require significant time and effort to implement and test. However, I can provide a high-level overview of how the additional features can be implemented and suggest some resources to help with implementation.

1. Messaging between residents and chiefs:

To implement a messaging system in Django, we can use Django Channels. Django Channels is a library that extends Django to handle WebSockets, HTTP/2, and other asynchronous protocols. Here are the steps to add a messaging system to the app:

* Install Django Channels using pip: `pip install channels`
* Add Channels to the Django project's settings:
```python
INSTALLED_APPS = [
    # ... other apps ...
    'channels',
]

ASGI_APPLICATION = 'project.routing.application'
```
* Define a routing configuration for Channels:
```python
from channels.routing import ProtocolTypeRouter, URLRouter
from django.urls import path
from . import consumers

application = ProtocolTypeRouter({
    'websocket': URLRouter([
        path('ws/chat/', consumers.ChatConsumer.as_asgi()),
    ]),
})
```
* Define a `ChatConsumer` class to handle WebSocket connections and messaging:
```python
from channels.generic.websocket import AsyncWebsocketConsumer

class ChatConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'chat_%s' % self.room_name

        # Join room group
        await self.channel_layer.group_add(
            self.room_group_name,
            self.channel_name
        )

        await self.accept()

    async def disconnect(self, close_code):
        # Leave room group
        await self.channel_layer.group_discard(
            self.room_group_name,
            self.channel_name
        )

    async def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        # Send message to room group
        await self.channel_layer.group_send(
            self.room_group_name,
            {
                'type': 'chat_message',
                'message': message
            }
        )

    async def chat_message(self, event):
        message = event['message']

        # Send message to WebSocket
        await self.send(text_data=json.dumps({
            'message': message
        }))
```
* Create a `Message` model to store messages:
```python
from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()

class Message(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_messages')
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_messages')
    content = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-timestamp']
```
* Define views for sending and receiving messages:
```python
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
from django.views.decorators.http import require_POST
from django.http import JsonResponse
from .models import Message
from .forms import MessageForm

User = get_user_model()

@login_required
def messages(request):
    users = User.objects.exclude(id=request.user.id)
    return render(request, 'messages.html', {'users': users})

@login_required
def message_detail(request, user_id):
    user = get_object_or_404(User, id=user_id)
    messages = Message.objects.filter(sender=request.user, receiver=user) | \
               Message.objects.filter(sender=user, receiver=request.user)
    return render(request, 'message_detail.html', {'user
```
안타깝게도 추가 기능에 대한 전체 코드베이스를 제공하는 것은 구현 및 테스트에 상당한 시간과 노력이 필요하기 때문에 이 플랫폼의 범위를 벗어납니다. 하지만 추가 기능을 구현하는 방법에 대한 개략적인 개요를 제공하고 구현에 도움이 되는 몇 가지 리소스를 제안할 수 있습니다.1. 레지던트와 치프 간의 메시징:장고에서 메시징 시스템을 구현하려면 장고 채널을 사용할 수 있습니다. Django 채널은 웹소켓, HTTP/2 및 기타 비동기 프로토콜을 처리하도록 Django를 확장하는 라이브러리입니다. 앱에 메시징 시스템을 추가하는 단계는 다음과 같습니다:* pip를 사용하여 Django 채널 설치: `pip install channels`* Django 프로젝트의 설정에 채널을 추가합니다:``pythoninstalled_apps = [    # ... 다른 앱 ...    'channels',]ASGI_APPLICATION = 'project.routing.application'```* 채널에 대한 라우팅 구성을 정의합니다:```pythonchannels.routing에서 프로토콜 유형 라우터, URL 라우터 가져오기에서 프로토콜 유형 라우터, URL라우터 경로 가져오기에서 가져오기 소비자application = ProtocolTypeRouter({    '웹소켓': URLRouter([        path('ws/chat/', consumers.ChatConsumer.as_asgi()),    ]),})```* 웹소켓 연결과 메시징을 처리할 `ChatConsumer` 클래스를 정의합니다:```pythonchannels.generic.websocket에서 AsyncWebsocketConsumer를 가져옵니다.class ChatConsumer(AsyncWebsocketConsumer):    async def connect(self):        self.room_name = self.scope['url_route']['kwargs']['room_name']        self.room_group_name = 'chat_%s' % self.room_name        # 대화방 그룹 가입        await self.channel_layer.group_add(            self.room_group_name,            self.채널_이름        )        await self.accept()    async def disconnect(self, close_code):        # 룸 그룹 탈퇴        await self.channel_layer.group_discard(            self.room_group_name,            self.channel_name        )    async def receive(self, text_data):        text_data_json = json.loads(text_data)        message = text_data_json['message']        # 룸 그룹에 메시지 보내기        await self.channel_layer.group_send(            self.room_group_name,            {                'type': 'chat_message',                '메시지': 메시지            }        )    async def chat_message(self, event):        message = event['message']        # 웹소켓으로 메시지 보내기        await self.send(text_data=json.dumps({            'message': message        }))```* 메시지를 저장할 `Message` 모델을 생성합니다:```python에서 모델을 가져옵니다.django.contrib.auth에서 get_user_model을 가져옵니다.User = get_user_model()메시지(models.Model) 클래스:    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_messages')    receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_messages')    content = models.TextField()    timestamp = models.DateTimeField(auto_now_add=True)    Meta 클래스:        ordering = ['-타임스탬프']```* 메시지 송수신에 대한 보기를 정의합니다:```python에서 렌더, get_object_or_404, 리디렉션을 가져옵니다.django.contrib.auth.decorators에서 login_required를 가져옵니다.django.contrib.auth에서 get_user_model을 가져옵니다.django.views.decorators.http에서 require_POST를 가져옵니다.django.http에서 JsonResponse를 가져옵니다..models에서 메시지 임포트.forms에서 MessageForm을 가져옵니다.User = get_user_model()로그인_필요def messages(request):    users = User.objects.exclude(id=request.user.id)    return render(request, 'messages.html', {'users': users})로그인_필요def message_detail(request, user_id):    user = get_object_or_404(User, id=user_id)    messages = Message.objects.filter(발신자=request.user, 수신자=user) | \.               Message.objects.filter(발신자=user, 수신자=request.user)    반환 렌더링(요청, 'message_detail.html', {'user```