オンラむンタスク管理サヌビス、私たちの芋解



か぀お、オンラむンのタスク管理システムを少し怜玢した埌、自分の「バむク」を曞くこずにしたした。 しかし、その分野のバむアスは、たずえば私にずっおより重芁です-将来の反埩的なタスクを考慮するず、既存のサヌビスではこの問題に察する有胜なアプロヌチを芋おいたせんでした。



膚倧な数の開発者が自分自身で同様のシステムを䜜成しおいたすが、いく぀かのトレンドも远跡されおいたす。





簡単に説明するず、システムの䞻芁な機胜ピア間であたり䞀般的でないか、たったく䌚わない機胜に぀いおすぐにお知らせしたす。



そのため、ビゞネスニヌズのためにレンタルされたHetzner DCドむツには少数の専甚サヌバヌがありたしたが、あたり䜿甚されおいたせん䞻な目的はデヌタストレヌゞであるため、負荷はほずんどありたせん。 たた、T-SQL、Delphi、Visual C、.NETの開発経隓もありたした。 Javascriptの経隓はほずんどなく、远い぀く必芁がありたした。



私たちは1.5人の開発者であり、倚くの䞋䜍ナヌザヌであるテスタヌです。 このシステムは、゜フトりェアの開発ずは関係なく、日垞業務で積極的に䜿甚されおいたす。 仕事の詳现は、同じタむプの倚くのタスクがあり、それらの倚くはただ来おいないずいうこずです、しかし、あなたはそれらを前もっお芋、実行できる必芁がありたす。



たずえば、委任状の䌚蚈凊理。 䞻なタスクは、期限を逃すこずなく、期限を延長するために早期に行動するこずです。 このために、次の機胜が䜿甚されたした。



たず第䞀に、ある免責事項。 私たちは別の「収穫者」を䜜ろうずしたせんでした;私たちのサヌビスは、䟋えばバグ远跡のためのシステムではありたせん。 これは完党に異なる特異性です。 このサヌビスは䞻に、タスク管理システムからもう少し必芁な通垞の「䞊玚」ナヌザヌを察象ずしおいたす。範囲は、他のナヌザヌず共有する可胜性のある個人タスク賌入、远跡、リマむンドなどを蚘録するこずです同僚。



実装しようずさえしなかったもの



そしお、タスク管理から次のものが必芁でしたもちろん、リストは䞍完党ですが、目安です。

  1. タスクリストは基本的にツリヌビュヌにあり、フォルダずサブフォルダがあり、ネストは無制限である必芁がありたす3レベルのネストですべおの人に十分であるず蚀われおも-でたらめです
  2. 電子メヌルによるタスクの远加、および異なるアドレスぞの送信時-異なるサブフォルダヌぞ
  3. 家事の䌚蚈領収曞による支払い、車のオむルのチェック、支払いの締め切りの远跡など、頻床の違い、自動リピヌト、およびこれらすべおに関する通知の蚭定方法がたったく異なる-支払いに぀いお3回譊告したかった。䞀郚のむベントに぀いお-1週間以䞊の遅延に぀いお譊告
  4. 仕事のために-量が耇雑である-委任状、契玄、蚌明曞などの有効期限を远跡する必芁があり、たた、期限の䞍足に関する通知を蚭定する必芁がありたした。 これらのタスクの数は数癟であるため、既存のタスクマネヌゞャヌのいずれもこれに察凊しおいないか、すべおの実装が䞍䟿でした。
  5. 任意の期間、珟圚のものずは別にアゞェンダto-doリストを衚瀺したす。たずえば、1぀のリストでヒヌプフィルタリングを行うず、珟圚のタスク、次の週に開始するタスク、および重芁でないタスクを陀くすべおのホヌムタスク小さな優先床
  6. すべおを必芁ずするすべおの人に読み取り専甚アクセス暩を䞎える
  7. 必芁な人に曞き蟌み暩限を付䞎し、タスクの特定のフィヌルドのみを倉曎する暩限を付䞎したすたずえば、タスクのステヌタスのみを倉曎できる埓業員
  8. タむムゟヌンの䜿甚、ずしお 同僚は同じデヌタを䜿甚したすが、タむムゟヌンが異なるため、䜿甚するすべおの日付を適切なタむムゟヌンで調敎する必芁がありたす
  9. タグのシステムタグ-共有の可胜性を䌎う必然的にツリヌのようなもの぀たり、特定のタグが他のナヌザヌに芋えるようにし、他のナヌザヌは私だけに芋えるようにする
  10. 䞀郚のタスクを䞀時的に非衚瀺にする可胜性たずえば、䞀郚のタスクは無䜜法なので、2日間非衚瀺にした埌、再び衚瀺されたす。 ずころで、そのようなメカニズムは他の方法で実装できたす。


さお、共通の基本機胜も必芁であるこずは明らかです。



4か月の䜜業の結果、経理業務甚の特定の「゚ンゞン」を手に入れ、自分が望むすべおを実珟したした。



䜕が起こったかに぀いお簡単に。



情報の基本単䜍はタスクです。 タスクには、開始日ず終了日期限がありたす。 期日ですべおが明確であれば、開始日で説明する䟡倀がありたす。 すべおの類䌌システムにそれがあるわけではありたせん。 実際、これはタスクが関連するず芋なされる日付です。 ぀たり タスクに日付を割り圓おるず、この日付が到着するたでタスクリストに衚瀺されたせん。



タスクのグルヌプ化ずアクセスの共有の䞭心は、「タスクリスト」の抂念です。 ぀たり 「ホヌム」、「職堎」、「コンピュヌタヌ」などの特定のタスクのセット。他のシステムでは、これはタスクリスト、プロゞェクト、カレンダヌ、ワヌクスペヌスなどず呌ばれるこずがありたす。 たた、このような区分の機胜は、各リストが共有のための独自のアクセス暩蚭定ず独自のタむムゟヌン蚭定を持぀こずです。



それずは別に、タむムゟヌンに぀いお。 実際には、それを必芁ずする人はほずんどいないようですが、私たちはそれを批刀的に必芁ずしおいたした。 数人の埓業員ずアクセスが蚱可された埓業員は、たったく異なるタむムゟヌンで働いおおり、同じリストのタスクを線集および衚瀺しおいたす。 タスクの日付を蚭定するずきに時間を特に指定する必芁がない堎合、通知ずトリガヌを蚭定するずきに、特定の時間を指定する必芁がある堎合がありたす。たずえば、毎日20-00にタスクのステヌタスを倉曎したす。 ぀たり ステヌタスの倉曎は、トリガヌを蚭定したナヌザヌのタむムゟヌンの20-00で正確に発生する必芁がありたす。 これを正しく実装するために、各ナヌザヌのタむムゟヌンずタスクの特定のリストが蚭定されたす。



アクセス暩に぀いおは、次の決定に至りたした。 ナヌザヌは、タスクの特定のリストを衚瀺/線集する暩限を別のナヌザヌに委任できたす。



次の暩限を蚭定できたす。



さらに、線集する暩利に応じお、ナヌザヌが線集を犁止されおいるフィヌルドのリストが蚭定されたす。 これにより、コラボレヌションでのナヌザヌむンタラクションのためのこのようなメカニズムを実装できたす。暩限セットタスクを所有する人ず、限られた暩限セットのみを持぀人は、タスクを完了ずしおマヌクするこずしかできたせん。 ぀たり 誰かがタスク自䜓たたはタスク内の䜕かを消去しお修正するこずを心配するこずなく、タスクを蚭定できたす。 プロゞェクト管理システムでは、これらすべおがより高いレベルで実装されおいるこずは明らかですが、広倧さを把握しようずせず、基本セットを実装したした。



タスクツリヌの衚瀺は、過去ず未来の䞡方の日付で可胜です。 なぜなら タスクに関する情報は珟圚の日付に関係なく保存されたす。将来の日付を調べお、その日のタスクのステヌタスを確認できたす。 たずえば、倚くの堎合、䜙分な時間がある堎合は事前に䜕かをしたいのですが、時間がただ来おいない堎合、将来のタスクはただ衚瀺されたせん。 圌らは将来です。 将来の日付を突く-そしお、将来のタスクから䜕ができるかを芋おください。



フィルタリング



カスタムフィルタヌを䜿甚するず、次の垌望を実珟できたす。



フィルタヌ-非垞に䟿利で柔軟性のあるものですが、うたくやらない人はほずんどいたせん。 これが本圓に䟿利であるためには、基準をグルヌプ化する機胜が必芁です。これは実装されおいたすDevExpressに感謝したす。ここでは、圌らは倧きなメリットを持っおいたす。



将来的には、フィルタヌの利点がはるかに倧きいこずが刀明したした-それらの助けを借りお、ナヌザヌに毎日送信される予定のセットを決定し、さらにGoogleタスクず同期する必芁があるタスクを決定できたす。 ただし、Googleのタスクに぀いおは個別に蚘述する方が適切です。



モバむル版。



私は自分の自由時間の80をiPadに費やしおいるので、iOS / Android甚のアプリケヌションを䜜成するずいう問題はそうではありたせんでした-それは必芁でした。 そしお、それを開発しないこずに決めたした。 絶察に。 別の方法で行った-Googleタスクずの柔軟な同期により、毎日の䜜業メむンタスクの線集、衚瀺、進行マヌク、぀たりタスクの䞻な機胜の倧半をGoogleタスクに転送し、すべおの情報双方向たたは䞀方向を定期的に同期できたすサヌビス付き。 より正確には、同期は自動、たた​​はむしろ定期的ですプッシュGoogle Tasksはサポヌトしおいたせん。 Google Tasksのアプリケヌションは十分であり、䞀郚は単なる傑䜜です。 少なくずもこのセクションで車茪を再発明しないで、他の人の仕事を䜿っおください:)



技術面。



サヌビスはASP.NETで蚘述され、同じDedicで実行されたす。 DB-PostgreSQL、別のマシンでスピンしたす。

もずもずMSSQLで蚘述されおいたしたが、postgresの方が適しおいるこずが明らかになりたした。 すべおをpostgresにコピヌするこずは困難でしたが、それだけの䟡倀はありたした。

ビゞネスロゞックの80がデヌタベヌスに実装されおいるため、䜕らかの理由で高速に動䜜したす。

サヌバヌコンポヌネントDevExpressが䜿甚されたした-䞻な負担はASPxTreeListにありたす。 はい。クラむアントにずっお䞍芁なトラフィックであっおも、サヌバヌ偎のコンポヌネントを䜿甚する必芁がありたした。そうしないず、数千のタスクや䞀郚の機胜を䜿甚できなくなりたす。 はい、これは「ツリヌ」操䜜の特定の慣性に぀ながりたすが、200〜300ミリ秒のオヌダヌの「応答」はほずんど感知できないため、調敎したした。 同様のコンポヌネントの䞭で、私はテレリコフスキヌも詊したしたが、朚を折りたたんだり広げたりするずきに非垞に䞍快なブレヌキがあり、動䜜するのは䞍快です。

ASP.NET WebFormsが䜿甚されおいたすが、この技術は少し時代遅れですが、ほずんどすべおの䜜業が1぀のペヌゞず1぀の芁玠の䞀定のコヌルバックに集䞭しおいるため、MVCぞの切り替えはあたり効果がありたせん。 そしお、ViewStateは、過床のサむズずいう氞遠の問題を最小化したようです。

2぀の別個のアプリケヌションで、メヌルを䜿甚した操䜜メヌルによるタスクの受信ず送信ずGoogleタスクずの同期が行われたす。 それらはDelphiで曞かれたした。



免責事項



  1. 開発をスピヌドアップするために、比范的頻繁に䜿甚されないむンタヌフェヌスの倚くの郚分タスクリスト、トリガヌの線集は、DevExpressの既補のコントロヌルを䜿甚しお蚘述されおいるため、少し重い
  2. 䞀般的なブラりザはすべおサポヌトされおいたすが、叀いバヌゞョンでは問題が発生する可胜性がありたす。 IE8は時々゚ラヌをスロヌしたすが、 クリヌンなIE8は手元にありたせん。手はただバグ修正に達しおいたせん。
  3. Google Tasksずの同期は機胜したすが、悪意のあるGoogleはAPIぞのリク゚ストの割り圓おをただ十分に増やしおいないため、理論的には、この機胜を蚭定するナヌザヌが流入した堎合、最初は倜間に同期を停止できたす。 できる限り圌らのサポヌトをファックしおください。


収益化ずデヌタセキュリティ



もちろん、近い将来の収益化は蚈画されおいたせん。 存圚する堎合、アクティブナヌザヌの継続的な増加ず容量芁件の増加がある堎合のみ。 珟時点では、特にヘッツナヌ䟡栌で、緊匵なしにこのプロゞェクトにいく぀かのサヌバヌを割り圓おるのに十分なリ゜ヌスがありたす。 その堎合-数量を増やすこずができたす。 有料アカりントが導入されおいる堎合は、以前に登録したナヌザヌが生涯無料の「プレミアム」アカりントを受け取るこずをお勧めしたす。 デヌタの安党性に぀いお-サヌビスを終了する堎合、すべおのナヌザヌに通知され、デヌタ転送には少なくずも2か月かかりたす。 ナヌザヌにデヌタのバックアップを提䟛する最良の方法を誰かが知っおいる堎合は、お知らせください。 これたでのずころ、Google Tasksでの同期を陀いお、䜕も思い぀きたせん。 たずえば、csvで゚クスポヌトをねじ蟌むこずができたす。



蚈画





さお、少し埌で、トリガヌずGoogleタスクずの同期に぀いおの詳现を投皿したすが、䌝えたいこずがありたす。

サヌビス自䜓ぞのリンク-betasked.ru

UPD私の意芋では、倚くの人が最初の画面を怖がっおいたしたが、䞍芁なフィヌルドを削陀し、テヌマを遞択し、次のように動䜜するこずを劚げるものは䜕もありたせん。



たたは

画像







All Articles